Repolode
Rafaelpta

Rafaelpta/dupehound

Локальный детерминированный инструмент для поиска дублирующегося кода: находит скопированные AI-агентами функции, даже если идентификаторы в них переименованы.

Звёзды
102
Форки
10
Открытые issues
3
Последний коммит
2 месяца назад

Что это?

dupehound — CLI-инструмент для поиска дублирующегося кода в репозиториях, где значительную часть кода пишут AI-агенты. Он разбирает каждую функцию с помощью tree-sitter, нормализует идентификаторы и литералы и вычисляет структурный отпечаток кода. Поэтому копия с переименованными идентификаторами всё равно будет сопоставлена с оригиналом.

Инструмент поддерживает три команды: scan находит группы дубликатов и рассчитывает общий для репозитория показатель «слопа»; history строит график дублирования по истории git и показывает, когда оно выросло; check завершает работу с ошибкой в CI или pre-commit, если изменение дублирует существующий код, и указывает функцию, которую следует использовать повторно. Инструмент работает полностью офлайн, без API-ключей и AI-моделей, и выдаёт один и тот же результат при каждом запуске.

В проект также входит режим MCP-сервера, позволяющий coding agent вызывать инструменты check и scan во время редактирования. Поддерживаются TypeScript, Python, Rust, Go, Java, C#, Kotlin и многие другие языки.

Ключевые возможности

  • 01Находит переименованные копии, сравнивая структурные отпечатки кода, а не текст
  • 02Команда scan находит группы дубликатов и рассчитывает общий для репозитория показатель «слопа»
  • 03Команда history строит график дублирования по коммитам git
  • 04Команда check блокирует CI и pre-commit при появлении новых дубликатов
  • 05Работает офлайн и детерминированно, без AI и сетевого подключения
  • 06Предоставляет coding agent инструменты check и scan через MCP

Сценарии использования

  • Не позволяет AI-агенту повторно реализовывать функции, которые уже есть в репозитории
  • Позволяет настроить проверку pull request в CI, чтобы обнаруживать новый дублирующийся код до слияния
  • Помогает отслеживать рост дублирования в истории крупной кодовой базы

Быстрый старт

  1. 1

    Установить с помощью cargo

    cargo install dupehound
  2. 2

    Просканировать каталог на наличие дубликатов

    dupehound scan [path]

Что важно знать

  • Для команд history и check требуется, чтобы git был доступен в PATH.
  • Флаги --include-classes и --containment являются экспериментальными и включаются только по желанию.

В подборках

Темы

Частые вопросы

Что такое dupehound?
Локальный детерминированный инструмент для поиска дублирующегося кода: находит скопированные AI-агентами функции, даже если идентификаторы в них переименованы. dupehound — CLI-инструмент для поиска дублирующегося кода в репозиториях, где значительную часть кода пишут AI-агенты. Он разбирает каждую функцию с помощью tree-sitter, нормализует идентификаторы и литералы и вычисляет структурный отпечаток кода. Поэтому копия с переименованными идентификаторами всё равно будет сопоставлена с оригиналом.
dupehound можно использовать бесплатно? Какая у него лицензия?
dupehound распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
dupehound всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в dupehound — 21 сент. 2026 г..
Для чего можно использовать dupehound?
Не позволяет AI-агенту повторно реализовывать функции, которые уже есть в репозитории Позволяет настроить проверку pull request в CI, чтобы обнаруживать новый дублирующийся код до слияния Помогает отслеживать рост дублирования в истории крупной кодовой базы
Как установить dupehound?
Установить с помощью cargo: cargo install dupehound Просканировать каталог на наличие дубликатов: dupehound scan [path]
Где скачать dupehound?
Исходный код и инструкции по установке — на GitHub: https://github.com/Rafaelpta/dupehound

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Платформа для самостоятельного развертывания, которая анализирует проекты на наличие ошибок, уязвимостей и проблем с поддерживаемостью и применяет Quality Gates в CI-пайплайнах.

11,2 тыс.+26 за неделю2,2 тыс.JavaLGPL-3.0Обновлён вчера

CLI для AI-ревью кода: детерминированный выбор файлов и правил сочетается с LLM-агентом, который оставляет комментарии к конкретным строкам Git diff.

49,6 тыс.+439 за неделю3,6 тыс.GoApache-2.0Активно поддерживаетсяОбновлён позавчера

Ix преобразует репозиторий в постоянный граф символов, вызовов и импортов, чтобы разработчики и AI-агенты могли запрашивать сведения о его структуре.

1,1 тыс.+7 за неделю92TypeScriptApache-2.0Активно поддерживаетсяОбновлён вчера