Есть ли автоматический инструмент для поиска СУХОЙ вашей базы кода?
Я сильный сторонник Принцип DRY:
Каждая часть знания должна иметь одно, недвусмысленное, авторитетное представление внутри системы.
Существуют ли какие-либо инструменты, которые могут тестировать базу кода для количества СУХОЙ, и как количественные, так и конкретные примеры для коррекции?
Ответы
Ответ 1
Simian (анализатор сходства) идентифицирует дублирование в Java, С#, C, С++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy source кода и даже текстовых файлов. Фактически, simian можно использовать на любом читаемые человеком файлы, такие как ini файлы, дескрипторы развертывания, вы назовите его.
Simian запускается изначально в любой среде .NET 1.1 или выше и на любой виртуальной машине Java 5 или выше, что означает, что Simian можно запустить практически на любом оборудовании и любой операционной системе, на которую вы можете надеяться. Как время выполнения Java, так и .NET включены как часть распределение.
Ответ 2
Дублирующий код может быть трудно найти, особенно в большом проекте. Но Детектор копирования/вставки PMD (CPD) может найти его для вас!
Обратите внимание, что CPD работает с Java, JSP, C, С++, Fortran и PHP-кодом.
Вы можете запустить его в командной строке, есть задача ANT и плагин Eclipse.
Ответ 3
Смотрите наш инструмент CloneDR, который находит точные и близкие пропущенные наборы дублированного кода, используя структуру langauge компьютера в качестве руководства. Помимо обнаружения клонов, он покажет вам грубую абстракцию и привязки параметров, которые объясняют различия между экземплярами клонов.
У него есть экземпляры для многих lanuages: C, С++, С#, Java, JavaScript, PHP, COBOL, Python, PLSQL,... Он обычно находит 10-15% дублированный код в системах с серьезным размером (например, 100K SLOC и выше). На веб-сайте есть примеры отчетов для многих языков, и вы можете загрузить пробную копию.
Ответ 4
Clone Detective - это интеграция с Visual Studio, которая позволяет вам анализировать проекты С# для исходного кода, который дублируется где-то еще. Наличие дубликатов может легко привести к несоответствиям и часто является индикатор для слабо выраженного кода.
![enter image description here]()