Skip to content

Commit

Permalink
use eslint-config-sonarqube (SonarSource#191)
Browse files Browse the repository at this point in the history
  • Loading branch information
Stas Vilchik authored and SonarTech committed Apr 27, 2018
1 parent 77ac913 commit 0e0296c
Show file tree
Hide file tree
Showing 7 changed files with 124 additions and 524 deletions.
210 changes: 1 addition & 209 deletions server/sonar-vsts/.eslintrc
Original file line number Diff line number Diff line change
@@ -1,211 +1,3 @@
{
"extends": [
"eslint:recommended",
"plugin:import/errors",
"plugin:react/recommended",
"plugin:jsx-a11y/recommended",
"plugin:promise/recommended",
"plugin:sonarjs/recommended"
],

"env": {
"browser": true,
"es6": true,
"jest": true,
"node": true
},

"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true,
"modules": true
}
},

"parser": "typescript-eslint-parser",

"plugins": ["import", "jsx-a11y", "react", "promise", "sonarjs"],

"rules": {
// possible errors
"for-direction": "error",
"no-prototype-builtins": "error",
"no-template-curly-in-string": "error",
"no-unsafe-negation": "error",

// best practices
// TODO turn all rules to "error" eventually
"array-callback-return": "error",
"block-scoped-var": "error",
"complexity": "warn",
"consistent-return": "warn",
"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": "warn",
"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",
{ "blankLine": "always", "prev": "*", "next": ["class", "function"] },
{ "blankLine": "always", "prev": ["class", "function"], "next": "*" }
],

// 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",

// 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",

// 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-dynamic-require": "error",
"import/no-extraneous-dependencies": "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/no-webpack-loader-syntax": "error",
"import/order": [
"error",
{
"groups": ["builtin", "external", ["index", "sibling"], ["parent", "internal"]],
"newlines-between": "never"
}
],

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

// react
// TODO turn all rules to "error" eventually
"react/button-has-type": "warn",
"react/display-name": "warn",
"react/jsx-boolean-value": ["error", "always"],
"react/jsx-no-comment-textnodes": "warn",
"react/jsx-no-target-blank": "warn",
"react/jsx-pascal-case": "error",
"react/jsx-sort-default-props": "warn",
"react/jsx-sort-props": "warn",
"react/no-access-state-in-setstate": "warn",
"react/no-find-dom-node": "warn",
"react/no-string-refs": "warn",
"react/no-this-in-sfc": "error",
"react/self-closing-comp": "error",
"react/sort-comp": [
"error",
{
"order": [
"type-annotations",
"instance-variables",
"static-methods",
"lifecycle",
"everything-else",
"rendering"
],
"groups": { "rendering": ["/^render.+$/", "render"] }
}
],

// turn off prop types validation, better use ts ;)
"react/prop-types": "off",

// jsx-a11y
"jsx-a11y/anchor-has-content": "warn",
"jsx-a11y/no-noninteractive-tabindex": "warn",
"jsx-a11y/no-redundant-roles": "warn",
"jsx-a11y/no-static-element-interactions": "warn",

"jsx-a11y/anchor-is-valid": "off",
"jsx-a11y/click-events-have-key-events": "off",
"jsx-a11y/no-autofocus": "off",
"jsx-a11y/no-noninteractive-element-interactions": "off",
// has FPs
"jsx-a11y/label-has-for": "off",

// promise
"promise/catch-or-return": ["warn", { "allowThen": true }],

"promise/always-return": "off",
"promise/avoid-new": "off",

// sonarjs
"sonarjs/cognitive-complexity": "warn",
"sonarjs/no-identical-functions": "warn"
},

"settings": {
"import/ignore": ["node_modules"]
}
"extends": "sonarqube"
}
13 changes: 7 additions & 6 deletions server/sonar-vsts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,12 @@
"enzyme-adapter-react-16": "1.1.1",
"enzyme-to-json": "3.3.0",
"escape-string-regexp": "1.0.5",
"eslint": "4.17.0",
"eslint-plugin-import": "2.8.0",
"eslint-plugin-jsx-a11y": "6.0.2",
"eslint-plugin-promise": "3.6.0",
"eslint-plugin-react": "7.6.1",
"eslint": "4.19.1",
"eslint-config-sonarqube": "0.1.0",
"eslint-plugin-import": "2.11.0",
"eslint-plugin-jsx-a11y": "6.0.3",
"eslint-plugin-promise": "3.7.0",
"eslint-plugin-react": "7.7.0",
"eslint-plugin-sonarjs": "0.1.0",
"html-webpack-plugin": "3.0.6",
"jest": "22.0.6",
Expand All @@ -60,7 +61,7 @@
"ts-jest": "22.0.1",
"ts-loader": "4.1.0",
"typescript": "2.8.1",
"typescript-eslint-parser": "13.0.0",
"typescript-eslint-parser": "15.0.0",
"webpack": "4.1.1",
"webpack-bundle-analyzer": "2.11.1",
"webpack-dev-server": "3.1.1"
Expand Down
Loading

0 comments on commit 0e0296c

Please sign in to comment.