2.0.0.6 release notes

posted Jan 9, 2018, 8:00 AM by Scott Wells

2.0.0.6

  • Major enhancements to the Illegal assignment code inspection. It should now inspect most expressions and statements which could result in a type mismatch including:
    • Invocation arguments against receiving formal parameters.
    • Arithmetic expressions.
    • Relational expressions.
    • Logical expressions including ternary expression conditions.
    • Unary expressions.
    • Bitwise expressions.
    • Loop variables against iterated collections in enhanced for statements.
    • Conditions in ifwhiledo/while, and classic statements.
    • Returned values against method declared return type.
    • Exceptions in throw statements and catch clauses.
    • DML operations.
    • System.runAs() statements.
  • Fixed an issue with detection of declarations which are only ever used from test classes in the Unused declaration code inspection.
  • Eliminated several false negatives from the Unused declaration code inspection including:
    • Constructors for Visualforce and Lightning Apex controller and extension controller classes.
    • Private no-arg constructors with no bodies (often used to control access to utility classes and simple singletons).
    • @TestVisible-annotated symbols referenced only from test classes.
  • Issue 813 - Parameter info now works in explicit constructor invocations such as this() and super().
  • Issue 838 - Fixed an issue where an incorrect reference was generate when multiple inner classes exist with the same name.
  • Issue 840 - Prospective fix for issue which could result in invalid references and therefore code inspection false negatives.
  • Issue 842 - Partial fix to suppress code inspection false negatives for Apex managed sharing references.
  • Issue 844 - Fixed a recent regression which could cause inheritance hierarchies to be computed incorrectly.
  • Fixed an issue with references to Visualforce controller methods named get*.
  • NOTE: - These changes require OST regeneration. However, only the system classes need to be updated. This lighter-weight OST generation happens automatically if you click Resolve in the warning about the OST being out-of-date. The resulting OST update should take only a few seconds followed by reindexing.

1.8.1.6 release notes

posted Dec 27, 2017, 10:26 AM by Scott Wells

1.8.1.6

  • Issue 765 - Fixed a long-standing issue with the Visualforce/Lightning markup code formatter at the boundary between HTML and {!...} expressions.
  • Issue 827 - Fixed an issue when an inner class of an @IsTest-annotated class extends another type and references its @TestVisible-annotated members.
  • Issue 833 - Fixed an issue that could result in an NPE when navigating to related symbols.
  • Issue 835 - Prospective fix for a StackOverflowError while building the inheritance hierarchy.

2.0.0.3/4/5 release notes

posted Dec 27, 2017, 7:38 AM by Scott Wells   [ updated Dec 29, 2017, 8:48 AM ]

2.0.0.3

  • Issue 765 - Fixed a long-standing issue with the Visualforce/Lightning markup code formatter at the boundary between HTML and {!...} expressions.
  • Issue 825 - Major performance optimizations for the unused declaration code inspection. Please let me know if you see new false positives/negatives or high CPU overhead while editing with this enabled for on-the-fly inspection.
  • Issue 827 - Fixed a code inspection false negative that occurs when an inner class of an @IsTest-annotated class extends another type and references its @TestVisible-annotated members.
  • Issue 832 - Fixed a code inspection false negative (and reference injection bug) when a local type name is also found in the OST from installed managed packages.
  • Issue 833 - Fixed an issue that could result in an NPE when navigating to related symbols.
  • Added a new code inspection, Unresolvable method or constructor signature, that verifies that the invoked method or constructor is correct. Currently the inspection only verifies agreement between the number of formal parameters and the number of invocation arguments. In the near future the illegal assignment inspection will be extended to ensure that types are also compatible.
  • Fixed an issue that prevented Ctrl+MouseWheel from zooming in Anonymous Apex and SOQL Query tool windows.

2.0.0.4

  • Issue 765 - Suppressed a very noisy error in the logs resulting from the change from 2.0.0.3.
  • Issue 835 - Prospective fix for a StackOverflowError while building the inheritance hierarchy.

2.0.0.5

  • Issue 836 - Addressed a performance regression—especially evident in live templates like iter—introduced with the fix for issue 832.
  • Fixed an issue where a primitive type used as an identifier name, e.g., Id, would be incorrectly injected with a reference to the primitive type as well.
    • NOTE: While IC isn't flagging projects as needing an OST update in this build, if you see false negatives—in particular around Id usages—regenerate your OST and close/reopen your project to see if it addresses the issue. If not, please let me know ASAP.

1.8.1.5 release notes

posted Dec 20, 2017, 7:44 AM by Scott Wells

1.8.1.5

  • Fixed an issue that was causing PMD Apex execution to hang.
  • Fixed an issue deserializing PMD 6.0.0 XML output.
  • Updated the URLs for downloading PMD Apex and its reference ruleset.
  • Improved error handling/reporting for Lightning markup deployment errors.
  • Disabled creation of a single Apex/Visualforce file via the Tooling REST API due to a recent regression that leads to failure during creation.

2.0.0.2 release notes

posted Dec 19, 2017, 10:19 AM by Scott Wells

2.0.0.2

  • Additional fix for type conversion rules to eliminate more code inspection false negatives.
  • Improved error handling/reporting for Lightning markup deployment errors.
  • Fixed an issue that was causing PMD Apex execution to hang.
  • Disabled creation of a single Apex/Visualforce file via the Tooling REST API due to a recent regression that leads to failure during creation.

2.0.0.1 release notes

posted Dec 18, 2017, 7:50 AM by Scott Wells   [ updated Dec 18, 2017, 7:50 AM ]

2.0.0.1

  • Addressed underlying issues resulting in code inspection false negatives including:
    • Fixed long-standing issue where subsequent identifiers of chained expressions that can't be resolved would attempt to resolve to top-level identifiers incorrectly.
    • Fixed an issue where a type from the wrong namespace could be resolved incorrectly.
    • Proper resolution of Schema.sObjectType expressions.
    • Fixed an issue when inferring the data type of arithmetic expressions including both whole and fractional values.
    • Fixed a long-standing issue that could cause no type resolution to occur when a symbol exists in both local source and the OST. Now the local version of the type is resolved in these cases.
    • Added support for clone() on custom Apex classes.
    • Added support for equals() and hashCode() on Apex enums.
    • Added support for polymorphic relationship fields. Such fields now evaluate to all supported object types for further variant resolution. This requires OST regeneration as the metadata is stored at OST generation time and used at runtime.
    • Trigger collection context fields (old/new[Map]) evaluate as strongly-typed collections when used within a trigger declaration.
  • Updated the URLs for downloading PMD Apex and its reference ruleset.
  • Fixed an issue with digesting PMD 6.0.0 XML output.
  • Other minor fixes and improvements.

Illuminated Cloud 2 Released

posted Dec 13, 2017, 6:49 PM by Scott Wells   [ updated Dec 13, 2017, 9:54 PM ]

I am incredibly excited to announce the release of Illuminated Cloud 2In addition to all of the features of Illuminated Cloud 1, the initial release of Illuminated Cloud 2 includes:
  • WebStorm support
    • In addition to JetBrains IntelliJ IDEA, Illuminated Cloud now fully supports JetBrains WebStorm and extends its best-in-class HTML/JavaScript/CSS editors for Lightning and Visualforce development. WebStorm provides a lower-cost alternative to IntelliJ IDEA Ultimate Edition for full Salesforce Web development.
  • Refactoring
    • Rename type/trigger/method/field/variable
    • Introduce variable
    • Inline expression
    • Safe delete
    • Copy class/trigger
    • Copy Lightning bundle
    • Rename/copy/move metadata files including supporting meta.xml files
  • Code inspections and intentions
    • Unresolvable reference inspection
    • Unused declaration inspection with remove unused declaration intention
    • Illegal assignment inspection with add cast operator intention
    • Control flow statement without braces inspection with add braces intention
    • Incomplete concrete class declaration inspection with implement methods and make abstract intentions
    • Usage/declaration case mismatch inspection with change to declaration case intention
    • Keyword case mismatch inspection with change to preferred case intention
  • Code generation
    • Implement methods from interface(s)
    • Override methods from base class(es)
  • Lightning enhancements
    • Navigate to JavaScript and Apex controller methods from Lightning JavaScript references
  • Licensing enhancements
    • Distinct client IDs for each activation
    • Convenient access to the active license key
    • Integrated trial extensions
    • Offline trial initiation
    • Offline trial extension
Note that in order to support WebStorm, some actions and features have moved from their original locations in Illuminated Cloud 1:
  • The Illuminated Cloud sub-menu is now located under Tools instead of Build.
  • Actions for showing, hiding, and generating reports for Apex code coverage have been added to the Illuminated Cloud sub-menu.
  • Deployment errors are now reported in the Illuminated Cloud tool window instead of the Problems tool window.
  • Apex-specific code folding options have been added for folding of inner classes, property accessors, and generic parameters.
As with Illuminated Cloud 1, the feature set will continue to expand throughout subsequent releases. I've shared my thoughts on near-term enhancements, but as always I welcome end user feedback about enhancements I haven't considered and relative prioritization on those that are already listed.

Caveat: When you implement complex behaviors such as refactoring and real-time static code analysis for a language with no published grammar or behavioral specification, bugs are inevitable. The good news is that I've tested these features against hundreds of thousands of lines of Apex code and fixed the bugs uncovered by those projects. This has led to much more accurate and reliable reference injection and dynamic type inference implementations which are critical for features like refactoring and static code analysis. The reality, though, is that there is going to be other source code that reveals bugs that I simply haven't yet encountered. My guess is that these will take the form of false positives and negatives reported by Illuminated Cloud 2's code inspections or unexpected refactoring results. I will be collating bug reports for these types of issues and using that information to minimize and hopefully eliminate such issues. If you do run into such a problem, the best way to help me resolve it is to provide a standalone reproduction of the problem via the public issue tracker.

Note that the Web site has also been refreshed completely with detailed information about out-of-the-box live templatescode inspections and intentions, metadata management, and debug log configuration for key IDE features. The FAQ has been updated with the truly most frequently asked questions and an enhanced keymap description that includes shortcut keys for all new Illuminated Cloud 2 features and my recommendations for shortcut keys to master immediately. I've also provided an outline for a series of short-duration HOWTO-style videos that I plan to create in the near future, and I welcome feedback on which would be most valuable as well as any others that you'd like to see.

Evaluation, Purchasing, and Upgrade

As always, Illuminated Cloud 2 includes a free 30-day trial for all users. It is safe to have Illuminated Cloud 1 and 2 installed simultaneously, but only one version may be enabled at a time. Before installing Illuminated Cloud 2, it is highly recommended that you first update Illuminated Cloud 1 to at least version 1.8.1.3 or you may encounter errors at IDE startup. If this occurs, just disable the Illuminated Cloud 1 plugin and enable the Illuminated Cloud 2 plugin. Note that due to changes required to support refactoring and code inspections/intentions, offline symbol tables are now versioned. Illuminated Cloud 2 will prompt you to regenerate your a project's offline symbol table once when it the project is first opened after installing Illuminated Cloud 2.

Illuminated Cloud 2 pricing, purchasing, and upgrade details are available on the Purchase page and in the Rose Silver Software StoreAll existing licensed Illuminated Cloud 1 users are eligible for a discount when upgrading to Illuminated Cloud 2 with the amount based on recency of purchase and the type of license being purchased.

Illuminated Cloud 1 will be available for purchase until December 31, 2017 after which only Illuminated Cloud 2 will be available. Illuminated Cloud 1 licenses are perpetual and will continue to be supported for critical and blocker-level reported issues prioritized based on business impact. Additionally Illuminated Cloud 1 will receive updates for Salesforce seasonal releases through Winter '19 inclusive. No major new features will be added to Illuminated Cloud 1.

In Closing...

I sincerely hope that you find Illuminated Cloud 2 as useful and enjoyable in your day-to-day work as I have over the past several months. If you have questions, find issues, or just want to share feedback, don't hesitate to let me know via email, the public issue tracker, or the public discussion groups.

Best regards,
Scott Wells

1-7 of 7