Executando verificação de segurança...
1

Pitch: Criei um CLI em Go pra detectar código morto em projetos JS/TS (em beta)

Fala pessoal,

Estou desenvolvendo o Prune, uma CLI que eencontra código morto em projetos JavaScript e TypeScript. A ideia surgiu porque linters tradicionais pegam coisas pequenas (variáveis não usadas), mas não conseguem responder perguntas maiores como:

  • Quais arquivos nunca são usados?
  • Quais exports não têm nenhuma referência?
  • O que realmente não faz parte do runtime?

Como funciona

O Prune parte de entrypoints definidos (ex: src/index.ts) e constrói um grafo de dependências, depois faz a análise de alcançabilidade e marca tudo que não é atingido como código morto

Exemplo de uso

prune scan --fail-on-findings

Ele retorna coisas como: arquivos não utilizados, exports mortos e funções nunca chamadas.

Algumas decisões técnicas

Escrito em Go (roda em qualquer OS), faz o parsing com Tree-sitter (sem depender do TypeScript compiler) e tem o output pensado pra uso humano e também automação (NDJSON)

Problemas que tentei resolver

Uma das maiores dores que encontrei foi evitar falso positivo, especialmente com feature flags (flags.NEW_UI) e usos dinâmicos (eval, access via string), etc., mas dá pra configurar padrões pra esses casos.

Status

Está em beta (v0.1.0-beta.1).

Acabei de corrigir alguns problemas importantes com entrypoints e estou melhorando o output do CLI.

Feedback

Se alguém quiser testar em codebases reais, seria ótimo.

Repo:
https://github.com/carlosedujs/prune

Docs:
https://prune-rose.vercel.app/docs


Se tiverem sugestões ou encontrarem falsos positivos, manda aí.

Carregando publicação patrocinada...