工具下载地址: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=FNAME Reads the configuration from the specifiedfile
-defaultLanguage=LANG Assumes files are in the specified language if none can be inferred
-excludes=SPEC Excludes 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:END Ignores 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=SPEC Including files matching the specified pattern
-language=LANG Assumes ALL files are in the specified language
-reportDuplicateText[+/-] Prints the duplicate text in reports
-threshold=COUNT Matches 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性能评测优化》

使用Simian工具扫描重复代码相关推荐

  1. 从阿里跳槽来的工程师,分享了三套干掉 “重复代码”方式,真的太绝了!

     附:糖豆广场舞永久会员TV版 软件工程师和码农最大的区别就是平时写代码时习惯问题,码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码. 业务同学抱怨业务开发没有技术含量,用不到设计模 ...

  2. Android Studio 工具:Lint 代码扫描工具(含自定义lint)

    什么是 Lint Android Lint 是 SDK Tools 16(ADT 16)开始引入的一个代码扫描工具,通过对代码进行静态分析,可以帮助开发者发现代码质量问题和提出一些改进建议.除了检查 ...

  3. java文档检测重复_使用Simian进行重复代码检测

    一.概述 Simian是一个可跨平台使用的重复代码检测工具,有商用和免费两种使用渠道,官方网址为:http://www.harukizaemon.com/simian/installation.htm ...

  4. java date 格式化_3种 Springboot 全局时间格式化方式,别再写重复代码了

    原文:3种 Springboot 全局时间格式化方式,别再写重复代码了 掘金 作者: 程序员内点事 时间格式化在项目中使用频率是非常高的,当我们的API接口返回结果,需要对其中某一个date字段属性进 ...

  5. 代码合并工具_11个代码质量审核和管理工具,程序员必备!

    「 读者福利!2 TB 各类技术资源免费赠送 」 如今,代码质量分析和审核已成为每个企业的基本流程.随着开源代码库使用的增加,安全性和代码质量对于构建高质量软件至关重要.不良的代码不仅会影响代码的可维 ...

  6. VS开发中的代码编写小技巧——避免重复代码编写的几种方法

    原文:VS开发中的代码编写小技巧--避免重复代码编写的几种方法 上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都 ...

  7. 通过 Python 装饰器实现DRY(不重复代码)原

    通过 Python 装饰器实现DRY(不重复代码)原 Python装饰器是一个消除冗余的强大工具.随着将功能模块化为大小合适的方法,即使是最复杂的工作流,装饰器也能使它变成简洁的功能. 例如让我们看看 ...

  8. 通过 Python 装饰器实现DRY(不重复代码)原则

    通过 Python 装饰器实现DRY(不重复代码)原则 英文原文:DRY Principles through Python Decorators Python装饰器是一个消除冗余的强大工具.随着将功 ...

  9. jenkins配置sonar并扫描C#代码

    背景:我的jenkins搭在linux上 1.下载插件 下载插件sonarqube scanner,用来集成sonarqube,在配置任务的时候才有sonarscanner的选项. 2.全局工具配置 ...

  10. Setup Factory 打包工具部分功能代码解

    Setup Factory 打包工具部分功能代码解 Application.Exit 退出安装程序,并返回一个可选的返回代码.Application.GetInstallLanguage 返回一个包含 ...

最新文章

  1. ffplay.c学习-6-⾳视频同步基础
  2. 计算机应用段落设置,计算机应用操作基础.docx
  3. PHPExcel读取excel文件
  4. 云南昭通暴雨强度公式_全国暴雨强度公式2018
  5. 会声会影2022Win64中文版特别版
  6. 入门必看,51单片机学习三步走
  7. 机器学习入门好文章--超级推荐
  8. RFID工作频率分类
  9. 风暴过后的小红书破圈解题,社区价值或被重估
  10. 敞开心扉,一起聊聊Java多线程
  11. Jenkins Pipeline 小试牛刀以及引入指定的环境变量
  12. 11月8日google pr更新(今年第四次)
  13. 访问www.baidu.com的过程
  14. 捕获海康威视IPCamera图像,转成OpenCV能够处理的图像(二)
  15. 032 参数方程确定的函数导数
  16. 4年测试经验去面试10分钟就被pass,测试现在要求这么高了?
  17. 蛇形印刷天线设计实战
  18. 空三加密matlab,剖析空三的意义及航天远景空三加密流程
  19. 浙江省高级工程师职称评审条件
  20. python爬取豆瓣租房信息

热门文章

  1. Calendar打印日历
  2. SimpleITK读取DCM文件
  3. Python3网络爬虫(三):漫画下载,动态加载、反爬虫这都不叫事!
  4. dns解析服务器原理,简述DNS服务器原理
  5. windows 资源监视器
  6. 常见电平转换电路设计参考
  7. 信号分析与处理 基于matlab认识实验
  8. Sketch 51 新功能介绍(包含破解版下载)
  9. HTTP下载文件到本地
  10. 【转载】Unity3D导入FBX模型的相关属性介绍