使用Simian工具扫描重复代码


工具下载地址:http://www.harukizaemon.com/simian/get_it_now.html

1. simian命令行的格式:

  1. java -jar simian.jar [options] [files]
  2. simian.exe [options] [files]

2. Usage: [options] [files]

命令描述
-balanceCurlyBraces[+/-]Accounts for curly braces when breaking lines
-balanceParentheses[+/-]Accounts for parentheses when breaking lines
-balanceSquareBrackets[+/-]Accounts for square brackets when breaking lines
-config=FNAMEReads the configuration from the specifiedfile
-defaultLanguage=LANGAssumes files are in the specified language if none can be inferred
-excludes=SPECExcludes files matching the specified pattern
-failOnDuplication[+/-/%]Exits with a failure return code if duplication detected
-formatter=TYPE[:FNAME]Uses the specified output format when reporting
-ignoreBlocks=START:ENDIgnores all lines between START/END
-ignoreCharacterCase[+/-]Matches character literals irrespective of case
-ignoreCharacters[+/-]Completely ignores character literals
-ignoreCurlyBraces[+/-]Completely ignores curly braces
-ignoreIdentifierCase[+/-]Matches identifiers irresepctive of case
-ignoreIdentifiers[+/-]Completely ignores identifiers
-ignoreLiterals[+/-]Completely ignores all literals (strings, numbers and characters)
-ignoreModifiers[+/-]Ignores modifiers (public, private, static, etc.)
-ignoreNumbers[+/-]Completely ignores numbers
-ignoreOverlappingBlocks[+/-]Ignores blocks that wholly or partially overlap
-ignoreRegions[+/-]Ignores all lines between #region/#endregion
-ignoreStringCase[+/-]Matches string literals irrespective of case
-ignoreStrings[+/-]Completely ignores the contents of strings
-ignoreSubtypeNames[+/-]Matches on similar type names (eg. Reader and FilterReader)
-ignoreVariableNames[+/-]Completely ignores variable names (fields, parameters and locals)
-includes=SPECIncluding files matching the specified pattern
-language=LANGAssumes ALL files are in the specified language
-reportDuplicateText[+/-]Prints the duplicate text in reports
-threshold=COUNTMatches will contain at least the specified number of lines

3. 参照下图分5个步骤:

这里写图片描述

  1. 打开cmd,cd进入simian-2.3.35文件夹的bin目录;
  2. 执行命令java -jar simian-2.35.jar
  3. 后面可以根据自己的需求添加选择;(如-ignoreVariableNames+ 表示忽略变量名,+号表示要添加这个属性,-号表示不添加这个属性(也可以不写);-threshold=10 表示10行以上的重复才统计;)
  4. 需要扫描的文件的路径E:\...\main\**.java;(**.java表示main文件夹下的所有java文件;)
  5. 将统计出来的数据写入生成的duplicates10.txt文件中;(文件名随意,默认生成在simian的bin目录下;)

4. 生成的duplicates10.txt内容:

Similarity Analyser 2.3.35 - http://www.harukizaemon.com/simian
Copyright (c) 2003-2013 Simon Harris. All rights reserved.
Simian is not free unless used solely for non-commercial or evaluation purposes.
// 配置的options选项,如ignoreVariableNames=true, threshold=10等
{failOnDuplication=true, ignoreCharacterCase=true, ignoreCurlyBraces=true, ignoreIdentifierCase=true, ignoreModifiers=true, ignoreStringCase=true, ignoreVariableNames=true, threshold=7}
Found 12 duplicate lines in the following files:
Between lines 64 and 75 in E:…\main\java\com\example\ui\activity\MainActivity.java
Between lines 62 and 73 in E:…\main\java\com\example\ui\activity\MainActivity.java
Found 13 duplicate lines in the following files:
Between lines 81 and 98 in E:…\main\java\com\example\module_widget\widget\Bezier3.java
Between lines 68 and 84 in E:…\main\java\com\example\module_widget\widget\Bezier2.java

……

Found 173 duplicate lines in 19 blocks in 9 files
Processed a total of 1409 significant (2905 raw) lines in 25 files
Processing time: 0.047sec



参考:

《移动App性能评测优化》

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Simian是一种用于检测代码重复内容的工具。它可以扫描代码文件,查找相似或完全相同的代码段,并将它们报告为重复项。这有助于开发人员识别可能存在的冗余代码,从而改善代码质量和可维护性。 Simian可以用于支持各种编程语言,包括Java、C++、C#、Python等。它可以扫描整个项目或特定的代码文件,并可根据用户设定的规则进行处理。 使用Simian工具的好处有很多。首先,它可以帮助开发团队识别并消除代码中的重复部分,从而减少代码库的大小和复杂性。这可以提高代码的可读性和可维护性,节省时间和精力。 其次,Simian可以发现隐藏的问题,如复制黏贴错误。有时开发人员可能会复制一段代码,稍作修改并粘贴到另一个位置,但忘记了修改部分代码Simian可以帮助开发者找出这些隐藏的错误,并及时进行修复,避免潜在的bug。 此外,Simian还提供了比较功能,可以比较两个代码库中的重复项。这对于开发人员来说非常有用,因为他们可以比较自己的代码与其他团队成员或外部代码库中的代码,以避免冲突或重复工作。 总之,Simian是一款非常实用的工具,可以帮助开发人员发现和解决代码中的重复问题,提高代码的质量和可维护性。它的使用简单灵活,适用于多种编程语言,是开发团队提高效率和减少错误的有力工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值