@mocoto/mahoraga 0.14.9 → 0.15.1
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 +263 -30
- package/dist/analysts/js-ts/registrar.js +1 -1
- package/dist/analysts/react/analysts/analyst-react-hooks.js +30 -15
- package/dist/analysts/react/analysts/analyst-react.js +4 -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/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/shared/formatters/formatters/commons.js +36 -10
- package/dist/shared/formatters/formatters/shell.js +6 -3
- package/dist/types/analysts/index.js +1 -1
- 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/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 +87 -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/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,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
Proveniência e Autoria: Este documento integra o projeto @mocoto/mahoraga (licença MIT-0).
|
|
3
|
+
tags: [moc, arquitetura]
|
|
4
|
+
created: 2026-07-24
|
|
5
|
+
updated: 2026-07-25
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Arquitetura
|
|
9
|
+
|
|
10
|
+
## Visão Geral
|
|
11
|
+
|
|
12
|
+
O Mahoraga é organizado em 6 camadas:
|
|
13
|
+
|
|
14
|
+
### 1. Entry Point (`src/bin/index.ts`)
|
|
15
|
+
|
|
16
|
+
Binário executável (`#!/usr/bin/env node`). Inicializa o loader ESM customizado (aliases em runtime), configura handlers globais de erro, carrega configuração, versão, memória de conversação, registra todos os comandos via `registrarComandos()` e executa `program.parseAsync()`.
|
|
17
|
+
|
|
18
|
+
### 2. CLI Layer (`src/cli/`)
|
|
19
|
+
|
|
20
|
+
Interface com o usuário via Commander.js. 27 comandos registrados em `commands.ts`, cada um implementado em um arquivo `command-*.ts`. Subcomandos para diagnóstico, guardian, CI/CD, licenças, compliance, manutenção, plugins.
|
|
21
|
+
|
|
22
|
+
### 3. Core Layer (`src/core/`)
|
|
23
|
+
|
|
24
|
+
Motor central do sistema:
|
|
25
|
+
- **execution/**: Scanner, registry, workers, cache, ambiente, linguagens, schema
|
|
26
|
+
- **config/**: Configuração default, scoring, paths, segurança, filtros
|
|
27
|
+
- **parsing/**: Parsers baseados em Babel (AST) + parsers por linguagem
|
|
28
|
+
- **messages/**: Sistema de i18n com suporte a pt (padrão), en, zh, ja
|
|
29
|
+
- **workers/**: Worker pool para processamento paralelo
|
|
30
|
+
- **corrections/**: Auto-fix engine
|
|
31
|
+
|
|
32
|
+
### 4. Analysis Layer (`src/analysts/`)
|
|
33
|
+
|
|
34
|
+
Analisadores especializados organizados por domínio:
|
|
35
|
+
|
|
36
|
+
**Detectores gerais** (aplicáveis a qualquer projeto):
|
|
37
|
+
- `detectors/`: 12 detectores: architecture, bugs-ml, code-fragile, dependencies, duplications, monorepo, performance, phantoms, recommendation, security, structure
|
|
38
|
+
|
|
39
|
+
**Analisadores por linguagem** (cada um com analysts/, detectors/, corrections/, scorers/):
|
|
40
|
+
- `js-ts/`, `react/`, `css/`, `css-in-js/`, `html/`, `svg/`, `xml/`, `tailwind/`, `python/`, `shell/`, `sql/`, `go/`, `rust/`, `php/`
|
|
41
|
+
|
|
42
|
+
**Analisadores de CI/CD** (cada um com analysts/, detectors/, corrections/, reports/, scorers/):
|
|
43
|
+
- `github-actions/`, `gitlab-ci/`, `circleci/`, `jenkins/`, `azure-pipelines/`
|
|
44
|
+
|
|
45
|
+
**Infraestrutura:**
|
|
46
|
+
- `registry/`: Autodiscovery de analistas
|
|
47
|
+
- `plugins/`: Sistema de plugins (analyst-formatter, detector-documentation, detector-markdown, detector-node)
|
|
48
|
+
- `corrections/`: Correções automáticas (quick-fixes, auto-fix, alias-imports, pruning, barrels, type-safety)
|
|
49
|
+
- `converters/`: Conversão entre plataformas CI/CD
|
|
50
|
+
- `scorers/`: Engine de pontuação
|
|
51
|
+
- `strategists/`: Estratégias de análise (archetypes, suggestions)
|
|
52
|
+
|
|
53
|
+
### 5. Service Layer
|
|
54
|
+
|
|
55
|
+
| Módulo | Descrição |
|
|
56
|
+
|--------|-----------|
|
|
57
|
+
| `guardian/` | Pipeline de integridade com GPG (Ed25519). Baseline, snapshot, diff, sentinel, verifier |
|
|
58
|
+
| `licenses/` | Gerenciamento de licenças SPDX. Scanner, normalizer, policy, disclaimer, notice generator |
|
|
59
|
+
| `vulnerabilities/` | Scan de vulnerabilidades via npm audit |
|
|
60
|
+
| `caretakers/` | Transformações automáticas: imports, barrels, pruning, map-reversion, scoring |
|
|
61
|
+
| `reports/` | Relatórios: compliance (ISO 27001, SOC 2), advisor, archetypes, streaming NDJSON, fragments |
|
|
62
|
+
|
|
63
|
+
### 6. Shared Layer (`src/shared/`)
|
|
64
|
+
|
|
65
|
+
Utilitários compartilhados entre módulos:
|
|
66
|
+
- `formatters/`: Motores de formatação (core, engines, formatters)
|
|
67
|
+
- `persistence/`: Persistência de estado
|
|
68
|
+
- `validation/`: Validação de dados
|
|
69
|
+
- `marketplace/`: Marketplace de analistas
|
|
70
|
+
- `plugins/`: Sistema de plugins
|
|
71
|
+
- `helpers/`: Helpers diversos
|
|
72
|
+
|
|
73
|
+
### 7. Types (`src/types/`)
|
|
74
|
+
|
|
75
|
+
14 namespaces de tipos TypeScript: analysts, caretakers, common, core, guardian, licenses, processing, project, scripts, sdk, shared, structure, vulnerabilities.
|
|
76
|
+
|
|
77
|
+
## Fluxo de Dados
|
|
78
|
+
|
|
79
|
+
```mermaid
|
|
80
|
+
sequenceDiagram
|
|
81
|
+
actor User
|
|
82
|
+
participant CLI as src/cli/
|
|
83
|
+
participant CORE as src/core/
|
|
84
|
+
participant REG as Registry
|
|
85
|
+
participant ANALYST as Analysts
|
|
86
|
+
participant SVC as Services
|
|
87
|
+
|
|
88
|
+
User->>CLI: mahoraga diagnosticar
|
|
89
|
+
CLI->>CORE: scanRepository()
|
|
90
|
+
CORE->>REG: autodiscover()
|
|
91
|
+
REG-->>CORE: analysts[]
|
|
92
|
+
CORE->>ANALYST: analyze(project)
|
|
93
|
+
ANALYST-->>CORE: results[]
|
|
94
|
+
CORE->>SVC: compliance/generate
|
|
95
|
+
SVC-->>CORE: report
|
|
96
|
+
CORE-->>CLI: aggregated results
|
|
97
|
+
CLI-->>User: formatted output
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Alias System
|
|
101
|
+
|
|
102
|
+
O projeto usa path aliases estilo `@pasta/arquivo` para todos os imports internos, resolvidos em três níveis:
|
|
103
|
+
|
|
104
|
+
1. **tsconfig.json**: paths mapping (~160+ entradas)
|
|
105
|
+
2. **node.loader.ts**: Loader ESM customizado para runtime
|
|
106
|
+
3. **vitest.config.ts**: Aliases para ambiente de teste
|
|
107
|
+
|
|
108
|
+
## Decisões Arquiteturais
|
|
109
|
+
|
|
110
|
+
- [[ADR-001-estrutura-testes|ADR-001: Estrutura de Testes com Vitest]]
|
|
111
|
+
- Novos ADRs devem seguir o template em `templates/ADR.md`
|
|
112
|
+
|
|
113
|
+
## Diagrama de Componentes
|
|
114
|
+
|
|
115
|
+
```mermaid
|
|
116
|
+
flowchart LR
|
|
117
|
+
subgraph CLI["CLI Layer"]
|
|
118
|
+
CMD[commands.ts]
|
|
119
|
+
GHA[github-actions]
|
|
120
|
+
DIAG[diagnosticar]
|
|
121
|
+
LIC[licencas]
|
|
122
|
+
end
|
|
123
|
+
subgraph CORE["Core"]
|
|
124
|
+
EXEC[execution]
|
|
125
|
+
CONF[config]
|
|
126
|
+
MSG[messages]
|
|
127
|
+
WRK[workers]
|
|
128
|
+
end
|
|
129
|
+
subgraph ANAL["Analysts"]
|
|
130
|
+
LANG[js-ts/react/css/...]
|
|
131
|
+
CICD[gha/gitlab/circle/...]
|
|
132
|
+
DET[detectores]
|
|
133
|
+
CORR[corrections]
|
|
134
|
+
end
|
|
135
|
+
subgraph SVC["Services"]
|
|
136
|
+
GRD[guardian]
|
|
137
|
+
CAR[caretakers]
|
|
138
|
+
RPT[reports]
|
|
139
|
+
end
|
|
140
|
+
CLI --> CORE
|
|
141
|
+
CORE --> ANAL
|
|
142
|
+
CORE --> SVC
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Temas Arquiteturais
|
|
146
|
+
|
|
147
|
+
- **Modularidade**: Cada módulo tem barrel (`index.ts`) e tipos próprios
|
|
148
|
+
- **Autodiscovery**: Novos analistas são detectados sem registro manual
|
|
149
|
+
- **i18n first**: Mensagens em pt, en, zh, ja desde o design
|
|
150
|
+
- **Plugin system**: Analistas e detectores podem ser estendidos via plugins
|
|
151
|
+
- **Streaming**: NDJSON para projetos grandes (>10k arquivos)
|
|
152
|
+
- **Worker pool**: Processamento paralelo para análise intensiva
|
|
@@ -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,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
|