Simian : a similarity analyser
目的
- 找出高度重複的程式碼片段,如不同 class 中類似功能,但可以整併在一起,提供未來重構的重要資訊。
簡介
- 支援多種中高階程式語言,如 C++, Java, C#, Ruby, ASP, HTML, XML, COBOL, ... 等。
授權
Simian 的授權依照不同的使用狀況而有差異,如下:
Licences for Non-Commercial Projects and Evaluation : 對於非商業的免費軟體或開源組織,提供免費的軟體授權。
Personal/SOHO License : 個人使用者,僅能使用在一台機器上,不能產生報表,但提供技術支援及數項功能更新,但不包含下一個版本的主要功能。
Project/Build Server License : 允許使用在不同機器上或是一台機器上不同專案,提供電話或是信件的支援。
Enterprise and other Licenses : 大型組織使用,允許使用在很多機器的不同專案中。也可以視狀況洽談不同的授權內容。
使用 Simian
- Simian 支援兩種環境,Java 與 .NET 環境。
# java 環境下使用
java -jar simian.jar [options] [files]
# .NET 環境下使用
simian.exe [options] [files]
- options 如下:
# 儲存成 xml 檔案併命名為 SimianReport.xml
-formatter=xml:SimianReport.xml
# 超過 20 行重複才被找到
-threshold=20
# 程式語言為 java
-language=java
# 排除偵測的檔案類型
-excludes=**/*config.java
- 範例
# 比對兩個檔案
java -jar simian.jar <file1> <file2>
# 比對資料下所有 java 檔案
java -jar simian.jar <path/*.java>
# 執行設定說明
# 1. 輸出成 xml 檔案,檔名為 SimianReport.xml
# 2. 超過 20 行重複的檔案才被挑出來
# 3. 偵測的語言為 java
# 4. 排除路徑中名為 perldoc 的資料夾
# 5. 搜尋路徑及檔案為 D:\code\openshift\welcome\interface\dynamic\*.java
java -jar simian.jar -formatter=xml:SimianReport.xml -threshold=20 -language=java -excludes=**/perldoc "D:\code\openshift\welcome\interface\dynamic\*.java"