Repolode
Rafaelpta

Rafaelpta/dupehound

Detector local e determinístico de código duplicado que encontra funções copiadas por agentes de IA mesmo após a renomeação de identificadores.

Estrelas
101
Forks
10
Issues abertas
3
Último commit
há 2 meses

O que é?

dupehound é um detector de código duplicado via linha de comando, voltado para bases de código em que agentes de IA escrevem boa parte do código. Ele analisa cada função com tree-sitter, normaliza identificadores e literais e cria uma impressão digital da estrutura do código. Assim, mesmo uma cópia com nomes alterados é reconhecida como uma duplicata da original.

A ferramenta oferece três comandos: scan identifica grupos de duplicatas e calcula uma pontuação de código redundante para o repositório; history mostra a duplicação ao longo do histórico do Git, indicando quando ela aumentou; e check faz o CI ou o pre-commit falhar quando uma alteração duplica código existente e informa qual função reutilizar. A ferramenta funciona totalmente offline, sem chaves de API ou modelos de IA, e gera o mesmo resultado a cada execução.

O projeto também oferece um modo de servidor MCP, para que um agente de programação possa chamar as ferramentas check e scan durante a edição. Entre as linguagens compatíveis estão TypeScript, Python, Rust, Go, Java, C#, Kotlin e muitas outras.

Recursos principais

  • 01Detecta cópias renomeadas ao criar impressões digitais da estrutura do código, em vez de comparar o texto
  • 02O comando scan identifica grupos de duplicatas e calcula uma pontuação de código redundante para o repositório
  • 03O comando history mostra a duplicação ao longo dos commits do Git
  • 04O comando check bloqueia o CI e o pre-commit quando há novas duplicatas
  • 05Funciona offline e de forma determinística, sem exigir IA ou conexão de rede
  • 06Disponibiliza check e scan como ferramentas MCP para agentes de programação

Casos de uso

  • Impedir que um agente de programação com IA reimplemente funções que já existem no repositório
  • Bloquear pull requests no CI para sinalizar código duplicado antes do merge
  • Acompanhar o crescimento da duplicação ao longo do histórico de uma base de código grande

Início rápido

  1. 1

    Instalar com cargo

    cargo install dupehound
  2. 2

    Verificar um diretório em busca de duplicados

    dupehound scan [path]

Antes de usar

  • Os comandos history e check exigem que o git esteja no PATH.
  • As opções --include-classes e --containment são experimentais e precisam ser ativadas explicitamente.

Em coleções

Tópicos

Perguntas frequentes

O que é dupehound?
Detector local e determinístico de código duplicado que encontra funções copiadas por agentes de IA mesmo após a renomeação de identificadores. dupehound é um detector de código duplicado via linha de comando, voltado para bases de código em que agentes de IA escrevem boa parte do código. Ele analisa cada função com tree-sitter, normaliza identificadores e literais e cria uma impressão digital da estrutura do código. Assim, mesmo uma cópia com nomes alterados é reconhecida como uma duplicata da original.
dupehound é gratuito? Qual é a licença?
dupehound é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
dupehound ainda é mantido?
Atualizado nos últimos 6 meses. O último commit de dupehound foi em 21 de set. de 2026.
Para que posso usar dupehound?
Impedir que um agente de programação com IA reimplemente funções que já existem no repositório Bloquear pull requests no CI para sinalizar código duplicado antes do merge Acompanhar o crescimento da duplicação ao longo do histórico de uma base de código grande
Como instalar dupehound?
Instalar com cargo: cargo install dupehound Verificar um diretório em busca de duplicados: dupehound scan [path]
Onde consigo dupehound?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/Rafaelpta/dupehound

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados