Есть ли инструмент для поиска избыточности через набор библиотечного кода (.net C #)? - PullRequest
6 голосов
/ 07 декабря 2011

Существует ли инструмент для поиска избыточности с помощью набора библиотечного кода (.net C #)?

Проблема в том, что у меня есть ряд библиотек .NET, но они, как правило, имеют много похожих/ дублировать вспомогательные или вспомогательные функции.Иногда код может быть не совсем полезным, но следует схожим шаблонам с немного отличающимися именами.

Существует ли какой-либо инструмент, который может обнаружить эти сходства и сообщить о них в пакете библиотек C #?

Ответы [ 3 ]

4 голосов
/ 07 декабря 2011

CodeRush теперь имеет встроенный инструмент поиска дубликатов кода. Я не знаю, каков ваш бюджет для такого инструмента, но я нахожу преимущества CodeRush / Refactor!более чем компенсировать стоимость лицензии.

4 голосов
/ 07 декабря 2011

Visual Studio 11 (в настоящее время только предварительный просмотр для разработчика) имеет эту функцию. Вы можете бесплатно загрузить предварительный просмотр для разработчиков.

Он называется Code Clone Analysis и выполняет поиск в вашем коде в поисках сходств и создает отчет, который варьируется от точных совпадений до вероятных совпадений.

Здесь Вы можете найти небольшой пример.

3 голосов
/ 07 декабря 2011

См. Наш CloneDR инструмент для поиска точных и почти пропущенных блоков дублированного кода в больших объемах исходного кода.

CloneDR работает, анализируя исходный текст, используя внешний интерфейс качества компилятора, создавая структуры данных компилятора ("AST"), которые представляют код, и сопоставляя деревья. Это означает, что он может найти дубликаты, несмотря на макеты, разрывы строк или комментарии. Процесс сопоставления может найти блоки кода, которые похожи в том смысле, что могут быть параметризованы; он легко находит похожие блоки с переименованными переменными или с операторами или блоками кода, которые были заменены.

Существуют версии для многих языков, включая C #. Пример отчета об обнаружении клона C # можно найти на веб-сайте.

CloneDR не является "предварительным просмотром разработки". Я написал одну оригинальную статью о том, как сделать это хорошо еще в 1998 году, и с тех пор я разрабатываю CloneDR; см. Обнаружение клона с использованием абстрактных синтаксических деревьев . (Детектор клонов Microsoft выполняет основанное на токене, а не обнаружение клонов на основе дерева и выдает, IMHO, ответы, которые не так хороши; на самом деле такие детекторы в стиле токенов почему я написал статью) .

...