April 2019 (version 1.24.0)

1.24.0 Update

Hi!

Welcome to the new DeepScan updates.

This update includes new rules regarding code quality and ESLint integrations. Also, we are under final review with the GitHub Marketplace.

Please kindly go ahead with the highlights for the latest release.

Release Summary

This version includes a number of updates that we hope you've found some of them helpful.
The key highlights are:

New Rules

New rules introduced in this release:

Recognizing ESLint Inline Disable Comments

For rules overlapping with ESLint, DeepScan now recognizes ESLint inline disable comments and filters out alarms when the corresponding ESLint alarm is disabled.

For example, UNREACHABLE_CODE alarm is not reported in the following code because the corresponding no-unreachable alarm is disabled:

describe('done - with error thrown', () => {
  beforeAll(done => {
    throw new Error('fail');
    done(); // eslint-disable-line no-unreachable
  });
  it('fails', () => {});
});

We hope that this feature will make life easier when adopting DeepScan for projects that have been using ESLint intensively.

ESLint Integration in Enterprise Packages

We've noticed that front-end development team using most of ESLint tend to use both DeepScan and ESLint. So we have started to integrate those two for simpler use.

Now our IntelliJ plugin, Eclipse plugin, and Node.js package now support ESLint. You can see its alarms also with DeepScan when you have configured ESLint on your project.

It works by directly using the eslint package installed in your project or global so your custom configurations and plugins are applied as is.

Below is an example of webpack build using DeepScan command-line tool with ESLint. Both DeepScan alarms (NULL_POINTER) and ESLint alarms (no-unused-vars, ...) are detected and you can control your build process by these alarms or an exit code.

Run Command-line tools with ESLint

Miscellaneous

Bug Fixes

  • False alarms for DUPLICATE_DECL and GETTER_SETTER_RECURSION may occur because class private properties are not properly distinguished from the ordinary ones
  • A SYNTAX_ERROR alarm is not reported for the case of using new with dynamic import like new import(foo)