1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /**
- * @fileoverview Reject calls to ChromeUtils.import(..., null). This allows to
- * retrieve the global object for the JSM, instead we should rely on explicitly
- * exported symbols.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
- "use strict";
- function isIdentifier(node, id) {
- return node && node.type === "Identifier" && node.name === id;
- }
- function getRangeAfterArgToEnd(context, argNumber, args) {
- let sourceCode = context.getSourceCode();
- return [
- sourceCode.getTokenAfter(args[argNumber]).range[0],
- args[args.length - 1].range[1],
- ];
- }
- module.exports = {
- meta: {
- docs: {
- url:
- "https://firefox-source-docs.mozilla.org/code-quality/lint/linters/eslint-plugin-mozilla/reject-chromeutils-import-params.html",
- },
- hasSuggestions: true,
- type: "problem",
- },
- create(context) {
- return {
- CallExpression(node) {
- let { callee } = node;
- if (
- isIdentifier(callee.object, "ChromeUtils") &&
- isIdentifier(callee.property, "import") &&
- node.arguments.length >= 2
- ) {
- context.report({
- node,
- message: "ChromeUtils.import only takes one argument.",
- suggest: [
- {
- desc: "Remove the unnecessary parameters.",
- fix: fixer => {
- return fixer.removeRange(
- getRangeAfterArgToEnd(context, 0, node.arguments)
- );
- },
- },
- ],
- });
- }
- },
- };
- },
- };
|