Как стать автором
Обновить

Комментарии 4

Вопрос немного в сторону: можно ли инкрементально отслеживать copy-paste?

Ситуация такая, что есть достаточно объёмный проект на C++ со значительным объёмом copy-paste. Кардинально исправлять ситуацию дорого, но нового copy-paste хотелось бы избегать, и оперативно находить.
Думаю, что простейший скрипт сможет сопоставить два XML файла с отчетами и выделить новые записи.
Простейший скрипт будет работать, но, боюсь что ложных срабатываний не избежать. Чтобы выпустить в жизнь хотелось бы учесть несколько вещей:
— номера строк могут ехать (редактирование без внесения нового copy-paste'а)
— файлы могут перемещаться между проектами
— нужен какой-то хороший матчинг (иногда между файлами есть независимые друг от друга copy-paste'ы). Их хочется различать
— замечал, что cpd иногда даёт разные результаты при разных запусках на одном и том-же коде :(

Чтобы довести всё до ума потребуется время и силы, если не доводить, то это забросят из-за ложных срабатываний.
Идеальный вариант, достичь zero-level, расширять эту зону и смотреть отклонения от него (например на уровне файлов пометить некоторые, как copy-paste-free)
order = leaves_list(linkage(1 / mat))

Тут можно попробовать Гауссову функцию (mat должно иметь значение от 0 до 1, sigma подбирается по вкусу):

sqrt(-2 * sigma^2 * ln(mat))
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации