Add linter for naked console.errors

Summary:
`console.error(err)` are hard to identify in the codebase especially
as we often don't have reliable stack trace information.

I've already cleaned up a bunch of them manually by going after the most
high-firing ones; this should make it easier to identify the remaining ones.

Reviewed By: jknoxville

Differential Revision: D27913964

fbshipit-source-id: 0ff6624a0c083829846550b40954945d655b7cf6
This commit is contained in:
Pascal Hartig
2021-04-22 05:20:56 -07:00
committed by Facebook GitHub Bot
parent 87cdd21951
commit 3431206c0e
4 changed files with 121 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import {TSESLint} from '@typescript-eslint/experimental-utils';
import rule, {RULE_NAME} from '../noConsoleErrorWithoutContext';
const tester = new TSESLint.RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
parserOptions: {
sourceType: 'module',
ecmaVersion: 2020,
},
});
tester.run(RULE_NAME, rule, {
valid: [
{
code: `console.error("I've made a big mistake:", err);`,
filename: __filename,
},
{
code: `console.error("This should never happen.");`,
filename: __filename,
},
{
code: `console.error("Failed to open user settings: " + err);`,
filename: __filename,
},
{
code: `console.warn(e);`,
filename: __filename,
},
],
invalid: [
{
code: `console.error(err);`,
filename: __filename,
errors: [{messageId: 'noConsoleErrorWithoutContext'}],
},
{
code: `console.error(err, "Too late for context.");`,
filename: __filename,
errors: [{messageId: 'noConsoleErrorWithoutContext'}],
},
],
});