Mozilla ESLint PluginΒΆ

balanced-listeners checks that every addEventListener has a removeEventListener (and does the same for on/off).

components-imports adds the filename of imported files e.g. Cu.import("some/path/Blah.jsm") adds Blah to the global scope.

import-globals-from When the “import-globals-from <path>” comment is found in a file, then all globals from the file at <path> will be imported in the current scope.

import-headjs-globals imports globals from head.js and from any files that should be imported by head.js (as far as we can correctly resolve the path).

mark-test-function-used simply marks test (the test method) as used. This avoids ESLint telling us that the function is never called.

no-aArgs prevents using the hungarian notation in function arguments.

no-cpows-in-tests checks if the file is a browser mochitest and, if so, checks for possible CPOW usage.

no-single-arg-cu-import rejects calls to “Cu.import” that do not supply a second argument (meaning they add the exported properties into global scope).

reject-importGlobalProperties rejects calls to “Cu.importGlobalProperties”. Use of this function is undesirable in some parts of the tree.

reject-some-requires rejects some calls to require, according to a regexp passed in as an option.

this-top-level-scope treats top-level assignments like this.mumble = value as declaring a global.

Note: These are string matches so we will miss situations where the parent object is assigned to another variable e.g.:

var b = gBrowser;
b.content // Would not be detected as a CPOW.

var-only-at-top-level marks all var declarations that are not at the top level invalid.

Possible values for all rules
Value Meaning
0 Deactivated
1 Warning
2 Error

Example configuration:

"rules": {
  "mozilla/balanced-listeners": 2,
  "mozilla/components-imports": 1,
  "mozilla/import-globals-from": 1,
  "mozilla/import-headjs-globals": 1,
  "mozilla/mark-test-function-used": 1,
  "mozilla/var-only-at-top-level": 1,
  "mozilla/no-cpows-in-tests": 1,
}