Существует ли он: повторный поиск кода?


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

Мне было интересно, есть ли инструмент, который возьмет кучу исходного кода и найдет аналогичные блоки кода, чтобы их можно было идентифицировать для возможного рефакторинга. Было бы здорово, если бы был нечеткий поиск присутствует, так что он может идентифицировать подобную операцию (кроме просто кусков кода, повторяющихся дословно).

Я не ожидаю, что программа сама рефакторирует код, просто идентифицирует потенциальное повторение.

Моя платформа-C#, но любое решение было бы полезно

7 15

7 ответов:

Http://www.codeplex.com/CloneDetectiveVS

"Clone Detective-это интеграция Visual Studio, которая позволяет анализировать проекты C# для исходного кода, который дублируется где-то еще."

Визуально, когда вы бросаете его в проект с большим количеством дублирования кода, происходит очень много. Если это сочетается с вашим использованием клона детектива в первый раз, это может быть немного подавляющим поначалу.

Я очень рекомендую этот инструмент. Это превосходно.

CPD работает на уровне токенов, поэтому должно быть хорошо с C#. Он также имеет некоторые механизмы для факторинга имен переменных и других идентификаторов.

Я никогда не использовал его, но Simian может сработать для вас

Обезьяна (Анализатор Подобия) определяет дублирование в Java, C#, C, В C++, КОБОЛ, Рубин, ОСП, АСП, HTML и XML, Visual Basic, Заводной исходный код и даже обычные текстовые файлы. На самом деле, обезьяна может использоваться на любом удобочитаемом человеком файлы, такие как ini-файлы, развертывание дескрипторы, как вы их называете.

В настоящее время я использую Duplicate Finder. Он работает с любым текстовым файлом, и я очень успешно использую его в своих проектах на C#. Это командная строка, поэтому я интегрировал ее в свои процессы сборки.

Simian - это продукт, который претендует на анализ исходного кода на различных языках, включая C#. Я никогда им не пользовался, так что не могу за него поручиться. Это бесплатно для некоммерческого использования, и они продадут его вам для коммерческих проектов.

Я использовал Simian несколько раз против java и ruby кодовых баз, и это сработало довольно хорошо. Похоже, что он также поддерживает c#. http://www.redhillconsulting.com.au/products/simian/overview.html

Если вы думаете найти дубликат кода в проекте, то, возможно, Вам также следует рассмотреть возможность использования более широких инструментов статического анализа кода.

Что-то вродеSonar проверяет дублированный код, стандарты кодирования, модульные тесты, покрытие кода, сложный код, потенциальные ошибки, комментарии и дизайн и архитектуру.

Вы можете найтисписок инструментов статического анализа кода в Википедии .