@odg/eslint-config 2.0.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +451 -22
- package/index.mjs +463 -0
- package/package.json +37 -32
- package/rules/any/base.mjs +15 -0
- package/rules/global/base.mjs +409 -0
- package/rules/global/{errors.js → errors.mjs} +27 -18
- package/rules/global/possible-errors.mjs +85 -0
- package/rules/global/security.mjs +82 -0
- package/rules/ini/{base.js → base.mjs} +26 -15
- package/rules/javascript/{best-practices.js → best-practices.mjs} +124 -218
- package/rules/javascript/errors.mjs +6 -0
- package/rules/javascript/{js-documentation.js → js-documentation.mjs} +28 -13
- package/rules/javascript/performance.mjs +9 -0
- package/rules/json/base.mjs +60 -0
- package/rules/typescript/{best-practices.js → best-practices.mjs} +60 -180
- package/rules/typescript/{errors.js → errors.mjs} +17 -10
- package/rules/typescript/{possible-errors.js → possible-errors.mjs} +15 -10
- package/rules/typescript/{security.js → security.mjs} +1 -1
- package/rules/typescript/tests.mjs +29 -0
- package/rules/yaml/{base.js → base.mjs} +11 -8
- package/rules/yaml/{github.js → github.mjs} +1 -1
- package/index.js +0 -376
- package/rules/any/base.js +0 -11
- package/rules/global/base.js +0 -148
- package/rules/global/possible-errors.js +0 -74
- package/rules/global/security.js +0 -77
- package/rules/javascript/errors.js +0 -6
- package/rules/javascript/performance.js +0 -6
- package/rules/json/base.js +0 -27
- package/rules/typescript/tests.js +0 -16
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
const indentSize = 4;
|
|
2
|
+
const complexity = 15;
|
|
3
|
+
const alwaysMultiline = "always-multiline";
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
rules: {
|
|
7
|
+
"capitalized-comments": [
|
|
8
|
+
"error",
|
|
9
|
+
"always",
|
|
10
|
+
{
|
|
11
|
+
ignorePattern: String.raw`\s*region.*|\s*endregion.*|\s*var.*|\s*let.*|\s*const.*`,
|
|
12
|
+
},
|
|
13
|
+
], // Comentários devem ser iniciados em letras maiúsculas
|
|
14
|
+
"unicode-bom": [ "error", "never" ], // Disabled "unicode-bom"
|
|
15
|
+
"no-self-assign": [ "error" ], // Nao se atribua seu próprio valor a variável
|
|
16
|
+
"no-irregular-whitespace": [ "error" ], // Não permite espaços entre palavras
|
|
17
|
+
"no-undef": [ "error", { typeof: true } ], // Não chame variáveis não definidas
|
|
18
|
+
"regexp/negation": [ "error" ], // This rule enforces use of \D, \W, \S and \P on negation.
|
|
19
|
+
"regexp/prefer-set-operation": [ "error" ],
|
|
20
|
+
"regexp/no-useless-set-operand": [ "error" ],
|
|
21
|
+
"regexp/simplify-set-operations": [ "error" ], // Força simplifica a regex
|
|
22
|
+
"regexp/no-empty-string-literal": [ "error" ], // Não faça blocos vazios de literal
|
|
23
|
+
"regexp/no-useless-string-literal": [ "error" ], // Literal não usada
|
|
24
|
+
"regexp/confusing-quantifier": [ "error" ], // No Especifique quantidade em opcional
|
|
25
|
+
"regexp/control-character-escape": [ "error" ], // Use \r ao invés de \u0009
|
|
26
|
+
"no-control-regex": [ "error" ], // Os caracteres de controle
|
|
27
|
+
"regexp/no-dupe-characters-character-class": [ "error" ], // Rvita condições duplicada em []
|
|
28
|
+
"regexp/no-invisible-character": [ "error" ], // Evita colocar tab espaço em regex
|
|
29
|
+
"regexp/no-legacy-features": [
|
|
30
|
+
"error",
|
|
31
|
+
{
|
|
32
|
+
staticProperties: [
|
|
33
|
+
"input",
|
|
34
|
+
"$_",
|
|
35
|
+
"lastMatch",
|
|
36
|
+
"$&",
|
|
37
|
+
"lastParen",
|
|
38
|
+
"$+",
|
|
39
|
+
"leftContext",
|
|
40
|
+
"$`",
|
|
41
|
+
"rightContext",
|
|
42
|
+
"$'",
|
|
43
|
+
"$1",
|
|
44
|
+
"$2",
|
|
45
|
+
"$3",
|
|
46
|
+
"$4",
|
|
47
|
+
"$5",
|
|
48
|
+
"$6",
|
|
49
|
+
"$7",
|
|
50
|
+
"$8",
|
|
51
|
+
"$9",
|
|
52
|
+
],
|
|
53
|
+
prototypeMethods: [ "compile" ],
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
"regexp/no-non-standard-flag": [ "error" ], // Bloqueia flags não padronizada
|
|
57
|
+
"regexp/no-obscure-range": [ "error" ], // Range regex /[A-\x43]/;
|
|
58
|
+
"regexp/no-trivially-nested-quantifier": [ "error" ], // Bloqueia flags não padronizada
|
|
59
|
+
"regexp/no-unused-capturing-group": [ "error" ], // Não crie grupos que não está sendo usado.
|
|
60
|
+
"regexp/no-useless-character-class": [ "error" ], // Não crie blocos desnecessários
|
|
61
|
+
"regexp/no-useless-flag": [ "error" ], // Não Use Flag desnecessários
|
|
62
|
+
"regexp/no-useless-lazy": [ "error" ],
|
|
63
|
+
"regexp/no-useless-quantifier": [ "error" ], // Não permite Quantifiers sem efeitos
|
|
64
|
+
"regexp/no-useless-range": [ "error" ], // Não permite Range desnecessários
|
|
65
|
+
"regexp/no-useless-two-nums-quantifier": [ "error" ], // Não permite Range Iguais
|
|
66
|
+
"regexp/no-zero-quantifier": [ "error" ], // Não permite Quantidade {0}
|
|
67
|
+
"regexp/optimal-lookaround-quantifier": [ "error" ],
|
|
68
|
+
"regexp/optimal-quantifier-concatenation": [ "error" ],
|
|
69
|
+
"regexp/prefer-quantifier": [ "error" ], // Use {4} ao invés de replicar
|
|
70
|
+
"regexp/prefer-range": [ "error" ], // Prefira [0-9] ao invés [1234567890]
|
|
71
|
+
"regexp/sort-alternatives": [ "error" ], // Coloque [a|b|c] ordem alfabética
|
|
72
|
+
"regexp/hexadecimal-escape": [ "error" ], // \x0a ao invés \u000a
|
|
73
|
+
"regexp/match-any": [ "error" ], // Não da match com qualquer coisa
|
|
74
|
+
"regexp/no-useless-escape": [ "error" ], // Não coloca \ contra em local sem efeito
|
|
75
|
+
"regexp/no-useless-non-capturing-group": [ "error" ], // Grupo não necessário
|
|
76
|
+
"regexp/prefer-character-class": [ "error" ], // Prefira [] ao invés de |
|
|
77
|
+
"regexp/prefer-d": [ "error" ], // Prefira \d
|
|
78
|
+
"regexp/prefer-plus-quantifier": [ "error" ], // Prefira + ao invés de {1, }
|
|
79
|
+
"regexp/prefer-question-quantifier": [ "error" ], // Prefira ? ao invés de {0,1}
|
|
80
|
+
"regexp/prefer-star-quantifier": [ "error" ], // Prefira * ao invés de {0,}
|
|
81
|
+
"regexp/prefer-unicode-codepoint-escapes": [ "error" ], // Use Unicode
|
|
82
|
+
"regexp/prefer-w": [ "error" ], // Use \w
|
|
83
|
+
"regexp/sort-character-class-elements": [ "error" ], // Coloque [] em ordem Alfabética
|
|
84
|
+
"regexp/sort-flags": [ "error" ], // Flag em ordem alfabética
|
|
85
|
+
"regexp/prefer-named-capture-group": [ "error" ], // Prefira group com nomes
|
|
86
|
+
"regexp/prefer-regexp-exec": [ "error" ], // Prefira exec em regex
|
|
87
|
+
|
|
88
|
+
"unicorn/no-empty-file": [ "error" ], // Não crie arquivo vazio
|
|
89
|
+
"no-magic-numbers": [
|
|
90
|
+
"warn",
|
|
91
|
+
{
|
|
92
|
+
ignore: [ 0, 1, -1 ],
|
|
93
|
+
enforceConst: true,
|
|
94
|
+
ignoreDefaultValues: true,
|
|
95
|
+
},
|
|
96
|
+
], // Não permite numero mágicos
|
|
97
|
+
"no-negated-condition": [ "error" ], // Não negue condições
|
|
98
|
+
"sonarjs/no-identical-functions": [ "error" ], // Não faça funções iguais
|
|
99
|
+
"sonarjs/no-inverted-boolean-check": [ "error" ], // Não faça funções iguais
|
|
100
|
+
"sonarjs/no-nested-switch": [ "error" ], // Não faça switch dentro do outro
|
|
101
|
+
"sonarjs/no-nested-template-literals": [ "error" ], // Não faça string Template dentro de outra
|
|
102
|
+
"sonarjs/no-redundant-boolean": [ "error" ], // Não faça !false ou `boolReturnFunc() || false`
|
|
103
|
+
"sonarjs/prefer-immediate-return": [ "error" ], // Prefira retornar imediatamente a variável
|
|
104
|
+
"sonarjs/prefer-object-literal": [ "error" ], // Prefira declarar dentro do objeto inicial ao invés de injetar
|
|
105
|
+
"sonarjs/prefer-single-boolean-return": [ "error" ], // Retorne a boolean em vez de fazer if e else
|
|
106
|
+
"sonarjs/cognitive-complexity": [ "error", complexity ], // Complexidade do código
|
|
107
|
+
"sonarjs/no-selector-parameter": [ "error" ], // Não faça if com parâmetro boolean (resp única)
|
|
108
|
+
"sonarjs/no-small-switch": [ "error" ], // Switch Pequeno pode ser if-else ou 2 if
|
|
109
|
+
"sonarjs/no-table-as-layout": [ "error" ], // Não Coloque presentation em table html
|
|
110
|
+
"sonarjs/object-alt-content": [ "error" ], // Tag Object tem q ter conteúdo
|
|
111
|
+
"sonarjs/prefer-read-only-props": [ "error" ], // Props react Readonly
|
|
112
|
+
"@stylistic/array-bracket-newline": [ "error", { "multiline": true } ],
|
|
113
|
+
"@stylistic/array-bracket-spacing": [ "error", "always" ],
|
|
114
|
+
"@stylistic/array-element-newline": [
|
|
115
|
+
"error",
|
|
116
|
+
{ "consistent": true, "multiline": true },
|
|
117
|
+
], // Formatação linhas itens array
|
|
118
|
+
"@stylistic/arrow-parens": [ "error", "always" ], // Arrow Function sempre com parentese
|
|
119
|
+
"@stylistic/arrow-spacing": [ "error", { before: true, after: true } ], // Espaço seta arrow function
|
|
120
|
+
"@stylistic/block-spacing": [ "error" ], // Espaço em { return true } e apos as chaves {
|
|
121
|
+
"@stylistic/brace-style": [ "error" ], // Força formatação {}
|
|
122
|
+
"@stylistic/comma-dangle": [
|
|
123
|
+
"error",
|
|
124
|
+
{
|
|
125
|
+
arrays: alwaysMultiline,
|
|
126
|
+
objects: alwaysMultiline,
|
|
127
|
+
imports: alwaysMultiline,
|
|
128
|
+
exports: alwaysMultiline,
|
|
129
|
+
functions: alwaysMultiline,
|
|
130
|
+
importAttributes: alwaysMultiline,
|
|
131
|
+
dynamicImports: alwaysMultiline,
|
|
132
|
+
enums: alwaysMultiline,
|
|
133
|
+
generics: alwaysMultiline,
|
|
134
|
+
tuples: alwaysMultiline,
|
|
135
|
+
},
|
|
136
|
+
], // Virgula no final de tudo
|
|
137
|
+
"@stylistic/comma-spacing": [
|
|
138
|
+
"error",
|
|
139
|
+
{
|
|
140
|
+
before: false,
|
|
141
|
+
after: true,
|
|
142
|
+
},
|
|
143
|
+
], // Espaço apos a virgula
|
|
144
|
+
"@stylistic/comma-style": [ "error", "last" ], // Separa variável por virgula alinhando a direita
|
|
145
|
+
"@stylistic/computed-property-spacing": [ "error", "never" ], // Desliga espaço $a[ 'I' ] ou $a[ ] = 12;
|
|
146
|
+
"@stylistic/curly-newline": [ "error", "always" ], // Quebre conteúdo depois das chaves { do if/else/etc
|
|
147
|
+
"@stylistic/dot-location": [ "error", "property" ], // Coloque o . a esquerda da propriedade
|
|
148
|
+
"@stylistic/eol-last": [ "error", "always" ], // Quebre uma linha no final
|
|
149
|
+
"@stylistic/function-call-argument-newline": [ "error", "consistent" ], // Força formatação parâmetro func
|
|
150
|
+
"@stylistic/function-call-spacing": [ "error", "never" ], // Não use espaço antes dos parens função
|
|
151
|
+
"@stylistic/function-paren-newline": [ "error", "multiline-arguments" ], // Força formatação itens parens
|
|
152
|
+
"@stylistic/generator-star-spacing": [ "error", { before: true, after: false } ], // Espaço Funções Yield
|
|
153
|
+
"@stylistic/implicit-arrow-linebreak": [ "error", "beside" ], // Não quebre arrow function
|
|
154
|
+
"@stylistic/indent": [
|
|
155
|
+
"error",
|
|
156
|
+
indentSize,
|
|
157
|
+
{
|
|
158
|
+
SwitchCase: 1,
|
|
159
|
+
VariableDeclarator: 1,
|
|
160
|
+
outerIIFEBody: 1,
|
|
161
|
+
MemberExpression: 1,
|
|
162
|
+
FunctionDeclaration: { parameters: 1, body: 1 },
|
|
163
|
+
FunctionExpression: { parameters: 1, body: 1 },
|
|
164
|
+
CallExpression: { arguments: 1 },
|
|
165
|
+
ArrayExpression: 1,
|
|
166
|
+
ObjectExpression: 1,
|
|
167
|
+
ImportDeclaration: 1,
|
|
168
|
+
flatTernaryExpressions: true,
|
|
169
|
+
ignoreComments: false,
|
|
170
|
+
offsetTernaryExpressions: false,
|
|
171
|
+
},
|
|
172
|
+
], // Ajuda indent
|
|
173
|
+
"@stylistic/indent-binary-ops": [ "error", indentSize ],
|
|
174
|
+
"@stylistic/key-spacing": [
|
|
175
|
+
"error",
|
|
176
|
+
{
|
|
177
|
+
beforeColon: false,
|
|
178
|
+
afterColon: true,
|
|
179
|
+
},
|
|
180
|
+
], // De {a:1} para { a: 1 }
|
|
181
|
+
"@stylistic/keyword-spacing": [
|
|
182
|
+
"error",
|
|
183
|
+
{
|
|
184
|
+
before: true,
|
|
185
|
+
after: true,
|
|
186
|
+
},
|
|
187
|
+
], // Requer espaço apos try {}
|
|
188
|
+
"@stylistic/linebreak-style": [ "error", "unix" ], // Força usar \n apenas em vez de \r\n
|
|
189
|
+
"@stylistic/lines-around-comment": [
|
|
190
|
+
"error",
|
|
191
|
+
{
|
|
192
|
+
beforeLineComment: true,
|
|
193
|
+
allowBlockStart: true,
|
|
194
|
+
allowInterfaceStart: true,
|
|
195
|
+
allowTypeStart: true,
|
|
196
|
+
},
|
|
197
|
+
], // Linha em branco antes do comentário
|
|
198
|
+
"@stylistic/lines-between-class-members": [
|
|
199
|
+
"error",
|
|
200
|
+
"always",
|
|
201
|
+
{ "exceptAfterOverload": true },
|
|
202
|
+
], // Força linha em branco entre props classe e funções
|
|
203
|
+
"@stylistic/max-len": [
|
|
204
|
+
"warn",
|
|
205
|
+
{
|
|
206
|
+
code: 120,
|
|
207
|
+
ignoreUrls: true,
|
|
208
|
+
ignoreStrings: true,
|
|
209
|
+
ignoreTemplateLiterals: true,
|
|
210
|
+
ignoreRegExpLiterals: true,
|
|
211
|
+
},
|
|
212
|
+
], // Caracteres máximo por linhas
|
|
213
|
+
"@stylistic/max-statements-per-line": [ "error", { max: 1 } ], // Máximo operação em 1 linha
|
|
214
|
+
"@stylistic/member-delimiter-style": [
|
|
215
|
+
"error",
|
|
216
|
+
{
|
|
217
|
+
multiline: {
|
|
218
|
+
delimiter: "semi",
|
|
219
|
+
requireLast: true,
|
|
220
|
+
},
|
|
221
|
+
singleline: {
|
|
222
|
+
delimiter: "semi",
|
|
223
|
+
requireLast: false,
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
], // Type e interface usa ;
|
|
227
|
+
"@stylistic/multiline-comment-style": [
|
|
228
|
+
"error",
|
|
229
|
+
"starred-block",
|
|
230
|
+
], // Força /* comentário */ ao invés de // varias vezes
|
|
231
|
+
"@stylistic/multiline-ternary": [
|
|
232
|
+
"error",
|
|
233
|
+
"always-multiline",
|
|
234
|
+
], // Força múltiplas linhas em ternários múltiplos
|
|
235
|
+
"@stylistic/new-parens": [ "error" ], // New Sempre precisa ter parenteses
|
|
236
|
+
"@stylistic/no-extra-parens": [ "error" ], // Não permite parênteses extra
|
|
237
|
+
"@stylistic/no-extra-semi": [ "error" ], // Não permite ;, duplicadas ou desnecessárias
|
|
238
|
+
"@stylistic/no-floating-decimal": [ "error" ], // Não permite decimais flutuantes sem zero a esquerda.
|
|
239
|
+
"@stylistic/no-mixed-operators": [
|
|
240
|
+
"error",
|
|
241
|
+
{
|
|
242
|
+
"groups": [ [ "&&", "||" ] ],
|
|
243
|
+
"allowSamePrecedence": true,
|
|
244
|
+
},
|
|
245
|
+
], // Não misture operator && e ||
|
|
246
|
+
"@stylistic/no-mixed-spaces-and-tabs": [ "error" ], // Não misture espaço e tabs
|
|
247
|
+
"@stylistic/no-multi-spaces": [ "error" ], // Nao permite vários espaços if( i )
|
|
248
|
+
"@stylistic/no-multiple-empty-lines": [
|
|
249
|
+
"error",
|
|
250
|
+
{ max: 1, maxEOF: 0, maxBOF: 0 },
|
|
251
|
+
], // Não permita varias linhas em branco
|
|
252
|
+
"@stylistic/no-tabs": [ "error" ], // Não use tabs
|
|
253
|
+
"@stylistic/no-trailing-spaces": [ "error" ], // Não permite espaço apos ou antes do ponto
|
|
254
|
+
"@stylistic/no-whitespace-before-property": [ "error" ], // Não permite espaço antes de property
|
|
255
|
+
"@stylistic/nonblock-statement-body-position": [ "error", "beside" ], // If sem chaves deve ser inline
|
|
256
|
+
"@stylistic/object-curly-newline": [
|
|
257
|
+
"error",
|
|
258
|
+
{
|
|
259
|
+
"ExportDeclaration": {
|
|
260
|
+
"consistent": true,
|
|
261
|
+
"minProperties": 4,
|
|
262
|
+
"multiline": true,
|
|
263
|
+
},
|
|
264
|
+
"ImportDeclaration": {
|
|
265
|
+
"consistent": true,
|
|
266
|
+
"minProperties": 4,
|
|
267
|
+
"multiline": true,
|
|
268
|
+
},
|
|
269
|
+
"ObjectExpression": {
|
|
270
|
+
"consistent": true,
|
|
271
|
+
"minProperties": 4,
|
|
272
|
+
"multiline": true,
|
|
273
|
+
},
|
|
274
|
+
"ObjectPattern": {
|
|
275
|
+
"consistent": true,
|
|
276
|
+
"minProperties": 4,
|
|
277
|
+
"multiline": true,
|
|
278
|
+
},
|
|
279
|
+
"TSTypeLiteral": {
|
|
280
|
+
"consistent": true,
|
|
281
|
+
"minProperties": 4,
|
|
282
|
+
"multiline": true,
|
|
283
|
+
},
|
|
284
|
+
"TSInterfaceBody": {
|
|
285
|
+
"consistent": true,
|
|
286
|
+
"minProperties": 4,
|
|
287
|
+
"multiline": true,
|
|
288
|
+
},
|
|
289
|
+
"TSEnumBody": {
|
|
290
|
+
"consistent": true,
|
|
291
|
+
"minProperties": 4,
|
|
292
|
+
"multiline": true,
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
], // De {a:1} para { a: 1 }
|
|
296
|
+
"@stylistic/object-curly-spacing": [ "error", "always", { arraysInObjects: true } ], // Espaço declarar objeto
|
|
297
|
+
"@stylistic/object-property-newline": [
|
|
298
|
+
"error",
|
|
299
|
+
{
|
|
300
|
+
allowAllPropertiesOnSameLine: true,
|
|
301
|
+
},
|
|
302
|
+
], // Quebre todos objetos ou nenhum
|
|
303
|
+
"@stylistic/one-var-declaration-per-line": [ "error", "initializations" ], // 1 var por linha
|
|
304
|
+
"@stylistic/operator-linebreak": [
|
|
305
|
+
"error",
|
|
306
|
+
"before",
|
|
307
|
+
{
|
|
308
|
+
overrides: {
|
|
309
|
+
"+=": "none",
|
|
310
|
+
"=": "none",
|
|
311
|
+
"==": "none",
|
|
312
|
+
"===": "none",
|
|
313
|
+
},
|
|
314
|
+
},
|
|
315
|
+
], // Sem quebra de linha em operadores
|
|
316
|
+
"@stylistic/padded-blocks": [
|
|
317
|
+
"error",
|
|
318
|
+
{
|
|
319
|
+
classes: "always",
|
|
320
|
+
blocks: "never",
|
|
321
|
+
switches: "never",
|
|
322
|
+
},
|
|
323
|
+
], // Força não usar blocos com espaços
|
|
324
|
+
"@stylistic/padding-line-between-statements": [
|
|
325
|
+
"error",
|
|
326
|
+
{ "blankLine": "always", "prev": "*", "next": "export" }, // Uma linha em branco antes do export
|
|
327
|
+
{ "blankLine": "always", "prev": "export", "next": "*" }, // Uma linha em branco apos o export
|
|
328
|
+
{ "blankLine": "always", "prev": "*", "next": "class" }, // Uma linha em branco antes da classe
|
|
329
|
+
{ "blankLine": "always", "prev": "class", "next": "*" }, // Uma linha em branco apos a classe
|
|
330
|
+
{ "blankLine": "always", "prev": "*", "next": "interface" }, // Uma linha em branco antes da interface
|
|
331
|
+
{ "blankLine": "always", "prev": "interface", "next": "*" }, // Uma linha em branco apos a interface
|
|
332
|
+
{ "blankLine": "always", "prev": "*", "next": "type" }, // Uma linha em branco antes do type
|
|
333
|
+
{ "blankLine": "always", "prev": "type", "next": "*" }, // Uma linha em branco apos o type
|
|
334
|
+
{ "blankLine": "always", "prev": "multiline-block-like", "next": "*" },
|
|
335
|
+
{ "blankLine": "always", "prev": "*", "next": [ "enum", "interface", "type" ] },
|
|
336
|
+
],
|
|
337
|
+
"@stylistic/quote-props": [ "error", "consistent" ], // Objeto com aspas ou sem consistent
|
|
338
|
+
"@stylistic/quotes": [ "error", "double" ], // Força aspas dupla
|
|
339
|
+
"@stylistic/rest-spread-spacing": [ "error", "never" ], // Não faça fun(... space)
|
|
340
|
+
"@stylistic/semi": [ "error", "always" ], // Força usar ponto-virgula ;
|
|
341
|
+
"@stylistic/semi-spacing": [ "error", { before: false, after: true } ], // Não permite espaço antes do ;
|
|
342
|
+
"@stylistic/semi-style": [ "error", "last" ], // Local do ponto e virgula
|
|
343
|
+
"@stylistic/space-before-blocks": [ "error" ], // Espaço apos antes
|
|
344
|
+
"@stylistic/space-before-function-paren": [
|
|
345
|
+
"error",
|
|
346
|
+
{
|
|
347
|
+
anonymous: "never",
|
|
348
|
+
named: "never",
|
|
349
|
+
asyncArrow: "always",
|
|
350
|
+
catch: "always",
|
|
351
|
+
},
|
|
352
|
+
], // Não permite espaço antes dos parenteses
|
|
353
|
+
"@stylistic/space-in-parens": [ "error", "never" ], // Não permite espaço entre parenteses
|
|
354
|
+
"@stylistic/space-infix-ops": [ "error" ], // Não permite espaço entre parenteses
|
|
355
|
+
"@stylistic/space-unary-ops": [
|
|
356
|
+
"error",
|
|
357
|
+
{
|
|
358
|
+
words: true, // Espaço apos Await e palavras chaves
|
|
359
|
+
nonwords: false, // Força nao ter espaço antes de operadores unários !, -, +
|
|
360
|
+
overrides: {
|
|
361
|
+
"new": false,
|
|
362
|
+
"++": false, // Nao permite espaço no ++
|
|
363
|
+
},
|
|
364
|
+
},
|
|
365
|
+
],
|
|
366
|
+
"@stylistic/spaced-comment": [
|
|
367
|
+
"error",
|
|
368
|
+
"always",
|
|
369
|
+
{
|
|
370
|
+
exceptions: [ "-", "+" ],
|
|
371
|
+
},
|
|
372
|
+
], // Força espaço apos do // comentário
|
|
373
|
+
"@stylistic/switch-colon-spacing": [
|
|
374
|
+
"error",
|
|
375
|
+
{ "after": true, "before": false },
|
|
376
|
+
], // Não coloque espaço antes do : case
|
|
377
|
+
"@stylistic/template-curly-spacing": [ "error" ], // Não coloque espaço em template string
|
|
378
|
+
"@stylistic/template-tag-spacing": [ "error", "never" ], // Sem espaço em template " sql`` "
|
|
379
|
+
"@stylistic/type-annotation-spacing": [ "error" ], // Não colocar junto : tipagem
|
|
380
|
+
"@stylistic/type-generic-spacing": [ "error" ], // Formatação tipos genéricos
|
|
381
|
+
"@stylistic/type-named-tuple-spacing": [ "error" ], // Sem espaço tipagem
|
|
382
|
+
"@stylistic/wrap-iife": [ "error", "inside" ], // Coloque parentese em função auto excetuável
|
|
383
|
+
"@stylistic/yield-star-spacing": [ "error", "before" ], // Espaço a esquerda yield
|
|
384
|
+
|
|
385
|
+
"@stylistic/jsx-closing-bracket-location": [ "error", "line-aligned" ], // Formata fechamento html
|
|
386
|
+
"@stylistic/jsx-closing-tag-location": [ "error", "line-aligned" ], // Formata fechamento html
|
|
387
|
+
"@stylistic/jsx-curly-brace-presence": [ "error" ], // Parâmetro JSX
|
|
388
|
+
"@stylistic/jsx-curly-newline": [ "error" ], // Parâmetro JSX
|
|
389
|
+
"@stylistic/jsx-curly-spacing": [ "error" ], // Parâmetro JSX
|
|
390
|
+
"@stylistic/jsx-equals-spacing": [ "error", "never" ], // Parâmetro JSX
|
|
391
|
+
"@stylistic/jsx-first-prop-new-line": [ "error", "multiline" ], // Formata props html
|
|
392
|
+
"@stylistic/jsx-function-call-newline": [ "error", "multiline" ], // Formata props html
|
|
393
|
+
"@stylistic/jsx-indent-props": [ "error", indentSize ], // Formata props indent
|
|
394
|
+
"@stylistic/jsx-max-props-per-line": [ "error", { "when": "multiline" } ], // Máximo 1 por linha se multilinha
|
|
395
|
+
"@stylistic/jsx-newline": [ "error", { "prevent": true, "allowMultilines": true } ],
|
|
396
|
+
"@stylistic/jsx-one-expression-per-line": [ "error", { "allow": "single-child" } ],
|
|
397
|
+
"@stylistic/jsx-pascal-case": [ "error", { "allowNamespace": true } ],
|
|
398
|
+
"@stylistic/jsx-quotes": [ "error", "prefer-double" ],
|
|
399
|
+
"@stylistic/jsx-self-closing-comp": [
|
|
400
|
+
"error",
|
|
401
|
+
{
|
|
402
|
+
"component": true,
|
|
403
|
+
"html": true,
|
|
404
|
+
},
|
|
405
|
+
],
|
|
406
|
+
"@stylistic/jsx-tag-spacing": [ "error", { "afterOpening": "never", "beforeSelfClosing": "always" } ],
|
|
407
|
+
"@stylistic/jsx-wrap-multilines": [ "error" ],
|
|
408
|
+
},
|
|
409
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
export default {
|
|
2
2
|
rules: {
|
|
3
3
|
"regexp/no-contradiction-with-assertion": [ "error" ], // Não coloque opcional em uma das condições
|
|
4
4
|
"regexp/no-dupe-disjunctions": [ "error" ], // Não permite condições duplicadas em regex
|
|
@@ -18,7 +18,9 @@ module.exports = {
|
|
|
18
18
|
"regexp/no-useless-backreference": [ "error" ],
|
|
19
19
|
"regexp/no-useless-dollar-replacements": [ "error" ],
|
|
20
20
|
"regexp/strict": [ "error" ], // Regex strict
|
|
21
|
-
"unicorn/no-instanceof-
|
|
21
|
+
"unicorn/no-instanceof-builtins": [ "error" ], // Não use instanceof Array,Function,String etc
|
|
22
|
+
"unicorn/no-accessor-recursion": [ "error" ], // Não use recursão em getters e setters
|
|
23
|
+
"unicorn/require-module-attributes": [ "error" ], // Não use with {} import sem atributos
|
|
22
24
|
"constructor-super": [ "error" ], // Bloqueia Super construtor quando invalido
|
|
23
25
|
"getter-return": [ "error" ], // Getter tem q ter return
|
|
24
26
|
"no-class-assign": [ "error" ], // Não atribua variável com nome classe
|
|
@@ -32,6 +34,7 @@ module.exports = {
|
|
|
32
34
|
"no-import-assign": [ "error" ], // Não reatribua variável de import
|
|
33
35
|
"no-loss-of-precision": [ "error" ], // Não permite numero que pode quebrar precisão
|
|
34
36
|
"no-unreachable-loop": [ "error" ], // Não permite unreachable loop,
|
|
37
|
+
"no-useless-assignment": [ "error" ], // Não reatribua uma variável se n for usada em sequencia,
|
|
35
38
|
"import/no-self-import": [ "error" ], // Não import o próprio arquivo
|
|
36
39
|
"import/export": [ "error" ], // Não permite export de mesmo nome
|
|
37
40
|
"import/no-unresolved": [
|
|
@@ -41,10 +44,7 @@ module.exports = {
|
|
|
41
44
|
"caseSensitiveStrict": true,
|
|
42
45
|
},
|
|
43
46
|
], // Import não encontrado
|
|
44
|
-
"import/named": [ "error", { "commonjs": true } ], // Import apenas objetos existente no modulo
|
|
45
|
-
"sonar/argument-type": [ "error" ], // Caso a tipagem no arquivo Js não bate
|
|
46
|
-
"sonar/anchor-precedence": [ "error" ], // Valida melhora de regex
|
|
47
|
-
"sonar/different-types-comparison": [ "error" ], // Não compare tipos diferentes
|
|
47
|
+
// "import/named": [ "error", { "commonjs": true } ], // Import apenas objetos existente no modulo // ? slower
|
|
48
48
|
"no-invalid-this": [ "error" ], // Desliga invalid this Js
|
|
49
49
|
"no-this-before-super": [ "error" ], // Não faça this antes super
|
|
50
50
|
"no-obj-calls": [ "error" ], // Não execute objetos
|
|
@@ -56,24 +56,33 @@ module.exports = {
|
|
|
56
56
|
"no-useless-return": [ "error" ], // Não permite retornos desnecessários
|
|
57
57
|
"no-useless-escape": [ "error" ], // Não permite usar escape desnecessárias
|
|
58
58
|
"no-useless-rename": [ "error" ], // Disable Rename desnecessários
|
|
59
|
-
"no-unused-expressions": [
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
"no-unused-expressions": [
|
|
60
|
+
"error",
|
|
61
|
+
{
|
|
62
|
+
allowTernary: true,
|
|
63
|
+
allowShortCircuit: true,
|
|
64
|
+
enforceForJSX: true,
|
|
65
|
+
},
|
|
66
|
+
],
|
|
64
67
|
"no-use-before-define": [
|
|
65
68
|
"error",
|
|
66
69
|
{
|
|
67
70
|
"classes": true,
|
|
68
71
|
},
|
|
69
72
|
], // Não use antes de definir
|
|
70
|
-
"sonar/in-operator-type-error": [ "error" ], // Não use IN em tipos primitivos
|
|
71
|
-
"sonar/inconsistent-function-call": [ "error" ], // Não use IN em tipos primitivos
|
|
72
|
-
"sonar/no-associative-arrays": [ "error" ], // Não atribua a um array
|
|
73
|
-
"sonar/no-same-argument-assert": [ "error" ], // Não faça assert com mesmo param
|
|
74
|
-
"sonar/no-useless-intersection": [ "error" ], // Não faça assert com mesmo param
|
|
75
|
-
"sonar/stateful-regex": [ "error" ], // Não faça regex global mais de 1 vez
|
|
76
|
-
"sonar/super-invocation": [ "error" ], // Não faça mais de 1 super
|
|
77
73
|
"regexp/no-misleading-capturing-group": [ "error" ], // Não use grupos de captura enganosos
|
|
74
|
+
"sonarjs/bitwise-operators": [ "error" ], // Bloqueia operadores bitwise em if
|
|
75
|
+
"sonarjs/different-types-comparison": [ "error" ], // Bloqueia comparação ed tipos diferentes com ===
|
|
76
|
+
"sonarjs/existing-groups": [ "error" ], // Impede replace regex impossíveis
|
|
77
|
+
"sonarjs/fixme-tag": [ "error" ], // Corrigir comentário de fix
|
|
78
|
+
"sonarjs/in-operator-type-error": [ "error" ], // Use IN corretamente
|
|
79
|
+
"sonarjs/index-of-compare-to-positive-number": [ "error" ], // Index of zero é valido
|
|
80
|
+
"sonarjs/no-associative-arrays": [ "error" ], // Não crie key com nome no array
|
|
81
|
+
"sonarjs/no-case-label-in-switch": [ "error" ], // Não crie label dentro do switch case
|
|
82
|
+
"sonarjs/no-collection-size-mischeck": [ "error" ], // Não verifique tamanho de array incorretamente
|
|
83
|
+
"sonarjs/no-duplicate-in-composite": [ "error" ], // Não concatene 2 tipos iguais
|
|
84
|
+
"sonarjs/no-hook-setter-in-body": [ "error" ], // Não faça loop infinito react
|
|
85
|
+
"sonarjs/no-literal-call": [ "error" ], // Não faça um tipo literal de função
|
|
86
|
+
"sonarjs/no-useless-react-setstate": [ "error" ], // Botão react sem efeito state
|
|
78
87
|
},
|
|
79
88
|
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
rules: {
|
|
3
|
+
"no-extra-bind": [ "error" ], // Não use bind desnecessário
|
|
4
|
+
"no-global-assign": [ "error" ], // Não atribua propriedade globais
|
|
5
|
+
"require-yield": [ "error" ], // Coloque yield em generator functions
|
|
6
|
+
"no-dupe-else-if": [ "error" ], // Não permite elseif duplicado
|
|
7
|
+
"no-useless-backreference": [ "error" ], // Bloqueia regex com referencia inútil
|
|
8
|
+
"no-unused-private-class-members": [ "error" ], // Métodos privados não sendo usados
|
|
9
|
+
"no-constant-binary-expression": [ "error" ], // Desabilita expressões comparação q afeta o valor da variável
|
|
10
|
+
"no-unneeded-ternary": [ "error" ], // Ternário Desnecessários
|
|
11
|
+
"no-unsafe-negation": [ "error" ], // Não permite negações invalidas
|
|
12
|
+
// "import/no-cycle": [ "error" ], // Não faça import circular
|
|
13
|
+
"unicorn/no-unused-properties": [ "warn" ], // Informe caso um campo não esteja sendo usado.
|
|
14
|
+
"unicorn/text-encoding-identifier-case": [ "error" ], // Encode de texto no formato correto
|
|
15
|
+
"no-empty-static-block": [ "error" ], // Não faça static{ } vazio
|
|
16
|
+
"no-fallthrough": [ "error" ], // Se misturar 2 cases no switch coloque comentário // falls through
|
|
17
|
+
"no-useless-concat": [ "error" ], // Desabilita concatenação de strings desnecessárias ex: "a" + "b"
|
|
18
|
+
"no-octal-escape": [ "error" ], // Não use 071
|
|
19
|
+
"no-octal": [ "error" ], // Use \ em unicode e hexadecimal
|
|
20
|
+
"no-case-declarations": [ "error" ], // Use chaves em caso de declaração em switch case
|
|
21
|
+
"regex/invalid": [
|
|
22
|
+
"error",
|
|
23
|
+
[
|
|
24
|
+
{
|
|
25
|
+
"id": "EmptyImport",
|
|
26
|
+
"message": "Empty import is not allowed",
|
|
27
|
+
"regex": String.raw`import(.*{\s*}.*)from.*\n`,
|
|
28
|
+
"replacement": {
|
|
29
|
+
"function":
|
|
30
|
+
String.raw`return $[1].replace(/\s/g, '') !== '{}' ? $[0].replace(/,?\s{\s*}\s/, ' ') : ''`,
|
|
31
|
+
},
|
|
32
|
+
}, // BLoqueia import vazios
|
|
33
|
+
],
|
|
34
|
+
],
|
|
35
|
+
"for-direction": [ "error" ], // Não faça for contador infinito.
|
|
36
|
+
"sonarjs/no-all-duplicated-branches": [ "error" ], // Não faça condições duplicadas
|
|
37
|
+
"sonarjs/no-element-overwrite": [ "error" ], // Não sobrescreva variável de forma desnecessária
|
|
38
|
+
"sonarjs/no-empty-collection": [ "error" ], // Não interaja com array vazios
|
|
39
|
+
"sonarjs/no-extra-arguments": [ "error" ], // Não passe argumentos extra
|
|
40
|
+
"sonarjs/no-identical-expressions": [ "error" ], // Não faça condições iguais
|
|
41
|
+
"sonarjs/no-ignored-return": [ "error" ], // Use retorno das funções
|
|
42
|
+
"sonarjs/no-use-of-empty-return-value": [ "error" ], // Não atribua void em uma variável
|
|
43
|
+
"sonarjs/no-duplicate-string": [ "error" ], // Não permite string duplicadas
|
|
44
|
+
"sonarjs/no-duplicated-branches": [ "error" ], // Em vez de if else igual faça um ||
|
|
45
|
+
"sonarjs/no-gratuitous-expressions": [ "error" ], // Não faça a mesma condição dentro de outra
|
|
46
|
+
"sonarjs/no-unused-collection": [ "error" ], // Não faça array que não é usado
|
|
47
|
+
"sonarjs/anchor-precedence": [ "error" ], // Não faça array que não é usado
|
|
48
|
+
"sonarjs/arguments-order": [ "error" ], // Impede paramentos fora de ordem
|
|
49
|
+
"sonarjs/argument-type": [ "error" ], // Passe o tipo correto de cada argumento
|
|
50
|
+
"sonarjs/array-callback-without-return": [ "error" ], // Precisa de return itens de array
|
|
51
|
+
"sonarjs/generator-without-yield": [ "error" ], // Função generator yield teve ter retorno
|
|
52
|
+
"sonarjs/jsx-no-leaked-render": [ "error" ], // Valida Print em JSX de boolean
|
|
53
|
+
"sonarjs/no-alphabetical-sort": [ "error" ], // Não ordene em ordem alfabética
|
|
54
|
+
"sonarjs/no-array-delete": [ "error" ], // Não use delete no array
|
|
55
|
+
"sonarjs/no-commented-code": [ "error" ], // Não use código comentado
|
|
56
|
+
"sonarjs/no-empty-after-reluctant": [ "error" ], // Regex n pode resultar em string vazia
|
|
57
|
+
"sonarjs/no-equals-in-for-termination": [ "error" ], // Previne for infinitos
|
|
58
|
+
"sonarjs/no-identical-conditions": [ "error" ], // Não faça condições iguais em if e elseif
|
|
59
|
+
"sonarjs/no-implicit-global": [ "error" ], // Não acesse variável global inexistente no arquivo
|
|
60
|
+
"sonarjs/no-in-misuse": [ "error" ], // Use includes ao indez de in em array
|
|
61
|
+
"sonarjs/no-misleading-array-reverse": [ "error" ], // Não salve array revert em variáveis
|
|
62
|
+
"sonarjs/no-misleading-character-class": [ "error" ], // Regex replace possíveis bugs
|
|
63
|
+
"sonarjs/no-try-promise": [ "error" ], // TryCatch apenas com promise sem await dentro
|
|
64
|
+
"sonarjs/no-uniq-key": [ "error" ], // Key react consistent
|
|
65
|
+
"sonarjs/no-useless-intersection": [ "error" ], // Não Coloque coisas desnecessárias nos types
|
|
66
|
+
"sonarjs/null-dereference": [ "error" ], // Não acesse null como object
|
|
67
|
+
"sonarjs/operation-returning-nan": [ "error" ], // Valida Matemática dado errado
|
|
68
|
+
"sonarjs/non-number-in-arithmetic-expression": [ "error" ], // Valida Matemática dado errado
|
|
69
|
+
"sonarjs/reduce-initial-value": [ "error" ], // Reduce tem q ter o segundo parâmetro
|
|
70
|
+
"sonarjs/stateful-regex": [ "error" ], // Valida regex podem ser sempre false
|
|
71
|
+
"sonarjs/super-invocation": [ "error" ], // Não chama super mais de 1 vez
|
|
72
|
+
"sonarjs/table-header": [ "error" ], // Table html deve ter header
|
|
73
|
+
"sonarjs/table-header-reference": [ "error" ], // Table html deve ter header
|
|
74
|
+
"unicorn/consistent-existence-index-check": [ "error" ], // Valide o indexOf() de forma correta
|
|
75
|
+
"unicorn/consistent-date-clone": [ "error" ], // Se clonar uma data clone o objeto completo
|
|
76
|
+
"unicorn/consistent-assert": [ "error" ], // Use assert.ok ao invés de assert(value)
|
|
77
|
+
"unicorn/no-unnecessary-array-splice-count": [ "error" ], // N faça splice com .length ele ja pega tudo
|
|
78
|
+
"unicorn/no-useless-error-capture-stack-trace": [ "error" ], // N faça Error.captureStackTrace se n precisa
|
|
79
|
+
"unicorn/no-unnecessary-polyfills": [ "error" ], // Valida recursos suportados
|
|
80
|
+
"regexp/no-extra-lookaround-assertions": [ "error" ], // Look around invalido em regex
|
|
81
|
+
"n/no-unsupported-features/es-builtins": [ "error", { "ignores": [] } ],
|
|
82
|
+
"n/no-unsupported-features/es-syntax": [ "error", { "ignores": [] } ],
|
|
83
|
+
"n/no-unsupported-features/node-builtins": [ "error", { "ignores": [] } ],
|
|
84
|
+
},
|
|
85
|
+
};
|