mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-23 21:03:08 +09:00
174 lines
4.7 KiB
ReStructuredText
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,
|
|
}
|