@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.
Files changed (61) hide show
  1. package/Docs/.obsidian/app.json +7 -0
  2. package/Docs/.obsidian/appearance.json +8 -0
  3. package/Docs/.obsidian/community-plugins.json +28 -0
  4. package/Docs/.obsidian/core-plugins-migration.json +18 -0
  5. package/Docs/.obsidian/core-plugins.json +73 -0
  6. package/Docs/.obsidian/graph.json +22 -0
  7. package/Docs/.obsidian/workspace.json +196 -0
  8. package/Docs/01-arquitetura/ADR-001-estrutura-testes.md +31 -0
  9. package/Docs/01-arquitetura/_index.md +152 -0
  10. package/Docs/02-componentes/_index.md +294 -0
  11. package/Docs/02-componentes/configuracao.md +110 -0
  12. package/Docs/02-componentes/supressao-inline.md +88 -0
  13. package/Docs/03-guias/_index.md +173 -0
  14. package/Docs/03-guias/contribuindo.md +71 -0
  15. package/Docs/03-guias/testes.md +133 -0
  16. package/Docs/04-glossario/_index.md +29 -0
  17. package/Docs/04-glossario/termos.md +247 -0
  18. package/Docs/05-referencias/_index.md +88 -0
  19. package/Docs/06-feedbacks/feedback.md +74 -0
  20. package/Docs/Sem t/303/255tulo.base" +3 -0
  21. package/Docs/Sem t/303/255tulo.md +0 -0
  22. package/Docs/_home.md +140 -0
  23. package/Docs/partials/AVISO-PROVENIENCIA.md +3 -0
  24. package/Docs/templates/ADR.md +24 -0
  25. package/Docs/templates/componente.md +34 -0
  26. package/Docs/templates/guia.md +28 -0
  27. package/README.md +269 -26
  28. package/dist/analysts/detectors/detector-bugs-ml.js +5 -0
  29. package/dist/analysts/js-ts/registrar.js +1 -1
  30. package/dist/analysts/plugins/detector-markdown.js +2 -2
  31. package/dist/analysts/react/analysts/analyst-react-hooks.js +30 -15
  32. package/dist/analysts/react/analysts/analyst-react.js +11 -2
  33. package/dist/analysts/react/detectors/detector-react-best-practices.js +7 -4
  34. package/dist/caretakers/caretaker-imports.js +0 -9
  35. package/dist/cli/commands/command-github-actions.js +0 -27
  36. package/dist/cli/diagnostic/filters.js +1 -4
  37. package/dist/core/config/config.js +2 -3
  38. package/dist/core/config/excludes-padrao.js +3 -2
  39. package/dist/core/messages/en/cli/cli-command-github-actions-messages.js +0 -5
  40. package/dist/core/messages/en/github/index.js +0 -1
  41. package/dist/core/messages/ja/cli/cli-command-github-actions-messages.js +0 -5
  42. package/dist/core/messages/ja/github/index.js +0 -1
  43. package/dist/core/messages/pt/cli/cli-command-github-actions-messages.js +0 -5
  44. package/dist/core/messages/pt/github/index.js +0 -1
  45. package/dist/core/messages/zh/cli/cli-command-github-actions-messages.js +0 -5
  46. package/dist/core/messages/zh/github/index.js +0 -1
  47. package/dist/core/registry/file-registry.js +1 -1
  48. package/dist/node.loader.js +0 -2
  49. package/dist/reports/report-structure.js +2 -8
  50. package/dist/shared/formatters/formatters/commons.js +36 -10
  51. package/dist/shared/formatters/formatters/shell.js +6 -3
  52. package/dist/shared/helpers/magic-constants-whitelist.js +14 -1
  53. package/dist/types/analysts/index.js +1 -1
  54. package/dist/types/processing/filters.js +1 -4
  55. package/package.json +31 -32
  56. package/dist/app/github.js +0 -14
  57. package/dist/app/index.js +0 -1
  58. package/dist/core/messages/en/github/github-app-messages.js +0 -9
  59. package/dist/core/messages/ja/github/github-app-messages.js +0 -9
  60. package/dist/core/messages/pt/github/github-app-messages.js +0 -9
  61. 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
+ ```