forked from mirrors/gecko-dev
Bug 1872674 - Add an ESLint rule to reject new uses of Console.sys.mjs/Log.sys.mjs. r=mossop
Differential Revision: https://phabricator.services.mozilla.com/D197504
This commit is contained in:
parent
298efaf1ce
commit
c7947b6868
9 changed files with 167 additions and 1 deletions
57
.eslintrc.js
57
.eslintrc.js
|
|
@ -211,6 +211,63 @@ module.exports = {
|
|||
...testPaths.chrome.map(path => `${path}/**/*.js`),
|
||||
],
|
||||
},
|
||||
{
|
||||
// Bug 881389 - Complete switching to console.createInstance from custom
|
||||
// modules. To support the gradual switch, we log these as warnings until
|
||||
// they have been transitioned.
|
||||
files: [
|
||||
"browser/base/content/browser-data-submission-info-bar.js",
|
||||
"browser/base/content/browser-sync.js",
|
||||
"browser/base/content/browser.js",
|
||||
"browser/components/BrowserGlue.sys.mjs",
|
||||
"browser/components/attribution/AttributionCode.sys.mjs",
|
||||
"browser/components/customizableui/**",
|
||||
"browser/components/downloads/**",
|
||||
"browser/components/enterprisepolicies/**",
|
||||
"browser/components/firefoxview/**",
|
||||
"browser/components/migration/**",
|
||||
"browser/components/newtab/lib/ASRouterPreferences.jsm",
|
||||
"browser/components/protocolhandler/WebProtocolHandlerRegistrar.sys.mjs",
|
||||
"browser/components/shell/ShellService.sys.mjs",
|
||||
"browser/components/syncedtabs/TabListComponent.sys.mjs",
|
||||
"browser/components/uitour/UITour.sys.mjs",
|
||||
"browser/components/urlbar/**",
|
||||
"browser/tools/mozscreenshots/mozscreenshots/extension/Screenshot.sys.mjs",
|
||||
"devtools/client/webconsole/test/**",
|
||||
"devtools/shared/tests/xpcshell/test_console_filtering.js",
|
||||
"devtools/shared/webconsole/test/chrome/test_consoleapi_innerID.html",
|
||||
"dom/push/Push*.sys.mjs",
|
||||
"mobile/android/modules/geckoview/GeckoViewUtils.sys.mjs",
|
||||
"remote/shared/**",
|
||||
"security/manager/ssl/RemoteSecuritySettings.sys.mjs",
|
||||
"services/**",
|
||||
"testing/mochitest/api.js",
|
||||
"toolkit/components/backgroundtasks/**",
|
||||
"toolkit/components/crashes/**",
|
||||
"toolkit/components/enterprisepolicies/**",
|
||||
"toolkit/components/extensions/**",
|
||||
"toolkit/components/formautofill/**",
|
||||
"toolkit/components/messaging-system/**",
|
||||
"toolkit/components/normandy/**",
|
||||
"toolkit/components/places/**",
|
||||
"toolkit/components/printing/**",
|
||||
"toolkit/components/taskscheduler/**",
|
||||
"toolkit/components/telemetry/**",
|
||||
"toolkit/components/utils/JsonSchemaValidator.sys.mjs",
|
||||
"toolkit/modules/AsanReporter.sys.mjs",
|
||||
"toolkit/modules/GMPInstallManager.sys.mjs",
|
||||
"toolkit/modules/OSKeyStore.sys.mjs",
|
||||
"toolkit/modules/ProfileAge.sys.mjs",
|
||||
"toolkit/modules/Sqlite.sys.mjs",
|
||||
"toolkit/modules/tests/xpcshell/test_Log*.js",
|
||||
"toolkit/mozapps/defaultagent/BackgroundTask_defaultagent.sys.mjs",
|
||||
"toolkit/mozapps/extensions/**",
|
||||
"toolkit/mozapps/update/**",
|
||||
],
|
||||
rules: {
|
||||
"mozilla/use-console-createInstance": "off",
|
||||
},
|
||||
},
|
||||
{
|
||||
// Bug 877389 - Gradually migrate from Cu.reportError to console.error.
|
||||
// Enable these as we fix more areas.
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ const known_scripts = {
|
|||
"resource://gre/modules/XPCOMUtils.sys.mjs",
|
||||
|
||||
// Logging related
|
||||
// eslint-disable-next-line mozilla/use-console-createInstance
|
||||
"resource://gre/modules/Log.sys.mjs",
|
||||
|
||||
// Browser front-end
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ const known_scripts = {
|
|||
"resource://gre/modules/XPCOMUtils.sys.mjs",
|
||||
|
||||
// Logging related
|
||||
// eslint-disable-next-line mozilla/use-console-createInstance
|
||||
"resource://gre/modules/Log.sys.mjs",
|
||||
|
||||
// Telemetry
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ const TEST_CASES = [
|
|||
},
|
||||
{
|
||||
type: "resource",
|
||||
testURL: "resource://gre/modules/Log.sys.mjs",
|
||||
testURL: "resource://gre/modules/AppConstants.sys.mjs",
|
||||
img_url: `url("chrome://global/skin/icons/page-portrait.svg")`,
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
use-console-createInstance
|
||||
==========================
|
||||
|
||||
Rejects usage of Console.sys.mjs or Log.sys.mjs, preferring use of
|
||||
``console.createInstance`` instead. See `Javascript Logging </toolkit/javascript-logging.html>`__ for more information.
|
||||
|
||||
Examples of incorrect code for this rule:
|
||||
-----------------------------------------
|
||||
|
||||
.. code-block:: js
|
||||
|
||||
"resource://gre/modules/Console.sys.mjs"
|
||||
"resource://gre/modules/Log.sys.mjs"
|
||||
|
||||
Examples of correct code for this rule:
|
||||
---------------------------------------
|
||||
|
||||
.. code-block:: js
|
||||
|
||||
console.createInstance({ prefix: "Foo" });
|
||||
|
|
@ -190,6 +190,7 @@ module.exports = {
|
|||
"mozilla/use-cc-etc": "error",
|
||||
"mozilla/use-chromeutils-generateqi": "error",
|
||||
"mozilla/use-chromeutils-import": "error",
|
||||
"mozilla/use-console-createInstance": "error",
|
||||
"mozilla/use-default-preference-values": "error",
|
||||
"mozilla/use-includes-instead-of-indexOf": "error",
|
||||
"mozilla/use-isInstance": "error",
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ module.exports = {
|
|||
"use-cc-etc": require("../lib/rules/use-cc-etc"),
|
||||
"use-chromeutils-generateqi": require("../lib/rules/use-chromeutils-generateqi"),
|
||||
"use-chromeutils-import": require("../lib/rules/use-chromeutils-import"),
|
||||
"use-console-createInstance": require("../lib/rules/use-console-createInstance"),
|
||||
"use-default-preference-values": require("../lib/rules/use-default-preference-values"),
|
||||
"use-ownerGlobal": require("../lib/rules/use-ownerGlobal"),
|
||||
"use-includes-instead-of-indexOf": require("../lib/rules/use-includes-instead-of-indexOf"),
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
/**
|
||||
* @fileoverview Reject use of Console.sys.mjs and Log.sys.mjs.
|
||||
*
|
||||
* 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";
|
||||
|
||||
module.exports = {
|
||||
meta: {
|
||||
docs: {
|
||||
url: "https://firefox-source-docs.mozilla.org/code-quality/lint/linters/eslint-plugin-mozilla/rules/use-console-createInstance.html",
|
||||
},
|
||||
messages: {
|
||||
useConsoleRatherThanModule:
|
||||
"Use console.createInstance rather than {{module}}",
|
||||
},
|
||||
schema: [],
|
||||
type: "suggestion",
|
||||
},
|
||||
|
||||
create(context) {
|
||||
return {
|
||||
Literal(node) {
|
||||
if (typeof node.value != "string") {
|
||||
return;
|
||||
}
|
||||
/* eslint-disable mozilla/use-console-createInstance */
|
||||
if (
|
||||
node.value == "resource://gre/modules/Console.sys.mjs" ||
|
||||
node.value == "resource://gre/modules/Log.sys.mjs"
|
||||
) {
|
||||
context.report({
|
||||
node,
|
||||
messageId: "useConsoleRatherThanModule",
|
||||
data: { module: node.value.split("/").at(-1) },
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
"use strict";
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Requirements
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
var rule = require("../lib/rules/use-console-createInstance");
|
||||
var RuleTester = require("eslint").RuleTester;
|
||||
|
||||
const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: "latest" } });
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// Tests
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
ruleTester.run("use-console-createInstance", rule, {
|
||||
valid: ['"resource://gre/modules/Foo.sys.mjs"'],
|
||||
invalid: [
|
||||
{
|
||||
code: '"resource://gre/modules/Console.sys.mjs"',
|
||||
errors: [
|
||||
{
|
||||
messageId: "useConsoleRatherThanModule",
|
||||
data: { module: "Console.sys.mjs" },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
code: '"resource://gre/modules/Log.sys.mjs"',
|
||||
errors: [
|
||||
{
|
||||
messageId: "useConsoleRatherThanModule",
|
||||
data: { module: "Log.sys.mjs" },
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
});
|
||||
Loading…
Reference in a new issue