Советы, чтобы показать сходство в файлах - PullRequest
8 голосов
/ 08 октября 2009

В проекте я нашел несколько CSS-файлов, которые "пахнут", как будто в них есть скопированные правила.

Интересно, каковы ваши стратегии обнаружения копий-вставок в файлах?

Просто из любопытства я хотел бы услышать ваши советы и рекомендации для демонстрации сходства файлов!

Ответы [ 3 ]

5 голосов
/ 08 октября 2009

Попробуйте Simian .

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

4 голосов
/ 08 октября 2009

В sourceforge существует проект обнаружения копирования-вставки (CPD); http://pmd.sourceforge.net/cpd.html

Но даже в больших проектах я нахожу свои знания о коде надежным (хотя и не надежным) механизмом обнаружения.

Также см. этот вопрос для других предложений.

2 голосов
/ 01 февраля 2010

Наши Семантические конструкции CloneDR - это инструмент, который обнаруживает блоки кода копирования-вставки-редактирования для многих языков: C, C ++, Java, C ++, COBOL, ECMAScript, PHP, VB6, VB.net , ...

Он использует точные синтаксические анализаторы для построения абстрактных синтаксических деревьев, соответствующих точным программным структурам, которые затем сравниваются на предмет сходства. Это означает, что он никоим образом не путается с пробелами, форматированием, комментариями или даже другим «написанием» литералов (например, 3.14159 совпадает с .00314150E3).

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

...