|
17 | 17 | * along with this program; if not, write to the Free Software Foundation, |
18 | 18 | * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
19 | 19 | */ |
| 20 | +import * as fs from 'fs'; |
| 21 | +import * as path from 'path'; |
20 | 22 | import { TSESLint } from '@typescript-eslint/experimental-utils'; |
21 | 23 |
|
22 | | -const sonarjsRules: [string, TSESLint.Linter.RuleLevel][] = [ |
23 | | - ['cognitive-complexity', 'error'], |
24 | | - ['elseif-without-else', 'off'], |
25 | | - ['generator-without-yield', 'error'], |
26 | | - ['max-switch-cases', 'error'], |
27 | | - ['no-all-duplicated-branches', 'error'], |
28 | | - ['no-collapsible-if', 'error'], |
29 | | - ['no-collection-size-mischeck', 'error'], |
30 | | - ['no-duplicate-string', 'error'], |
31 | | - ['no-duplicated-branches', 'error'], |
32 | | - ['no-element-overwrite', 'error'], |
33 | | - ['no-empty-collection', 'error'], |
34 | | - ['no-extra-arguments', 'error'], |
35 | | - ['no-gratuitous-expressions', 'error'], |
36 | | - ['no-identical-conditions', 'error'], |
37 | | - ['no-identical-functions', 'error'], |
38 | | - ['no-identical-expressions', 'error'], |
39 | | - ['no-inverted-boolean-check', 'error'], |
40 | | - ['no-nested-switch', 'error'], |
41 | | - ['no-nested-template-literals', 'error'], |
42 | | - ['no-one-iteration-loop', 'error'], |
43 | | - ['no-redundant-boolean', 'error'], |
44 | | - ['no-redundant-jump', 'error'], |
45 | | - ['no-same-line-conditional', 'error'], |
46 | | - ['no-small-switch', 'error'], |
47 | | - ['no-unused-collection', 'error'], |
48 | | - ['no-use-of-empty-return-value', 'error'], |
49 | | - ['no-useless-catch', 'error'], |
50 | | - ['non-existent-operator', 'error'], |
51 | | - ['prefer-immediate-return', 'error'], |
52 | | - ['prefer-object-literal', 'error'], |
53 | | - ['prefer-single-boolean-return', 'error'], |
54 | | - ['prefer-while', 'error'], |
55 | | -]; |
| 24 | +const sonarjsRules: string[] = fs |
| 25 | + .readdirSync(path.join(__dirname, 'rules')) |
| 26 | + .map(filename => filename.substr(0, filename.lastIndexOf('.ts'))); |
56 | 27 |
|
57 | 28 | const sonarjsRuleModules: { [key: string]: any } = {}; |
58 | 29 |
|
59 | 30 | const configs: { recommended: TSESLint.Linter.Config & { plugins: string[] } } = { |
60 | 31 | recommended: { plugins: ['sonarjs'], rules: {} }, |
61 | 32 | }; |
62 | 33 |
|
63 | | -sonarjsRules.forEach(rule => (sonarjsRuleModules[rule[0]] = require(`./rules/${rule[0]}`))); |
64 | | -sonarjsRules.forEach(rule => (configs.recommended.rules![`sonarjs/${rule[0]}`] = rule[1])); |
| 34 | +sonarjsRules.forEach(rule => { |
| 35 | + sonarjsRuleModules[rule] = require(`./rules/${rule}`); |
| 36 | + const { |
| 37 | + meta: { |
| 38 | + docs: { recommended }, |
| 39 | + }, |
| 40 | + } = sonarjsRuleModules[rule]; |
| 41 | + configs.recommended.rules![`sonarjs/${rule}`] = recommended === false ? 'off' : recommended; |
| 42 | +}); |
65 | 43 |
|
66 | 44 | export { sonarjsRuleModules as rules, configs }; |
0 commit comments