@mocoto/mahoraga 0.15.0 → 0.15.2
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/Docs/.obsidian/app.json +7 -0
- package/Docs/.obsidian/appearance.json +8 -0
- package/Docs/.obsidian/community-plugins.json +28 -0
- package/Docs/.obsidian/core-plugins-migration.json +18 -0
- package/Docs/.obsidian/core-plugins.json +73 -0
- package/Docs/.obsidian/graph.json +22 -0
- package/Docs/.obsidian/workspace.json +196 -0
- package/Docs/01-arquitetura/ADR-001-estrutura-testes.md +31 -0
- package/Docs/01-arquitetura/_index.md +152 -0
- package/Docs/02-componentes/_index.md +294 -0
- package/Docs/02-componentes/configuracao.md +110 -0
- package/Docs/02-componentes/supressao-inline.md +88 -0
- package/Docs/03-guias/_index.md +173 -0
- package/Docs/03-guias/contribuindo.md +71 -0
- package/Docs/03-guias/testes.md +133 -0
- package/Docs/04-glossario/_index.md +29 -0
- package/Docs/04-glossario/termos.md +247 -0
- package/Docs/05-referencias/_index.md +88 -0
- package/Docs/06-feedbacks/feedback.md +74 -0
- package/Docs/Sem t/303/255tulo.base" +3 -0
- package/Docs/Sem t/303/255tulo.md +0 -0
- package/Docs/_home.md +140 -0
- package/Docs/partials/AVISO-PROVENIENCIA.md +3 -0
- package/Docs/templates/ADR.md +24 -0
- package/Docs/templates/componente.md +34 -0
- package/Docs/templates/guia.md +28 -0
- package/README.md +269 -26
- package/dist/analysts/detectors/detector-bugs-ml.js +5 -0
- package/dist/analysts/js-ts/registrar.js +1 -1
- package/dist/analysts/plugins/detector-markdown.js +2 -2
- package/dist/analysts/react/analysts/analyst-react-hooks.js +30 -15
- package/dist/analysts/react/analysts/analyst-react.js +11 -2
- package/dist/analysts/react/detectors/detector-react-best-practices.js +7 -4
- package/dist/caretakers/caretaker-imports.js +0 -9
- package/dist/cli/commands/command-github-actions.js +0 -27
- package/dist/cli/diagnostic/filters.js +1 -4
- package/dist/core/config/config.js +2 -3
- package/dist/core/config/excludes-padrao.js +3 -2
- package/dist/core/messages/en/cli/cli-command-github-actions-messages.js +0 -5
- package/dist/core/messages/en/github/index.js +0 -1
- package/dist/core/messages/ja/cli/cli-command-github-actions-messages.js +0 -5
- package/dist/core/messages/ja/github/index.js +0 -1
- package/dist/core/messages/pt/cli/cli-command-github-actions-messages.js +0 -5
- package/dist/core/messages/pt/github/index.js +0 -1
- package/dist/core/messages/zh/cli/cli-command-github-actions-messages.js +0 -5
- package/dist/core/messages/zh/github/index.js +0 -1
- package/dist/core/registry/file-registry.js +1 -1
- package/dist/node.loader.js +0 -2
- package/dist/reports/report-structure.js +2 -8
- package/dist/shared/formatters/formatters/commons.js +36 -10
- package/dist/shared/formatters/formatters/shell.js +6 -3
- package/dist/shared/helpers/magic-constants-whitelist.js +14 -1
- package/dist/types/analysts/index.js +1 -1
- package/dist/types/processing/filters.js +1 -4
- package/package.json +31 -32
- package/dist/app/github.js +0 -14
- package/dist/app/index.js +0 -1
- package/dist/core/messages/en/github/github-app-messages.js +0 -9
- package/dist/core/messages/ja/github/github-app-messages.js +0 -9
- package/dist/core/messages/pt/github/github-app-messages.js +0 -9
- package/dist/core/messages/zh/github/github-app-messages.js +0 -9
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
---
|
|
2
|
+
Proveniência e Autoria: Este documento integra o projeto @mocoto/mahoraga (licença MIT-0).
|
|
3
|
+
tags: [moc, componentes]
|
|
4
|
+
created: 2026-07-24
|
|
5
|
+
updated: 2026-07-25
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Componentes
|
|
9
|
+
|
|
10
|
+
## src/bin/
|
|
11
|
+
|
|
12
|
+
| Arquivo | Função |
|
|
13
|
+
|---------|--------|
|
|
14
|
+
| `index.ts` | Entry point. Loader ESM, handlers de erro, registro de comandos |
|
|
15
|
+
|
|
16
|
+
## src/cli/
|
|
17
|
+
|
|
18
|
+
Interface de linha de comando. Commander.js com 27 comandos.
|
|
19
|
+
|
|
20
|
+
### commands/
|
|
21
|
+
|
|
22
|
+
| Arquivo | Comando | Descrição |
|
|
23
|
+
|---------|---------|-----------|
|
|
24
|
+
| `command-diagnostic.ts` | `diagnosticar` / `diag` | Análise completa do projeto |
|
|
25
|
+
| `command-guardian.ts` | `guardian` | Monitoramento de integridade GPG |
|
|
26
|
+
| `command-formatters.ts` | `formatters` | Gerenciamento de formatadores |
|
|
27
|
+
| `command-format.ts` | `formatar` | Formatação automática |
|
|
28
|
+
| `command-otimizar-svg.ts` | `otimizar-svg` | Otimização de SVGs |
|
|
29
|
+
| `command-podar.ts` | `podar` | Remoção de arquivos órfãos |
|
|
30
|
+
| `command-atualizar.ts` | `atualizar` | Auto-update |
|
|
31
|
+
| `command-fix-types.ts` | `fix-types` | Correção de tipos inseguros |
|
|
32
|
+
| `command-analistas.ts` | `analistas` | Listagem de analistas/detectores |
|
|
33
|
+
| `command-metricas.ts` | `metricas` | Métricas de execução |
|
|
34
|
+
| `command-licencas.ts` | `licencas` | Scan de licenças e notices |
|
|
35
|
+
| `command-vulnerabilities.ts` | `vulnerabilidades` | Scan de vulnerabilities |
|
|
36
|
+
| `command-plugins.ts` | `plugins` | Gerenciamento de plugins |
|
|
37
|
+
| `command-marketplace.ts` | `marketplace` | Marketplace de analistas |
|
|
38
|
+
| `command-imports.ts` | `imports` | Gerenciamento de aliases |
|
|
39
|
+
| `command-barrels.ts` | `barrels` | Gerenciamento de index.ts |
|
|
40
|
+
| `command-names.ts` | `names` | Extração/renomeação de variáveis |
|
|
41
|
+
| `command-reverter.ts` | `reverter` | Rollback de movimentações |
|
|
42
|
+
| `command-compliance.ts` | `compliance` | Relatórios ISO 27001, SOC 2 |
|
|
43
|
+
| `command-convert.ts` | `convert` / `conv` | Conversão entre CI/CD |
|
|
44
|
+
| `command-github-actions.ts` | `github-actions` | Análise GitHub Actions |
|
|
45
|
+
| `command-gitlab-ci.ts` | `gitlab-ci` | Análise GitLab CI |
|
|
46
|
+
| `command-circleci.ts` | `circleci` | Análise CircleCI |
|
|
47
|
+
| `command-jenkins.ts` | `jenkins` | Análise Jenkins |
|
|
48
|
+
| `command-azure.ts` | `azure` | Análise Azure Pipelines |
|
|
49
|
+
| `command-perf.ts` | `perf` | Snapshots de performance |
|
|
50
|
+
|
|
51
|
+
### Outros diretórios
|
|
52
|
+
|
|
53
|
+
| Diretório | Conteúdo |
|
|
54
|
+
|-----------|----------|
|
|
55
|
+
| `diagnostic/` | Opções e processamento de diagnóstico |
|
|
56
|
+
| `handlers/` | Handlers auxiliares (vulnerabilidades, etc.) |
|
|
57
|
+
| `helpers/` | Exit codes, processPatternList, sair |
|
|
58
|
+
| `options/` | Opções compartilhadas entre comandos |
|
|
59
|
+
|
|
60
|
+
## src/core/
|
|
61
|
+
|
|
62
|
+
Motor central do sistema.
|
|
63
|
+
|
|
64
|
+
### execution/
|
|
65
|
+
|
|
66
|
+
Scanner principal, registry de arquivos, executor de análise, cache (analysis, AST), inquisitor, linguagens, parse-errors, schema, structure-json, worker pool integration.
|
|
67
|
+
|
|
68
|
+
### config/
|
|
69
|
+
|
|
70
|
+
Configuração central: defaults, scoring, conventions, excludes, filters, paths, security, chalk-safe, include-exclude, traverse, format, auto-fix.
|
|
71
|
+
|
|
72
|
+
### parsing/
|
|
73
|
+
|
|
74
|
+
Parsers baseados em Babel (babel-narrow) + parsers por linguagem em `langs/`. Filtros, plugins, utils.
|
|
75
|
+
|
|
76
|
+
### messages/
|
|
77
|
+
|
|
78
|
+
Sistema de i18n organizado por idioma (`pt/`, `en/`, `zh/`, `ja/`) e por domínio (`cli/`, `github/`, `analysts/`, etc.). Cada pasta contém subpastas para cada módulo que possui mensagens. Ícones compartilhados em `icons/`.
|
|
79
|
+
|
|
80
|
+
### workers/
|
|
81
|
+
|
|
82
|
+
Worker pool para processamento paralelo. Gerencia fila de tarefas, workers, resultados.
|
|
83
|
+
|
|
84
|
+
### Correção e Formatação
|
|
85
|
+
|
|
86
|
+
- `corrections/`: Auto-fix engine
|
|
87
|
+
- `formatters/`: Registro de formatadores built-in
|
|
88
|
+
|
|
89
|
+
### Utilitários
|
|
90
|
+
|
|
91
|
+
- `registry/`: File registry + paths
|
|
92
|
+
- `reporting/`: Default reporter
|
|
93
|
+
- `runtime/`: Node adapter
|
|
94
|
+
- `schema/`: Schema versioning
|
|
95
|
+
- `utils/`: chalk-safe, exec-safe, import-safe, type declarations
|
|
96
|
+
|
|
97
|
+
## src/analysts/
|
|
98
|
+
|
|
99
|
+
Sistema de análise multi-linguagem e multi-CI/CD.
|
|
100
|
+
|
|
101
|
+
### Detectores Gerais (`detectors/`)
|
|
102
|
+
|
|
103
|
+
12 detectores especializados:
|
|
104
|
+
- **architecture**: Análise de estrutura arquitetural
|
|
105
|
+
- **bugs-ml**: Detecção de bugs via ML (8 padrões, pontuação Bayesiana)
|
|
106
|
+
- **code-fragile**: Código frágil e propenso a erros
|
|
107
|
+
- **dependencies**: Análise de dependências
|
|
108
|
+
- **duplications**: Detecção de duplicação
|
|
109
|
+
- **monorepo**: Suporte a monorepos (pnpm-workspace, lerna, nx, turbo)
|
|
110
|
+
- **performance**: Problemas de performance
|
|
111
|
+
- **phantoms**: Arquivos fantasma (não importados)
|
|
112
|
+
- **recommendation**: Recomendações de boas práticas
|
|
113
|
+
- **security**: Problemas de segurança
|
|
114
|
+
- **structure**: Problemas estruturais
|
|
115
|
+
|
|
116
|
+
### Infraestrutura
|
|
117
|
+
|
|
118
|
+
| Diretório | Função |
|
|
119
|
+
|-----------|--------|
|
|
120
|
+
| `registry/` | Registro central e autodiscovery |
|
|
121
|
+
| `plugins/` | Plugin system (analyst-formatter, detector-documentation, detector-markdown, detector-node) |
|
|
122
|
+
| `corrections/` | Quick-fixes, auto-fix, alias-imports, pruning, barrels, type-safety, map-reversion, scoring |
|
|
123
|
+
| `converters/` | Conversão entre plataformas CI/CD |
|
|
124
|
+
| `scorers/` | Engine de pontuação |
|
|
125
|
+
| `strategists/` | Archetypes, suggestions contextuais, operator-structure |
|
|
126
|
+
| `architects/` | Análise de estrutura de projetos, archetypes, diagnostic, signals |
|
|
127
|
+
|
|
128
|
+
### Analisadores por Linguagem
|
|
129
|
+
|
|
130
|
+
Cada um com estrutura `analysts/`, `detectors/`, `corrections/`, `scorers/`:
|
|
131
|
+
|
|
132
|
+
| Linguagem | Parser | Implementação |
|
|
133
|
+
|-----------|--------|---------------|
|
|
134
|
+
| JavaScript/TypeScript | Babel (AST) | `js-ts/` |
|
|
135
|
+
| React/JSX | Babel | `react/` |
|
|
136
|
+
| CSS | postcss | `css/` + `css/plugins/` |
|
|
137
|
+
| CSS-in-JS | postcss | `css-in-js/` + `plugins/` |
|
|
138
|
+
| HTML | htmlparser2 | `html/` |
|
|
139
|
+
| SVG | heuristic | `svg/` |
|
|
140
|
+
| XML | fast-xml-parser | `xml/` |
|
|
141
|
+
| Tailwind CSS | heuristic | `tailwind/` + `plugins/` |
|
|
142
|
+
| Python | heuristic | `python/` |
|
|
143
|
+
| Shell | heuristic | `shell/` |
|
|
144
|
+
| SQL | heuristic | `sql/` |
|
|
145
|
+
| Go | heuristic | `go/` |
|
|
146
|
+
| Rust | heuristic | `rust/` |
|
|
147
|
+
| PHP | heuristic | `php/` |
|
|
148
|
+
|
|
149
|
+
### Analisadores de CI/CD
|
|
150
|
+
|
|
151
|
+
Cada um com `analysts/`, `detectors/`, `corrections/`, `reports/`, `scorers/`:
|
|
152
|
+
|
|
153
|
+
| Plataforma | Diretório |
|
|
154
|
+
|------------|-----------|
|
|
155
|
+
| GitHub Actions | `github-actions/` |
|
|
156
|
+
| GitLab CI | `gitlab-ci/` |
|
|
157
|
+
| CircleCI | `circleci/` |
|
|
158
|
+
| Jenkins | `jenkins/` |
|
|
159
|
+
| Azure Pipelines | `azure-pipelines/` |
|
|
160
|
+
|
|
161
|
+
## src/guardian/
|
|
162
|
+
|
|
163
|
+
Pipeline de integridade com assinatura GPG (Ed25519).
|
|
164
|
+
|
|
165
|
+
| Arquivo | Função |
|
|
166
|
+
|---------|--------|
|
|
167
|
+
| `baseline.ts` | Gerenciamento de baselines (criação, carga, salvamento) |
|
|
168
|
+
| `constants.ts` | Constantes do sistema |
|
|
169
|
+
| `diff.ts` | Diferenças entre baseline e estado atual |
|
|
170
|
+
| `gpg.ts` | Assinatura e verificação GPG |
|
|
171
|
+
| `hash.ts` | Hashing de arquivos (xxhash) |
|
|
172
|
+
| `integrity.ts` | Verificação de integridade central |
|
|
173
|
+
| `records.ts` | Registros de auditoria |
|
|
174
|
+
| `result.ts` | Tipos de resultado |
|
|
175
|
+
| `sentinel.ts` | Monitoramento sentinel contínuo |
|
|
176
|
+
| `snapshot.ts` | Snapshots de integridade |
|
|
177
|
+
| `verifier.ts` | Verificador de integridade |
|
|
178
|
+
| `watcher-hidden.ts` | Watcher oculto para detecção de alterações |
|
|
179
|
+
|
|
180
|
+
## src/licenses/
|
|
181
|
+
|
|
182
|
+
Gestão de licenças SPDX.
|
|
183
|
+
|
|
184
|
+
| Arquivo | Função |
|
|
185
|
+
|---------|--------|
|
|
186
|
+
| `disclaimer.ts` | Adição/verificação de headers SPDX |
|
|
187
|
+
| `fs-utils.ts` | Utilitários de filesystem |
|
|
188
|
+
| `generate-notices.ts` | Geração de THIRD-PARTY-NOTICES.txt |
|
|
189
|
+
| `header-options.ts` | Opções de headers SPDX |
|
|
190
|
+
| `licenses.ts` | Scan de licenças em dependências |
|
|
191
|
+
| `normalizer.ts` | Normalização de nomes de licenças |
|
|
192
|
+
| `policy.ts` | Políticas de licença (checkLicenseStatus) |
|
|
193
|
+
| `scanner.ts` | Scanner de dependências |
|
|
194
|
+
| `types.ts` | Tipos do módulo |
|
|
195
|
+
| `spdx.d.ts` | Declaração de tipos SPDX |
|
|
196
|
+
|
|
197
|
+
## src/vulnerabilities/
|
|
198
|
+
|
|
199
|
+
Scan de vulnerabilidades.
|
|
200
|
+
|
|
201
|
+
| Arquivo | Função |
|
|
202
|
+
|---------|--------|
|
|
203
|
+
| `npm-audit.ts` | Integração com npm audit |
|
|
204
|
+
| `scanner.ts` | Scanner genérico |
|
|
205
|
+
| `vulnerabilities.ts` | Lógica principal de scan |
|
|
206
|
+
|
|
207
|
+
## src/caretakers/
|
|
208
|
+
|
|
209
|
+
Transformações automáticas no código fonte.
|
|
210
|
+
|
|
211
|
+
| Arquivo | Função |
|
|
212
|
+
|---------|--------|
|
|
213
|
+
| `caretaker-imports.ts` | Gestão de aliases de import |
|
|
214
|
+
| `imports.ts` | Lógica de imports |
|
|
215
|
+
| `imports-barrel.ts` | Gerenciamento de barrels (index.ts) |
|
|
216
|
+
| `map-reversion.ts` | Reversão de mapas de renomeação |
|
|
217
|
+
| `pruning.ts` | Poda de arquivos órfãos |
|
|
218
|
+
| `scoring.ts` | Pontuação de caretakers |
|
|
219
|
+
|
|
220
|
+
## src/reports/
|
|
221
|
+
|
|
222
|
+
Geração de relatórios.
|
|
223
|
+
|
|
224
|
+
| Arquivo/Diretório | Função |
|
|
225
|
+
|-------------------|--------|
|
|
226
|
+
| `advisor.ts` | Conselheiro de diagnóstico |
|
|
227
|
+
| `advisor-mahoraga.ts` | Conselheiro específico do mahoraga |
|
|
228
|
+
| `analise-async-patterns.ts` | Análise de padrões assíncronos |
|
|
229
|
+
| `async-analysis.ts` | Análise assíncrona |
|
|
230
|
+
| `compliance.ts` | Relatórios de compliance |
|
|
231
|
+
| `compliance/` | ISO 27001, SOC 2 mappers |
|
|
232
|
+
| `filter-smart.ts` | Filtro inteligente de dados |
|
|
233
|
+
| `fragmentation.ts` | Fragmentação de relatórios grandes |
|
|
234
|
+
| `generator-report.ts` | Gerador de relatórios |
|
|
235
|
+
| `processing.ts` | Processamento de relatórios |
|
|
236
|
+
| `reader.ts` | Leitor de relatórios salvos |
|
|
237
|
+
| `report-archetypes.ts` | Archetypes de relatórios |
|
|
238
|
+
| `report-caretaker-health.ts` | Saúde do caretaker |
|
|
239
|
+
| `report-patterns-usage.ts` | Padrões de uso |
|
|
240
|
+
| `report-pruning.ts` | Relatório de poda |
|
|
241
|
+
| `report-structure.ts` | Estrutura de relatórios |
|
|
242
|
+
| `report-type-definitions.ts` | Tipos de relatórios |
|
|
243
|
+
| `streaming.ts` | Streaming de dados |
|
|
244
|
+
| `streaming-report.ts` | Streaming NDJSON |
|
|
245
|
+
| `structure.ts` | Estrutura de relatórios |
|
|
246
|
+
|
|
247
|
+
## src/shared/
|
|
248
|
+
|
|
249
|
+
Utilitários compartilhados.
|
|
250
|
+
|
|
251
|
+
| Diretório/Arquivo | Função |
|
|
252
|
+
|-------------------|--------|
|
|
253
|
+
| `context-project.ts` | Contexto do projeto |
|
|
254
|
+
| `data-processing/` | Processamento de dados |
|
|
255
|
+
| `formatters/` | Motores de formatação (core, engines, formatters) com suporte a supressão inline via `@mahoraga-disable` |
|
|
256
|
+
| `helpers.ts` / `helpers/` | Helpers diversos |
|
|
257
|
+
| `impar.ts` | Utilitário ímpar |
|
|
258
|
+
| `imports.ts` | Imports compartilhados |
|
|
259
|
+
| `marketplace/` | Marketplace de analistas |
|
|
260
|
+
| `memory.ts` | Memória de conversação persistente |
|
|
261
|
+
| `persistence.ts` / `persistence/` | Persistência de estado |
|
|
262
|
+
| `plugins/` | Sistema de plugins |
|
|
263
|
+
| `structure.ts` | Estrutura de dados |
|
|
264
|
+
| `validation.ts` / `validation/` | Validação de dados |
|
|
265
|
+
|
|
266
|
+
## src/types/
|
|
267
|
+
|
|
268
|
+
Definições de tipos TypeScript. 14 namespaces:
|
|
269
|
+
|
|
270
|
+
| Namespace | Conteúdo |
|
|
271
|
+
|-----------|----------|
|
|
272
|
+
| `analysts/` | Tipos de analisadores e correções |
|
|
273
|
+
| `caretakers/` | Tipos de caretakers |
|
|
274
|
+
| `common/` | Tipos comuns |
|
|
275
|
+
| `core/` | Tipos do core (config, execution, messages, parsing) |
|
|
276
|
+
| `guardian/` | Tipos do guardian |
|
|
277
|
+
| `licenses/` | Tipos de licenças |
|
|
278
|
+
| `processing/` | Tipos de processamento |
|
|
279
|
+
| `project/` | Tipos de projeto |
|
|
280
|
+
| `scripts/` | Tipos de scripts |
|
|
281
|
+
| `sdk/` | Tipos do SDK |
|
|
282
|
+
| `shared/` | Tipos compartilhados |
|
|
283
|
+
| `structure/` | Tipos estruturais |
|
|
284
|
+
| `vulnerabilities/` | Tipos de vulnerabilidades |
|
|
285
|
+
|
|
286
|
+
## src/scripts/
|
|
287
|
+
|
|
288
|
+
| Arquivo | Função |
|
|
289
|
+
|---------|--------|
|
|
290
|
+
| `migrar-aliases.ts` | Script de migração de aliases de import |
|
|
291
|
+
|
|
292
|
+
## src/node.loader.ts
|
|
293
|
+
|
|
294
|
+
Loader ESM customizado que resolve path aliases (`@core/`, `@cli/`, `@analysts/`, `@types/`, etc.) em tempo de execução. ~160+ mapeamentos.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
Proveniência e Autoria: Este documento integra o projeto @mocoto/mahoraga (licença MIT-0).
|
|
3
|
+
tags: [componente]
|
|
4
|
+
status: aceito
|
|
5
|
+
created: 2026-07-25
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Configuração (`mahoraga.config.json`)
|
|
9
|
+
|
|
10
|
+
## Fluxo de Carregamento
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
mahoraga.config.json
|
|
14
|
+
│
|
|
15
|
+
▼
|
|
16
|
+
converterConfigSimplificada()
|
|
17
|
+
│ Transforma chaves amigáveis (ex: "exclude")
|
|
18
|
+
│ em chaves internas (ex: "INCLUDE_EXCLUDE_RULES")
|
|
19
|
+
▼
|
|
20
|
+
mesclarProfundo(config, resultado)
|
|
21
|
+
│ Deep merge com precedência:
|
|
22
|
+
│ 1. CLI flags / env vars
|
|
23
|
+
│ 2. mahoraga.config.json
|
|
24
|
+
│ 3. System defaults (configPadrao)
|
|
25
|
+
▼
|
|
26
|
+
config global (acessível via import { config } from '@core/config')
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Comportamento de Merge
|
|
30
|
+
|
|
31
|
+
O `mesclarProfundo` aplica regras diferentes por tipo:
|
|
32
|
+
|
|
33
|
+
| Tipo | Comportamento | Exemplo |
|
|
34
|
+
|------|--------------|---------|
|
|
35
|
+
| Objeto plano | Merge recursivo | `languages`, `rules`, `detectorMarkdown`, `autoFix` |
|
|
36
|
+
| Array (`exclude`) | **Aditivo**: mergeado com defaults do sistema | `["temp/**"]` adiciona aos defaults |
|
|
37
|
+
| Primitivo | Substitui o valor default | `locale: "en"` |
|
|
38
|
+
|
|
39
|
+
### Caso crítico: `exclude`
|
|
40
|
+
|
|
41
|
+
Diferentemente de outros sistemas, o campo `exclude` no `mahoraga.config.json` é **aditivo**:
|
|
42
|
+
|
|
43
|
+
```jsonc
|
|
44
|
+
{
|
|
45
|
+
"exclude": ["temp/**", "logs/**"]
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
O resultado final será: `[...defaultsDoSistema, "temp/**", "logs/**"]` — os defaults nunca são perdidos.
|
|
50
|
+
|
|
51
|
+
Isso é implementado em `converterConfigSimplificada` (`src/core/config/config.ts`), que faz o merge com `configPadrao.INCLUDE_EXCLUDE_RULES.globalExcludeGlob` antes de armazenar.
|
|
52
|
+
|
|
53
|
+
## Hierarquia de Precedência
|
|
54
|
+
|
|
55
|
+
1. **CLI flags**: `--include`, `--exclude` (máxima prioridade)
|
|
56
|
+
2. **Environment variables**: `MAHORAGA_*`
|
|
57
|
+
3. **`mahoraga.config.json** (ou `src/config.json` como fallback)
|
|
58
|
+
4. **System defaults** (`configPadrao` em `src/core/config/config.ts`)
|
|
59
|
+
|
|
60
|
+
## Arquitetura
|
|
61
|
+
|
|
62
|
+
### `src/core/config/config.ts`
|
|
63
|
+
|
|
64
|
+
- `configPadrao` — objeto com todos os valores default do sistema
|
|
65
|
+
- `config` — clone profundo de `configPadrao`, exportado como singleton
|
|
66
|
+
- `converterConfigSimplificada(raw)` — transforma chaves do usuário para formato interno
|
|
67
|
+
- `mesclarProfundo(target, src)` — merge recursivo com proteção prototype pollution
|
|
68
|
+
- `inicializarConfigDinamica()` — carrega e mergeia config do arquivo + env + CLI
|
|
69
|
+
|
|
70
|
+
### `src/core/config/excludes-padrao.ts`
|
|
71
|
+
|
|
72
|
+
- `EXCLUDES_PADRAO` — categorias de exclusão por tipo de projeto
|
|
73
|
+
- `getExcludesRecomendados(tipo)` — obtém defaults baseados no tipo de projeto detectado
|
|
74
|
+
- `mesclarConfigExcludes(usuario, tipo)` — merge dos excludes do usuário com defaults
|
|
75
|
+
- `isPadraoExclusaoSeguro(padrao)` — evita padrões perigosos como `**/*`
|
|
76
|
+
|
|
77
|
+
## Componentes Relacionados
|
|
78
|
+
|
|
79
|
+
- `src/core/config/include-exclude.ts` — avaliação de include/exclude via micromatch
|
|
80
|
+
- `src/shared/helpers/suppressao.ts` — supressão inline via `@mahoraga-disable`
|
|
81
|
+
- `src/shared/helpers/rule-config.ts` — configuração por regra (`rules.nome-da-regra.exclude`)
|
|
82
|
+
|
|
83
|
+
## Exemplo Completo
|
|
84
|
+
|
|
85
|
+
```jsonc
|
|
86
|
+
{
|
|
87
|
+
"locale": "pt",
|
|
88
|
+
"languages": {
|
|
89
|
+
"typescript": true,
|
|
90
|
+
"javascript": true,
|
|
91
|
+
"shell": true
|
|
92
|
+
},
|
|
93
|
+
"exclude": ["temp/**"],
|
|
94
|
+
"suppress": {
|
|
95
|
+
"paths": ["**/tests/**"],
|
|
96
|
+
"severity": { "no-console": "warning" }
|
|
97
|
+
},
|
|
98
|
+
"rules": {
|
|
99
|
+
"ml-magic-numbers": {
|
|
100
|
+
"severity": "off"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"detectorMarkdown": {
|
|
104
|
+
"checkReferences": false,
|
|
105
|
+
"whitelist": {
|
|
106
|
+
"dirs": ["Docs"]
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
Proveniência e Autoria: Este documento integra o projeto @mocoto/mahoraga (licença MIT-0).
|
|
3
|
+
tags: [componente]
|
|
4
|
+
status: aceito
|
|
5
|
+
created: 2026-07-25
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Supressão Inline (`@mahoraga-disable`)
|
|
9
|
+
|
|
10
|
+
## Propósito
|
|
11
|
+
|
|
12
|
+
Permite que o usuário desabilite analistas e formatadores em linhas ou blocos específicos do código fonte, via comentários inline. Evita falsos positivos e protege trechos que não devem ser modificados.
|
|
13
|
+
|
|
14
|
+
## Arquitetura
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
Código fonte com @mahoraga-disable
|
|
18
|
+
│
|
|
19
|
+
▼
|
|
20
|
+
suppressao.ts::extrairSupressoes(src)
|
|
21
|
+
│
|
|
22
|
+
▼
|
|
23
|
+
RegrasSuprimidas { porLinha: Map<line, Set<rule>>, blocosAtivos: Set<rule> }
|
|
24
|
+
│
|
|
25
|
+
├──► Analysts: analyst-wrapper.ts::filtrarOcorrenciasSuprimidas()
|
|
26
|
+
│
|
|
27
|
+
└──► Formatter: commons.ts::extrairLinhasProtegidasFormatador(src)
|
|
28
|
+
│
|
|
29
|
+
▼
|
|
30
|
+
Set<number> (linhas protegidas)
|
|
31
|
+
│
|
|
32
|
+
▼
|
|
33
|
+
collapseRepeatedPunct(code, protectedLines)
|
|
34
|
+
fixSpacingAroundPunct(code, protectedLines)
|
|
35
|
+
normalizeRelationalOperators(code, protectedLines)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Componentes
|
|
39
|
+
|
|
40
|
+
### `src/shared/helpers/suppressao.ts`
|
|
41
|
+
|
|
42
|
+
Core do sistema. Parseia comentários `@mahoraga-disable` no código e retorna `RegrasSuprimidas`.
|
|
43
|
+
|
|
44
|
+
**Exporta:**
|
|
45
|
+
- `extrairSupressoes(src)` — analisa o código e retorna as supressões
|
|
46
|
+
- `isRegraSuprimida(regra, linha, supressoes)` — verifica se uma regra está suprimida em uma linha
|
|
47
|
+
- `filtrarOcorrenciasSuprimidas(ocorrencias, analista, src)` — filtra ocorrências suprimidas
|
|
48
|
+
|
|
49
|
+
### `src/shared/formatters/formatters/commons.ts`
|
|
50
|
+
|
|
51
|
+
Integração com o formatador mínimo.
|
|
52
|
+
|
|
53
|
+
**Exporta:**
|
|
54
|
+
- `extrairLinhasProtegidasFormatador(src)` — converte supressões em `Set<number>` de linhas protegidas para o formatador
|
|
55
|
+
- `corrigirPontuacaoECodigo(code, protectedLines?)` — função principal com suporte a proteção
|
|
56
|
+
- `corrigirPontuacaoECodigoConservador(code, protectedLines?)` — versão conservadora
|
|
57
|
+
|
|
58
|
+
### `src/analysts/plugins/analyst-formatter.ts`
|
|
59
|
+
|
|
60
|
+
Integração com o analista de formatação.
|
|
61
|
+
|
|
62
|
+
- `extrairLinhasProtegidas(src)` — bridge que alimenta `formatarMarkdownMinimo()` com linhas protegidas
|
|
63
|
+
|
|
64
|
+
## Regras do Formatador
|
|
65
|
+
|
|
66
|
+
| Regra | Efeito |
|
|
67
|
+
|-------|--------|
|
|
68
|
+
| `pontuacao-repetida` | Impede colapso de `;;`, ` ...`, `,, etc |
|
|
69
|
+
| `espacamento-incorreto` | Impede correção de espaços ao redor de pontuação |
|
|
70
|
+
| `formatador` | Desativa todas as correções |
|
|
71
|
+
| `analista-formatador` | Desativa apenas o analista de verificação |
|
|
72
|
+
| `*` | Desativa todos os sistemas |
|
|
73
|
+
|
|
74
|
+
## Exemplos
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
// @mahoraga-disable-next-line pontuacao-repetida
|
|
78
|
+
const x = a;; // ;; preservado
|
|
79
|
+
|
|
80
|
+
// @mahoraga-disable formatador
|
|
81
|
+
url = "https://example.com/path";
|
|
82
|
+
// @mahoraga-enable formatador
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Testes
|
|
86
|
+
|
|
87
|
+
- `tests/shared/helpers/suppressao.test.ts` — testes do parser de supressão
|
|
88
|
+
- `tests/shared/formatters/formatters/commons.test.ts` — testes do formatador
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
Proveniência e Autoria: Este documento integra o projeto @mocoto/mahoraga (licença MIT-0).
|
|
3
|
+
tags: [moc, guias]
|
|
4
|
+
created: 2026-07-24
|
|
5
|
+
updated: 2026-07-25
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Guias
|
|
9
|
+
|
|
10
|
+
## Desenvolvimento
|
|
11
|
+
|
|
12
|
+
- [[contribuindo|Contribuindo]]: Como contribuir com o projeto
|
|
13
|
+
- [[testes|Testes]]: Padrões e boas práticas de teste
|
|
14
|
+
|
|
15
|
+
## Guia Rápido de Comandos
|
|
16
|
+
|
|
17
|
+
### Diagnóstico
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
mahoraga diagnosticar # análise padrão
|
|
21
|
+
mahoraga diagnosticar --full # completa (todos os detectores)
|
|
22
|
+
mahoraga diagnosticar --fast # rápida (apenas detectores essenciais)
|
|
23
|
+
mahoraga diagnosticar --compact # saída compacta
|
|
24
|
+
mahoraga diagnosticar --json # saída JSON
|
|
25
|
+
mahoraga diagnosticar --detalhado # saída detalhada
|
|
26
|
+
mahoraga diagnosticar --executive # relatório executivo (1 página)
|
|
27
|
+
mahoraga diagnosticar --monorepo # modo monorepo
|
|
28
|
+
mahoraga diagnosticar --stream # streaming NDJSON
|
|
29
|
+
mahoraga diagnosticar --guardian-check # verificar Guardian junto
|
|
30
|
+
mahoraga diagnosticar --auto-fix # corrigir automaticamente
|
|
31
|
+
mahoraga diagnosticar --include "src/**" --exclude "**/*.test.ts"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Guardian (Integridade)
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
mahoraga guardian # verificar integridade
|
|
38
|
+
mahoraga guardian --accept-baseline # aceitar estado atual como baseline
|
|
39
|
+
mahoraga guardian --diff # mostrar diferenças
|
|
40
|
+
mahoraga guardian --full-scan # scan completo
|
|
41
|
+
mahoraga guardian --json # saída JSON
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Licenças
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
mahoraga licencas scan # scan de dependências
|
|
48
|
+
mahoraga licencas notices generate # gerar THIRD-PARTY-NOTICES
|
|
49
|
+
mahoraga licencas disclaimer add # adicionar headers SPDX
|
|
50
|
+
mahoraga licencas disclaimer verify # verificar headers SPDX
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Compliance
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
mahoraga compliance report iso-27001 # relatório ISO 27001
|
|
57
|
+
mahoraga compliance report soc2 # relatório SOC 2
|
|
58
|
+
mahoraga compliance report soc2 --json # em JSON
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Análise CI/CD
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
mahoraga github-actions scan # GitHub Actions
|
|
65
|
+
mahoraga github-actions gate # quality gate
|
|
66
|
+
mahoraga gitlab-ci scan # GitLab CI
|
|
67
|
+
mahoraga circleci scan # CircleCI
|
|
68
|
+
mahoraga jenkins scan # Jenkins
|
|
69
|
+
mahoraga azure scan # Azure Pipelines
|
|
70
|
+
mahoraga convert --from github --to gitlab # converter templates
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Vulnerabilidades
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
mahoraga vulnerabilidades scan # scan npm audit
|
|
77
|
+
mahoraga vulnerabilidades scan --json # saída JSON
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Manutenção de Código
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
mahoraga formatar --write # formatar código
|
|
84
|
+
mahoraga formatar --check # verificar apenas
|
|
85
|
+
mahoraga fix-types --target src # corrigir any/unknown
|
|
86
|
+
mahoraga fix-types --dry-run # simular correção
|
|
87
|
+
mahoraga fix-types --interactive # modo interativo
|
|
88
|
+
mahoraga podar # remover arquivos órfãos
|
|
89
|
+
mahoraga names --scan # extrair nomes de variáveis
|
|
90
|
+
mahoraga names --apply # aplicar renomeações
|
|
91
|
+
mahoraga imports --scan # escanear aliases
|
|
92
|
+
mahoraga imports --apply # aplicar correções de import
|
|
93
|
+
mahoraga barrels --scan # preview de barrels
|
|
94
|
+
mahoraga barrels --generate # gerar barrels
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Plugins e Marketplace
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
mahoraga plugins list # listar plugins instalados
|
|
101
|
+
mahoraga plugins install <pacote> # instalar plugin
|
|
102
|
+
mahoraga plugins remove <pacote> # remover plugin
|
|
103
|
+
mahoraga marketplace search <termo> # buscar analistas
|
|
104
|
+
mahoraga marketplace install <nome> # instalar do marketplace
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Performance e Métricas
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
mahoraga perf snapshot # criar snapshot
|
|
111
|
+
mahoraga perf baseline # definir baseline
|
|
112
|
+
mahoraga perf compare # comparar snapshots
|
|
113
|
+
mahoraga metricas # métricas de execução
|
|
114
|
+
mahoraga metricas --analistas # métricas por analista
|
|
115
|
+
mahoraga metricas --json # JSON output
|
|
116
|
+
|
|
117
|
+
mahoraga analistas # listar analistas
|
|
118
|
+
mahoraga analistas --json # listar em JSON
|
|
119
|
+
mahoraga analistas --plugins # listar plugins
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Utilitários
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
mahoraga otimizar-svg --write # otimizar SVGs
|
|
126
|
+
mahoraga reverter listar # listar reversões
|
|
127
|
+
mahoraga reverter move <id> # reverter movimento
|
|
128
|
+
mahoraga atualizar --global # auto-update
|
|
129
|
+
mahoraga atualizar --local # update local
|
|
130
|
+
mahoraga formatters list # listar formatadores
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Convenções de Código
|
|
134
|
+
|
|
135
|
+
- **Nomenclatura:** Em português (BR) para funções e variáveis
|
|
136
|
+
- **Idioma:** Português é o idioma padrão do projeto
|
|
137
|
+
- **i18n:** Mensagens de usuário sempre em pt, en, zh, ja
|
|
138
|
+
- **Componentes:** Functional components com default export
|
|
139
|
+
- **Imports:** Path aliases (`@core/`, `@cli/`, etc.): nunca caminhos relativos profundos
|
|
140
|
+
- **Testes:** Vitest com `vi.hoisted()` + `vi.mock()`
|
|
141
|
+
|
|
142
|
+
## Como Criar um Novo Comando CLI
|
|
143
|
+
|
|
144
|
+
1. Criar arquivo em `src/cli/commands/command-meu-comando.ts`
|
|
145
|
+
2. Implementar função que recebe `aplicarFlagsGlobais` e retorna um `Command` do Commander
|
|
146
|
+
3. Adicionar o comando em `src/cli/commands/commands.ts`
|
|
147
|
+
4. Adicionar mensagens i18n em todas as 4 línguas
|
|
148
|
+
5. Criar testes em `tests/cli/commands/command-meu-comando.test.ts`
|
|
149
|
+
6. Usar `vi.hoisted()` para mocks, `parseAsync([], { from: 'user' })` para execução
|
|
150
|
+
|
|
151
|
+
## Testes
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Suite completa
|
|
155
|
+
npm test
|
|
156
|
+
|
|
157
|
+
# Testes específicos
|
|
158
|
+
npx vitest run tests/cli/commands/command-format.test.ts
|
|
159
|
+
|
|
160
|
+
# Coverage
|
|
161
|
+
npm run coverage
|
|
162
|
+
|
|
163
|
+
# Modo watch
|
|
164
|
+
npx vitest
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Build
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
npm run build # compilar TypeScript
|
|
171
|
+
npm run typecheck # verificar tipos (sem emitir)
|
|
172
|
+
npm run lint # ESLint
|
|
173
|
+
```
|