средство обнаружения дублирования общего кода

Я ищу инструмент для дублирования кода, который не зависит от языка. Легко найти инструменты дублирования кода для конкретных языков (для Java, C, PHP, ...), но я хотел бы провести некоторый анализ дублирования кода в шаблонах с настраиваемым синтаксисом.

Меня не волнует расширенный синтаксический анализ, просто сравнение необработанных строк на основе прямой линии - это нормально. Сопоставление без учета пробелов было бы плюсом, но не обязательно. (Самостоятельно нормализовать / устранить пробелы не так уж и сложно.)

Кто-нибудь знает инструмент, который можно (неправильно) использовать для чего-то вроде этого?

Спасибо.


person Stefaan    schedule 15.11.2012    source источник
comment
Вы получите худшее обнаружение клонов, если детектор ничего не знает о синтаксисе языка. Большинство клонов не идентичный текст; это текст, который копируется и вставляется - редактируется, поэтому для их точного поиска необходимо сопоставить похожие, но не идентичные фрагменты кода. Существуют детекторы клонов с учетом синтаксиса, и в большей или меньшей степени их можно настроить так, чтобы они знали точный синтаксис языка.   -  person Ira Baxter    schedule 17.11.2012
comment
возможный дубликат советов по отображению сходства в файлах   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 31.08.2014
comment
Я действительно думаю, что вам лучше сосредоточиться на дублировании логики, а не на дублировании необработанных строк. Некоторые языки могут быть стандартными, но такое дублирование не приводит к возникновению ошибок. Когда у вас есть одна и та же нетривиальная логика в двух местах системы, это вызывает ненужную нагрузку на обслуживание.   -  person    schedule 06.05.2015


Ответы (3)


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

Кроме того, аналогичный вопрос здесь.

person Doon    schedule 15.11.2012

Вы также можете взглянуть на Sonar http://www.sonarsource.org/

person Catalin STAICU    schedule 10.06.2013
comment
Какую функцию сонарного куба можно использовать для поиска дублирования кода? Не могли бы вы указать нам на это? - person MasterJoe; 19.03.2019

Взгляните на этот https://siderlabs.com/

На данный момент он поддерживает C, C ++, Cuda и другие Python, PHP, Java, Javascript, которые скоро появятся.

person Shajibur Rahman    schedule 06.11.2020