Dactyloidae/tools/lint/docs/linters/eslint-plugin-mozilla.rst

174 lines
4.7 KiB
ReStructuredText

=====================
Mozilla ESLint Plugin
=====================
balanced-listeners
------------------
Checks that for every occurence of 'addEventListener' or 'on' there is an
occurence of 'removeEventListener' or 'off' with the same event name.
components-imports
------------------
Checks the filename of imported files e.g. ``Cu.import("some/path/Blah.jsm")``
adds Blah to the global scope.
import-browserjs-globals
------------------------
When included files from the main browser UI scripts will be loaded and any
declared globals will be defined for the current file. This is mostly useful for
browser-chrome mochitests that call browser functions.
import-globals-from
-------------------
Parses a file for globals defined in various unique Mozilla ways.
When a "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. This will also
operate recursively.
This is useful for scripts that are loaded as <script> tag in a window and rely
on each other's globals.
If <path> is a relative path, then it must be relative to the file being
checked by the rule.
import-headjs-globals
---------------------
Import globals from head.js and from any files that were imported by
head.js (as far as we can correctly resolve the path).
The following file import patterns are supported:
- ``Services.scriptloader.loadSubScript(path)``
- ``loader.loadSubScript(path)``
- ``loadSubScript(path)``
- ``loadHelperScript(path)``
- ``import-globals-from path``
If path does not exist because it is generated e.g.
``testdir + "/somefile.js"`` we do our best to resolve it.
The following patterns are supported:
- ``Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm");``
- ``loader.lazyImporter(this, "name1");``
- ``loader.lazyRequireGetter(this, "name2"``
- ``loader.lazyServiceGetter(this, "name3"``
- ``XPCOMUtils.defineLazyModuleGetter(this, "setNamedTimeout", ...)``
- ``loader.lazyGetter(this, "toolboxStrings"``
- ``XPCOMUtils.defineLazyGetter(this, "clipboardHelper"``
mark-test-function-used
-----------------------
Simply marks `test` (the test method) or `run_test` as used when in mochitests
or xpcshell tests respectively. This avoids ESLint telling us that the function
is never called.
no-aArgs
--------
Checks that function argument names don't start with lowercase 'a' followed by
a capital letter. This is to prevent the use of Hungarian notation whereby the
first letter is a prefix that indicates the type or intended use of a variable.
no-cpows-in-tests
-----------------
This rule checks if the file is a browser mochitest and, if so, checks for
possible CPOW usage by checking for the following strings:
- "gBrowser.contentWindow"
- "gBrowser.contentDocument"
- "gBrowser.selectedBrowser.contentWindow"
- "browser.contentDocument"
- "window.content"
- "content"
- "content."
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.
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
--------------------
This takes an option, a regular expression. Invocations of
``require`` with a string literal argument are matched against this
regexp; and if it matches, the ``require`` use is flagged.
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.
Example
=======
+-------+-----------------------+
| 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,
}