Skip to content
| Marketplace
Sign in
Visual Studio Code>Linters>Code Wizard - Better Code InspectorNew to Visual Studio Code? Get it now.
Code Wizard - Better Code Inspector

Code Wizard - Better Code Inspector

Lucas P Melo

|
3 installs
| (0) | Free
Aponta violações de Clean Code, SOLID e Object Calisthenics diretamente no editor, com explicação do princípio e sugestão de refatoração.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Code Wizard

Extensão de VSCode que aponta violações de Clean Code, SOLID e Object Calisthenics diretamente no editor — explicando o princípio violado, não só marcando um erro genérico.

Como rodar localmente

npm install
npm run compile

Depois, abra esta pasta no VSCode e aperte F5 (ou rode a task "Executar Extensão"). Isso abre uma nova janela do VSCode com a extensão carregada — a chamada "Extension Development Host".

Nessa nova janela, abra examples/sample-violations.ts. Você deve ver sublinhados (diagnostics) nas linhas com violações, com a explicação do princípio no hover.

Comandos disponíveis

  • Code Wizard: Analisar arquivo atual — força a análise e mostra quantas violações foram encontradas.
  • Code Wizard: Explicar princípio — abre uma lista de todos os princípios cobertos, com explicação detalhada e exemplo.

Configurações (settings.json)

Chave Padrão Descrição
codeWizard.maxFunctionLines 20 Limite de linhas por função
codeWizard.maxParameters 3 Limite de parâmetros por função
codeWizard.disallowElse true Avisa sempre que houver else
codeWizard.maxNestingDepth 2 Profundidade máxima de if/for/while aninhados

Regras já implementadas

Regra Princípio Arquivo
no-else Object Calisthenics #2 src/rules/noElse.ts
long-function Clean Code — Funções pequenas src/rules/longFunction.ts
too-many-parameters Clean Code — Poucos parâmetros / Primitive Obsession src/rules/tooManyParameters.ts
nesting-depth Object Calisthenics #1 src/rules/nestingDepth.ts

Como adicionar uma nova regra

  1. Crie um arquivo em src/rules/, seguindo a interface Rule definida em src/types.ts. Cada regra recebe o AST (ts.SourceFile) já parseado e a configuração do usuário, e retorna uma lista de RuleViolation.
  2. Registre a regra no array allRules em src/rules/index.ts.
  3. (Opcional) Adicione uma configuração nova em package.json → contributes.configuration.properties se a regra precisar de algum limite configurável.

Ideias de próximas regras (SOLID)

  • SRP: heurística simples — contar quantas "responsabilidades" aparentes uma classe tem, olhando para imports de camadas diferentes (ex: import de driver de banco + import de biblioteca HTTP no mesmo arquivo).
  • OCP: detectar switch/if-else encadeado sobre um campo tipo tipo/type, que normalmente indica que um polimorfismo está faltando.
  • LSP: detectar métodos de subclasse que lançam throw new Error(...) logo no início, sobrescrevendo um método da classe base (sinal clássico de contrato quebrado).
  • DIP: detectar new AlgumaClasse() dentro do corpo de outra classe/função em vez de vir via parâmetro/injeção.

A arquitetura já foi pensada pra isso: basta plugar mais um Rule na lista, sem mexer no motor (extension.ts e rules/index.ts) ficam praticamente intactos.

Empacotar (.vsix) para instalar localmente

npm install -g @vscode/vsce
vsce package

Isso gera um arquivo .vsix que você instala via "Extensions: Install from VSIX..." dentro do próprio VSCode.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft