Существует ли это: Повторный поиск кода?
В ближайшем будущем я буду наследовать несколько большой проект. Недавно я делал некоторые небольшие обновления, и заметил, что в некоторых его частях можно использовать некоторые рефакторинги, так как есть методы, которые выполняют одну и ту же операцию с небольшой разницей.
Мне было интересно, есть ли инструмент, который возьмет кучу исходного кода и найдет похожие блоки кода, чтобы их можно было идентифицировать для возможного рефакторинга. Было бы здорово, если бы существовал нечеткий поиск, чтобы он мог идентифицировать подобную операцию (кроме как только патроны кода повторялись дословно).
Я не ожидаю, что программа реорганизует сам код, просто определите потенциальное повторение.
Моя платформа - С#, но любое решение было бы полезно
Ответы
Ответ 1
http://www.codeplex.com/CloneDetectiveVS
"Clone Detective - это интеграция с Visual Studio, которая позволяет анализировать проекты С# для исходного кода, который дублируется где-то еще".
Там много происходит, визуально, когда вы бросаете его в проект с большим количеством дублирования кода. Если это в первую очередь сочетается с вашим использованием Clone Detective, это может быть немного подавляющим вначале.
Я действительно рекомендую этот инструмент. Это отлично.
Ответ 2
CPD работает на уровне токена, поэтому с С# должно быть хорошо. У него есть некоторые механизмы для факторизации имен переменных и других идентификаторов.
Ответ 3
Я никогда не использовал его, но Simian может работать для вас
Simian (анализатор сходства) идентифицирует дублирование в Java, С#, C, С++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy исходный код и даже текстовые файлы. На самом деле, обезьяна может использоваться на любом удобочитаемом человеке файлы, такие как ini файлы, развертывание дескрипторы, вы называете это.
Ответ 4
В настоящее время я использую Duplicate Finder. Он работает с любым текстовым файлом, и я очень успешно использовал его в своих проектах на С#. Это командная строка, поэтому я интегрировал ее в мои процессы сборки.
Ответ 5
Simian - это продукт, который утверждает, что анализирует исходный код на разных языках, включая С#. Я никогда не использовал его, поэтому я не могу ручаться за него. Он бесплатный для некоммерческого использования, и они продадут его вам для коммерческих проектов.
Ответ 6
Я использовал Simian несколько раз против баз java и ruby code, и он работал довольно хорошо. Кажется, что он поддерживает С#. http://www.redhillconsulting.com.au/products/simian/overview.html
Ответ 7
Если вы думаете о поиске дублирующего кода в проекте, то, возможно, вам стоит также рассмотреть возможность использования более широкого статического анализа кода.
Что-то вроде Sonar проверяет дублированный код, стандарты кодирования, модульные тесты, покрытие кода, сложный код, возможные ошибки, комментарии и дизайн и архитектуры.
Вы можете найти список инструментов анализа статического кода в Википедии.