Simian или как защитить себя от копипаста
Автор: Федор Гаврилов
У всех со временем так бывает, что проект раздувается как на дрожжах, и очень скоро уже никто ничего не понимает в коде 10M, полном копипаста. «Как же узнать, что в моём супердвижке его нет?», — спросите вы.
На этот вопрос современные учёные уже придумали ответ.
Итак, качаем Simian, устанавливаем и пишем в Pre-Build Step проекта примерно такой батник:
C:\simian-2.2.10\bin\simian-2.2.10.exe "-recurse=D:/Work/super_mega_engine/src/*.cpp" "-recurse=D:/Work/super_mega_engine/src/*.h" -formatter=vs -failOnDuplication-
UPDATE: По сообщениям авторитетных товарищей, в новой версии следует писать так:
C:\simian-2.2.24\bin\simian-2.2.24.exe "D:/Work/super_mega_engine/src/*.cpp" "D:/Work/super_mega_engine/src/*.h" -formatter=vs -failOnDuplication-
После чего наслаждаемся выводом, навроде (все строки кликабельны, благодаря -formatter=vs):
Performing Pre-Build Event...
Similarity Analyser 2.2.10 - http://www.redhillconsulting.com.au/products/simian/index.html
Copyright (c) 2003-06 RedHill Consulting Pty. Ltd. All rights reserved..
Simian is not free unless used solely for non-commercial or evaluation purposes.
{ignoreCharacterCase=true, ignoreCurlyBraces=true, ignoreIdentifierCase=true, ignoreModifiers=true, ignoreStringCase=true, threshold=6}
Loading (recursively) *.cpp from D:\Work\ciic\src
Loading (recursively) *.h from D:\Work\ciic\src
Found 6 duplicate lines in the following files:
D:\Work\ciic\src\uSHA1.cpp(697): Between lines 697 and 702
D:\Work\ciic\src\uSHA1.cpp(686): Between lines 686 and 691
D:\Work\ciic\src\uSHA1.cpp(675): Between lines 675 and 680
D:\Work\ciic\src\uSHA1.cpp(664): Between lines 664 and 669
Found 6 duplicate lines in the following files:
D:\Work\ciic\src\uColors.cpp(233): Between lines 233 and 242
D:\Work\ciic\src\uColors.cpp(199): Between lines 199 and 208
...
Found 1525 duplicate lines in 165 blocks in 34 files
Processed a total of 17206 significant (34853 raw) lines in 72 files
Processing time: 1.501sec
и делаем соответствующие выводы. ;-)
Enjoy! :)
#copy-paste, #monkey-coders, #simian
14 июня 2009