From: Stas Vilchik Date: Tue, 17 Apr 2018 12:25:25 +0000 (+0200) Subject: add eslint-plugin-sonarjs (#153) X-Git-Tag: 7.5~1345 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=b6b3aab90877ce4b9106378e13eff601f794c68c;p=sonarqube.git add eslint-plugin-sonarjs (#153) --- diff --git a/server/sonar-vsts/.eslintrc b/server/sonar-vsts/.eslintrc index 298cd8bbc89..ddca3b05c68 100644 --- a/server/sonar-vsts/.eslintrc +++ b/server/sonar-vsts/.eslintrc @@ -4,7 +4,8 @@ "plugin:import/errors", "plugin:react/recommended", "plugin:jsx-a11y/recommended", - "plugin:promise/recommended" + "plugin:promise/recommended", + "plugin:sonarjs/recommended" ], "env": { @@ -25,7 +26,7 @@ "parser": "typescript-eslint-parser", - "plugins": ["import", "jsx-a11y", "react", "promise"], + "plugins": ["import", "jsx-a11y", "react", "promise", "sonarjs"], "rules": { // possible errors @@ -197,7 +198,11 @@ "promise/catch-or-return": ["warn", { "allowThen": true }], "promise/always-return": "off", - "promise/avoid-new": "off" + "promise/avoid-new": "off", + + // sonarjs + "sonarjs/cognitive-complexity": "warn", + "sonarjs/no-identical-functions": "warn" }, "settings": { diff --git a/server/sonar-vsts/package.json b/server/sonar-vsts/package.json index 2ad9444fa63..9a061014420 100644 --- a/server/sonar-vsts/package.json +++ b/server/sonar-vsts/package.json @@ -46,6 +46,7 @@ "eslint-plugin-jsx-a11y": "6.0.2", "eslint-plugin-promise": "3.6.0", "eslint-plugin-react": "7.6.1", + "eslint-plugin-sonarjs": "0.1.0", "html-webpack-plugin": "3.0.6", "jest": "22.0.6", "postcss-calc": "6.0.1", diff --git a/server/sonar-vsts/yarn.lock b/server/sonar-vsts/yarn.lock index 1fad7fa5983..5d03d335354 100644 --- a/server/sonar-vsts/yarn.lock +++ b/server/sonar-vsts/yarn.lock @@ -2479,6 +2479,10 @@ eslint-plugin-react@7.6.1: jsx-ast-utils "^2.0.1" prop-types "^15.6.0" +eslint-plugin-sonarjs@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.1.0.tgz#fedf6e67296c30470002c48d10a701d69e40af8a" + eslint-scope@^3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" @@ -7607,4 +7611,3 @@ yargs@~3.10.0: cliui "^2.1.0" decamelize "^1.0.0" window-size "0.1.0" - diff --git a/server/sonar-web/.eslintrc b/server/sonar-web/.eslintrc index 2e02ba0490f..e03bc7b4c63 100644 --- a/server/sonar-web/.eslintrc +++ b/server/sonar-web/.eslintrc @@ -4,7 +4,8 @@ "plugin:import/errors", "plugin:react/recommended", "plugin:jsx-a11y/recommended", - "plugin:promise/recommended" + "plugin:promise/recommended", + "plugin:sonarjs/recommended" ], "env": { @@ -30,7 +31,7 @@ "parser": "typescript-eslint-parser", - "plugins": ["import", "jsx-a11y", "react", "promise"], + "plugins": ["import", "jsx-a11y", "react", "promise", "sonarjs"], "rules": { // possible errors @@ -202,7 +203,11 @@ "promise/catch-or-return": ["warn", { "allowThen": true }], "promise/always-return": "off", - "promise/avoid-new": "off" + "promise/avoid-new": "off", + + // sonarjs + "sonarjs/cognitive-complexity": "warn", + "sonarjs/no-identical-functions": "warn" }, "settings": { diff --git a/server/sonar-web/package.json b/server/sonar-web/package.json index 78e0324d5a3..113fc9abe25 100644 --- a/server/sonar-web/package.json +++ b/server/sonar-web/package.json @@ -82,6 +82,7 @@ "eslint-plugin-jsx-a11y": "6.0.2", "eslint-plugin-promise": "3.6.0", "eslint-plugin-react": "7.6.1", + "eslint-plugin-sonarjs": "0.1.0", "expose-loader": "0.7.5", "flow-bin": "^0.52.0", "html-webpack-plugin": "3.0.6", diff --git a/server/sonar-web/src/main/js/apps/permissions/shared/store/filter.js b/server/sonar-web/src/main/js/apps/permissions/shared/store/filter.js index c665d74a979..9c9fcf464b1 100644 --- a/server/sonar-web/src/main/js/apps/permissions/shared/store/filter.js +++ b/server/sonar-web/src/main/js/apps/permissions/shared/store/filter.js @@ -20,12 +20,10 @@ import { UPDATE_FILTER } from './actions'; const filter = (state = 'all', action = {}) => { - switch (action.type) { - case UPDATE_FILTER: - return action.filter; - default: - return state; + if (action.type === UPDATE_FILTER) { + return action.filter; } + return state; }; export default filter; diff --git a/server/sonar-web/src/main/js/apps/permissions/shared/store/selectedPermission.js b/server/sonar-web/src/main/js/apps/permissions/shared/store/selectedPermission.js index 8eec8057c71..4a0e4496deb 100644 --- a/server/sonar-web/src/main/js/apps/permissions/shared/store/selectedPermission.js +++ b/server/sonar-web/src/main/js/apps/permissions/shared/store/selectedPermission.js @@ -20,12 +20,10 @@ import { SELECT_PERMISSION } from './actions'; const selectedPermission = (state = null, action = {}) => { - switch (action.type) { - case SELECT_PERMISSION: - return action.permission; - default: - return state; + if (action.type === SELECT_PERMISSION) { + return action.permission; } + return state; }; export default selectedPermission; diff --git a/server/sonar-web/yarn.lock b/server/sonar-web/yarn.lock index ad4e577368c..a2087e788b9 100644 --- a/server/sonar-web/yarn.lock +++ b/server/sonar-web/yarn.lock @@ -2677,6 +2677,10 @@ eslint-plugin-react@7.6.1: jsx-ast-utils "^2.0.1" prop-types "^15.6.0" +eslint-plugin-sonarjs@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.1.0.tgz#fedf6e67296c30470002c48d10a701d69e40af8a" + eslint-scope@^3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"