December 2017 (version 1.9.0-beta)

1.9.0 Update

Merry (early) christmas to everyone!

Merry time for our 10th release.

We've released a 1.9.0 DeepScan service bringing with more secure architecture for your code.

Keep reading for the highlights for this release.

Release Summary

This version includes a number of updates that we hope you will enjoy. The key highlights are:

About Security

Ultimately, your satisfaction is what matters most to us. So we have been trying to assure users' concern for code security.

As such an effort, in the 1.8.0 release, we improved a file viewing without copies of stored code.

Now we're happy to say we do not need stored code anymore. Your code is immediately and completely deleted from our file system after the analysis is finished.

We hope you like this and are more comfortable with us. Please refer to here.

Analysis Improvements

Inter-module analysis for CommonJS modules

Since we supported inter-module analysis for ES6 modules in October, we have enhanced inter-module analysis for CommonJS modules.

Now we are happy to announce that CommonJS modules are also supported in inter-module analysis.

For example, we now detect MISSING_RETURN_VALUE alarm from a function defined at another CommonJS module. Let's see src/core/system.js file:

module.exports.registerSystem = function (name, definition) {
    var i;
    var NewSystem;
    var proto = {};
    var scenes = utils.findAllScenes(document);
    ...
    NewSystem = function (sceneEl) { System.call(this, sceneEl); };
    NewSystem.prototype = Object.create(System.prototype, proto);
    ...
    // Initialize systems for existing scenes
    for (i = 0; i < scenes.length; i++) { scenes[i].initSystem(name); }
};

In the above code, registerSystem function exported by src/core/system.js does not have a return value.

But below src/systems/camera.js file uses its return value as the exported System variable. Maybe registerSystem function should have returned NewSystem object at the end of its body.

var registerSystem = require('../core/system').registerSystem;

module.exports.System = registerSystem('camera', { ... }); // No value is returned from function 'registerSystem' defined at line 1 of system.js.

Enhanced support for inconsistent null check

We have improved INSUFFICIENT_NULL_CHECK rule to detect alarms also on object properties:

public addRangeSelection(rangeSelection: AddRangeSelectionParams): void {
    if (!this.rangeController) { // Expression 'this.rangeController' is null checked here, but its property is accessed without null check afterwards at line 5.
        console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');
    }
    this.rangeController.addRange(rangeSelection);
}

In the above code, it prints a warning message for missing this.rangeController, and then executes addRange method of it. The method call should be in the else branch.

Miscellaneous

  • You can delete a project directly in the project list via Configure Project menu.
  • Show the status to be changed in the popup of status change.

Bug Fixes

  • Pull request analysis is not merged properly with the previous one sometimes.