Существует ли это: Repeated Code Finder? - PullRequest
17 голосов
/ 09 июля 2009

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

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

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

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

Ответы [ 7 ]

8 голосов
/ 09 июля 2009

http://www.codeplex.com/CloneDetectiveVS

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

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

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

5 голосов
/ 09 июля 2009

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

Simian (анализатор сходства) идентифицирует дублирование в Java, C #, C, C ++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy исходный код и даже простые текстовые файлы. На самом деле, обезьяна может использоваться на любом человекочитаемом файлы, такие как INI-файлы, развертывание дескрипторы, вы называете это.

5 голосов
/ 09 июля 2009

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

4 голосов
/ 09 июля 2009

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

2 голосов
/ 09 июля 2009

Я несколько раз использовал Simian против баз Java-кода и Ruby-кода, и это работало довольно хорошо. Кажется, он также поддерживает c #. http://www.redhillconsulting.com.au/products/simian/overview.html

2 голосов
/ 09 июля 2009

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

1 голос
/ 22 ноября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...