eslint-plugin-sonar-config 1.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 +66 -0
- package/index.js +15 -0
- package/package.json +22 -0
- package/rules/no-nested-ternary.js +35 -0
package/README.MD
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# eslint-plugin-sonar-config
|
|
2
|
+
|
|
3
|
+
Plugin ESLint com regras customizadas para qualidade de código em projeto com SonarQube implementado.
|
|
4
|
+
|
|
5
|
+
## Instalação
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install --save-dev eslint-plugin-sonar-config
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Uso
|
|
12
|
+
|
|
13
|
+
### Configuração Básica
|
|
14
|
+
|
|
15
|
+
No seu `.eslintrc.js` ou `.eslintrc.json`:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"plugins": ["sonar-config"],
|
|
20
|
+
"rules": {
|
|
21
|
+
"sonar-config/no-nested-ternary": "error"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Usando Configuração Recomendada
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"extends": ["plugin:sonar-config/recommended"]
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Regras Disponíveis
|
|
35
|
+
|
|
36
|
+
### `no-nested-ternary`
|
|
37
|
+
|
|
38
|
+
Proíbe o uso de ternários aninhados em código de produção.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Integração com a CLI
|
|
43
|
+
|
|
44
|
+
Este plugin foi desenvolvido para ser usado automaticamente pela CLI de qualidade de código Liferay. A CLI adiciona e configura este plugin automaticamente em novos projetos.
|
|
45
|
+
|
|
46
|
+
## Desenvolvimento
|
|
47
|
+
|
|
48
|
+
### Estrutura do Projeto
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
eslint-plugin-sonar-config/
|
|
52
|
+
├── index.js # Entry point
|
|
53
|
+
├── package.json
|
|
54
|
+
├── README.md
|
|
55
|
+
└── rules/
|
|
56
|
+
├── no-console-in-production.js
|
|
57
|
+
├── require-jsdoc-comments.js
|
|
58
|
+
└── no-unused-liferay-imports.js
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Testando Localmente
|
|
62
|
+
|
|
63
|
+
1. Clone o repositório
|
|
64
|
+
2. Execute `npm link` na pasta do plugin
|
|
65
|
+
3. No seu projeto de teste, execute `npm link eslint-plugin-sonar-config`
|
|
66
|
+
4. Configure o `.eslintrc` e teste as regras
|
package/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const noNestedTernary = require("./rules/no-nested-ternary");
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
rules: {
|
|
5
|
+
"no-nested-ternary": noNestedTernary,
|
|
6
|
+
},
|
|
7
|
+
configs: {
|
|
8
|
+
recommended: {
|
|
9
|
+
plugins: ["sonar-config"],
|
|
10
|
+
rules: {
|
|
11
|
+
"sonar-config/no-nested-ternary": "error",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "eslint-plugin-sonar-config",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "ESLint plugin com regras customizadas para melhorar a qualidade de código em projeto com Sonar implementado.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"type": "commonjs",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"eslint",
|
|
9
|
+
"eslintplugin",
|
|
10
|
+
"eslint-plugin",
|
|
11
|
+
"sonar",
|
|
12
|
+
"code-quality"
|
|
13
|
+
],
|
|
14
|
+
"author": "devjpedro",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"eslint": "8.57.0"
|
|
18
|
+
},
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": "16.0.0"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
meta: {
|
|
3
|
+
type: "problem",
|
|
4
|
+
docs: {
|
|
5
|
+
description: "Proíbe ternários aninhados",
|
|
6
|
+
},
|
|
7
|
+
messages: {
|
|
8
|
+
nested:
|
|
9
|
+
"Ternário aninhado encontrado. Evite ternários dentro de ternários.",
|
|
10
|
+
},
|
|
11
|
+
schema: [],
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
create(context) {
|
|
15
|
+
return {
|
|
16
|
+
ConditionalExpression(node) {
|
|
17
|
+
const { consequent, alternate } = node;
|
|
18
|
+
|
|
19
|
+
if (consequent && consequent.type === "ConditionalExpression") {
|
|
20
|
+
context.report({
|
|
21
|
+
node: consequent,
|
|
22
|
+
messageId: "nested",
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (alternate && alternate.type === "ConditionalExpression") {
|
|
27
|
+
context.report({
|
|
28
|
+
node: alternate,
|
|
29
|
+
messageId: "nested",
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
};
|