Skip to content

Commit

Permalink
Activate import/no-extraneous-dependencies in eslint config (SonarS…
Browse files Browse the repository at this point in the history
  • Loading branch information
vilchik-elena authored Aug 12, 2021
1 parent 232093a commit a28dbe3
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 101 deletions.
205 changes: 106 additions & 99 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,129 +1,136 @@
// eslint-disable-next-line notice/notice
module.exports = {
env: { es6: true, node: true, jest: true },
extends: ["eslint:recommended", "plugin:import/errors", "prettier", "plugin:sonarjs/recommended"],
parser: "@typescript-eslint/parser",
extends: ['eslint:recommended', 'plugin:import/errors', 'prettier', 'plugin:sonarjs/recommended'],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 2018,
ecmaFeatures: { modules: true },
sourceType: "module",
sourceType: 'module',
},
plugins: ["import", "notice", "sonarjs"],
plugins: ['import', 'notice', 'sonarjs'],
rules: {
// possible errors
"for-direction": "error",
"no-prototype-builtins": "error",
"no-template-curly-in-string": "error",
"no-unsafe-negation": "error",
'for-direction': 'error',
'no-prototype-builtins': 'error',
'no-template-curly-in-string': 'error',
'no-unsafe-negation': 'error',

// best practices
"array-callback-return": "error",
"block-scoped-var": "error",
complexity: "error",
"consistent-return": "error",
eqeqeq: ["error", "smart"],
"guard-for-in": "error",
"no-alert": "error",
"no-caller": "error",
"no-div-regex": "error",
"no-eval": "error",
"no-extend-native": "error",
"no-extra-bind": "error",
"no-extra-label": "error",
"no-floating-decimal": "error",
"no-implied-eval": "error",
"no-iterator": "error",
"no-labels": "error",
"no-lone-blocks": "error",
"no-loop-func": "error",
"no-new": "error",
"no-new-func": "error",
"no-new-wrappers": "error",
"no-proto": "error",
"no-restricted-properties": "error",
"no-return-assign": "error",
"no-return-await": "error",
"no-self-compare": "error",
"no-sequences": "error",
"no-throw-literal": "error",
"no-unmodified-loop-condition": "error",
"no-unused-expressions": "error",
"no-useless-call": "error",
"no-useless-concat": "error",
"no-useless-escape": "error",
"no-useless-return": "error",
"no-void": "error",
"no-with": "error",
radix: "error",
"require-await": "error",
"wrap-iife": "error",
yoda: "error",
'array-callback-return': 'error',
'block-scoped-var': 'error',
complexity: 'error',
'consistent-return': 'error',
eqeqeq: ['error', 'smart'],
'guard-for-in': 'error',
'no-alert': 'error',
'no-caller': 'error',
'no-div-regex': 'error',
'no-eval': 'error',
'no-extend-native': 'error',
'no-extra-bind': 'error',
'no-extra-label': 'error',
'no-floating-decimal': 'error',
'no-implied-eval': 'error',
'no-iterator': 'error',
'no-labels': 'error',
'no-lone-blocks': 'error',
'no-loop-func': 'error',
'no-new': 'error',
'no-new-func': 'error',
'no-new-wrappers': 'error',
'no-proto': 'error',
'no-restricted-properties': 'error',
'no-return-assign': 'error',
'no-return-await': 'error',
'no-self-compare': 'error',
'no-sequences': 'error',
'no-throw-literal': 'error',
'no-unmodified-loop-condition': 'error',
'no-unused-expressions': 'error',
'no-useless-call': 'error',
'no-useless-concat': 'error',
'no-useless-escape': 'error',
'no-useless-return': 'error',
'no-void': 'error',
'no-with': 'error',
radix: 'error',
'require-await': 'error',
'wrap-iife': 'error',
yoda: 'error',

// stylistic
camelcase: "warn",
"consistent-this": ["warn", "that"],
"func-name-matching": "error",
"func-style": ["warn", "declaration", { allowArrowFunctions: true }],
"lines-between-class-members": ["error", "always", { exceptAfterSingleLine: true }],
"max-depth": "warn",
"max-lines": ["warn", 1000],
"max-params": ["warn", 4],
"no-array-constructor": "warn",
"no-bitwise": "warn",
"no-lonely-if": "error",
"no-multi-assign": "warn",
"no-nested-ternary": "warn",
"no-new-object": "warn",
"no-underscore-dangle": "warn",
"no-unneeded-ternary": "warn",
"one-var": ["warn", "never"],
"operator-assignment": "warn",
"padding-line-between-statements": "error",
camelcase: 'warn',
'consistent-this': ['warn', 'that'],
'func-name-matching': 'error',
'func-style': ['warn', 'declaration', { allowArrowFunctions: true }],
'lines-between-class-members': ['error', 'always', { exceptAfterSingleLine: true }],
'max-depth': 'warn',
'max-lines': ['warn', 1000],
'max-params': ['warn', 4],
'no-array-constructor': 'warn',
'no-bitwise': 'warn',
'no-lonely-if': 'error',
'no-multi-assign': 'warn',
'no-nested-ternary': 'warn',
'no-new-object': 'warn',
'no-underscore-dangle': 'warn',
'no-unneeded-ternary': 'warn',
'one-var': ['warn', 'never'],
'operator-assignment': 'warn',
'padding-line-between-statements': 'error',

// es2015
"no-duplicate-imports": "error",
"no-useless-computed-key": "error",
"no-useless-rename": "error",
"no-var": "error",
"object-shorthand": "error",
"prefer-arrow-callback": "error",
"prefer-const": "error",
"prefer-destructuring": ["warn", { object: true, array: false }],
"prefer-numeric-literals": "warn",
"prefer-rest-params": "warn",
"prefer-spread": "warn",
'no-duplicate-imports': 'error',
'no-useless-computed-key': 'error',
'no-useless-rename': 'error',
'no-var': 'error',
'object-shorthand': 'error',
'prefer-arrow-callback': 'error',
'prefer-const': 'error',
'prefer-destructuring': ['warn', { object: true, array: false }],
'prefer-numeric-literals': 'warn',
'prefer-rest-params': 'warn',
'prefer-spread': 'warn',

// disabled because of the usage of typescript-eslint-parser
// https://github.com/eslint/typescript-eslint-parser/issues/77
"no-undef": "off",
"no-unused-vars": "off",
'no-undef': 'off',
'no-unused-vars': 'off',

// import
"import/extensions": "error",
"import/first": "error",
"import/newline-after-import": "error",
"import/no-absolute-path": "error",
"import/no-amd": "error",
"import/no-deprecated": "error",
"import/no-duplicates": "error",
"import/no-mutable-exports": "error",
"import/no-named-as-default": "error",
"import/no-named-as-default-member": "error",
"import/no-named-default": "error",
"import/order": [
"error",
'import/no-extraneous-dependencies': [
'error',
{
groups: ["builtin", "external", ["index", "sibling"], ["parent", "internal"]],
"newlines-between": "never",
devDependencies: ['tests/**/*', 'ruling/**/*'],
},
],
'import/extensions': 'error',
'import/first': 'error',
'import/newline-after-import': 'error',
'import/no-absolute-path': 'error',
'import/no-amd': 'error',
'import/no-deprecated': 'error',
'import/no-duplicates': 'error',
'import/no-mutable-exports': 'error',
'import/no-named-as-default': 'error',
'import/no-named-as-default-member': 'error',
'import/no-named-default': 'error',
'import/order': [
'error',
{
groups: ['builtin', 'external', ['index', 'sibling'], ['parent', 'internal']],
'newlines-between': 'never',
},
],

// does not properly work with ts
"import/no-unresolved": "off",
'import/no-unresolved': 'off',

// notice
"notice/notice": ["error", { templateFile: "scripts/file-header.ts" }],
'notice/notice': ['error', { templateFile: 'scripts/file-header.ts' }],

// sonarjs
"sonarjs/cognitive-complexity": "warn",
'sonarjs/cognitive-complexity': 'warn',
},
};
1 change: 1 addition & 0 deletions src/rules/no-ignored-return.ts
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ function isReplaceWithCallback(
const typeNode = services.program.getTypeChecker().typeToTypeNode(type, undefined, undefined);
// dynamically import 'typescript' as classic 'import' will fail if project not using 'typescript' parser
// we are sure it's available as 'RequiredParserServices' are available here
// eslint-disable-next-line import/no-extraneous-dependencies
const ts = require('typescript');
return typeNode && ts.isFunctionTypeNode(typeNode);
}
Expand Down
2 changes: 1 addition & 1 deletion src/utils/locations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ export function toSecondaryLocation(
locationHolder: TSESLint.AST.Token | TSESTree.Node,
message?: string,
): IssueLocation {
const loc = locationHolder.loc;
const { loc } = locationHolder;
return {
message,
column: loc.start.column,
Expand Down
2 changes: 1 addition & 1 deletion tests/utils/parser-services.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as path from 'path';
import { TSESTree } from '@typescript-eslint/experimental-utils';
import type { TSESTree } from '@typescript-eslint/experimental-utils';
import { isRequiredParserServices } from '../../src/utils/parser-services';
import { Rule } from '../../src/utils/types';
import { RuleTester } from '../rule-tester';
Expand Down

0 comments on commit a28dbe3

Please sign in to comment.