2009-10-08 10 views
8

В проекте я нашел некоторые css-файлы, которые «пахнут», как будто в них есть скопированные в них правила.Советы по отображению сходства в файлах

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

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

+0

Связанный вопрос - http://stackoverflow.com/questions/2490884/why-is-copy-and-paste-of-code-dangerous – Oded

+0

Возможный дубликат [Как найти аналогичный фрагмент кода?] (Http: //stackoverflow.com/questions/709744/how-to-find-a-similar-code-fragment) –

ответ

4

Пробег: Simian.

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

+0

есть ли способ сделать simian показать фактические сходства? На моем тестовом прогоне он показывает только сводку, в которой «строки a-b в файле X похожи на строки c-d в файле Y» ??? Отображение фактических строк поможет прояснить многое –

+0

Или еще лучше: есть ли способ показать, что он отличается для похожих линий? –

+0

Боюсь, вам придется вручную проверять результаты или написать инструмент, который оценивает результаты Simian и прикрепляет их к средству просмотра файлов. Возможно, для этой цели вы можете использовать бесплатный инструмент diff (например, WinMerge, http://winmerge.org/). Если вы решите для последнего: меня тоже будет интересовать такое решение ... –

3

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

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

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

+1

Инструмент CPD кажется очень ограниченным на языках. И не имеет javascript или CSS –

+0

Спасибо за указание на «этот вопрос». Очень похоже на это, btw :) –

1

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

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

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

+0

Ваша ссылка не работает? Не могли бы вы обновить свой ответ? –

+0

... упс ... исправлено. –

 Смежные вопросы

  • Нет связанных вопросов^_^