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 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
+ };