Как найти копипастера?

Вам нравятся копипастеры? Мне нет. Речь не о плагиате и плагиаторах ( о них читайте на copypaster.ru), а про тех кто кодирует или программы пишет методом copy/paste.

Есть замечательная программа Simian — Similarity Analyser. Она не бесплатная, но 15 дней дней trial period хватит. (Ей можно и потом пользоваться, но это уже будет неэтично).

Все хорошо, но в Visual Studio она не встроена, да и в eclipse тоже, но об этом позже. Текстовый вывод хорошо, и анализ неплох, но хотелось все одним или двумя, на крайний случай тремя кликами всем управлять.

Решение описано здесь. НО мне не понравилось, задача, то простая, формат подменить, что бы VS понимала.

Заменить:

Found 36 duplicate lines in the following files:
Between lines 41 and 112 in D:\projects\nant-0.86-beta1\src\NAnt.VSNet\EverettSolution.cs
Between lines 41 and 112 in D:\projects\nant-0.86-beta1\src\NAnt.VSNet\Everett\Solution.cs

На:

Found 36 duplicate lines in the following files:
D:\projects\nant-0.86-beta1\src\NAnt.VSNet\EverettSolution.cs (41) 112
D:\projects\nant-0.86-beta1\src\NAnt.VSNet\Everett\Solution.cs (41) 112

Зачем программу писать, если perl по рукой.

Делаем файл simian.bat с одной строкой (двумя, двумя)

@echo off
d:\lib\simian\bin\simian-2.2.18 %1 %2 %3 %4 | perl -ne» print /Between lines (\d+) and (\d+) in (.+)/ ?  \»$3 ($1) $2\n\» : $_;»

И в visual studio делаем новый external tools. (Кому одного мало одного, по ссылке можно по ссылке выше прочитать больше.)

image

Тем у кого нет perl:

  • bat file не создаем
  • в VS меняем Command: d:\lib\simian\bin\simian.bat на simian-2.2.X.exe -formatter=vs

и все, с версии 2.2.8 есть новый формат vs.

Для eclipse был плагин — да спыл, нет его больше. Год назад я его пробовал запустить, eclipse подавился,(хотя в сумме кода не больше 6Mb)

Конечно, для полноценного code review и поиска дубликатов нужен не просто список дублирующихся фрагментов, а полноценный GUI с подсветкой дубликатов, что бы можно было видеть дубликаты в контексте.

Simian не единственный в своем классе продукт, но я остальные либо заточены под Java, либо я до них еще не добрался.

Tags: , , , , ,

Смотрите также: