重复代码检查工具Simian

2023-11-08

简介
Simian是一个可跨平台使用的重复代码检测工具,能够检测代码片段中除了空格、注释及换行外的内容是否完全一致,且支持的语言十分广泛

官网

Simian官网:http://www.harukizaemon.com/simian/index.html

下载

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

将这2个文件都下载下来,使用MD5文件校验上面的文件是否下载完毕了。

证明文件下载的文件是完整的。

然后解压simian-2.5.10.tar.gz,并把解压后的文件放到D:\Program_Files\simian-2.5.10目录下

使用

使用bin目录下的jar

执行命令,从src目录下找到重复3行的重复代码,并将找到的结果放入D:\result.txt中

java -jar D:\Program_Files\simian-2.5.10\bin\simian-2.5.10.jar -threshold=3 "D:\workspace\idea\father\src\**\*.java" >> D:\result.txt

Simian命令行的格式

java -jar simian.jar [options] [files]

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重复代码检查工具Simian 的相关文章

随机推荐

  • windows搭建WEB打印机

    文章目录 Web Print 添加一台虚拟打印机 名称为 CS Print 发布到AD域 客户端们都能够通过访问 https print www chinaskills com 查看打印机 证书由CSK2021 ROOTCA进行签署颁发 1
  • skywalking和jpa冲突

    1 报错 org springframework security authentication InternalAuthenticationServiceException No MethodInvocation found Check
  • 【C语言】通讯录的动态存储版本

    目录 一 前言 二 为什么要动态存储 1 动态存储的作用 2动态与静态存储的区别 三 动态存储的实现 1 通讯录容量 2 初始化通讯录 3 增加 减少通讯录成员 增加通讯录成员 判断及实现扩容函数的实现 减少通讯录成员 判断及实现减容函数的
  • iOS开发常见错误代码对照表---真机调试常见错误及解决方案

    iOS真机调试常见错误及解决方案 地址https developer apple com library ios technotes tn2250 index html apple ref doc uid DTS40009933 CH1 T
  • 11下滑半个屏幕_看完小米11发布会,2万粉购买小米,雷军给苹果的致命一击

    2020年12月28日 小米11发布会正式召开 这次的小米很聪明很聪慧 让我们看到了对用户满满的诚意 首先就是跑分 对于大部分用户而言 手机的跑分就代表着手机的性能 而小米搭配的高通骁龙888芯片 就让我们有了全新的认知 最终Antutu综
  • 依赖注入的几种方式

    获取bean对象 也称为对象装配 对象注入 依赖注入 对象装配的实现方法有3种 1 属性注入 2 构造方法注入 3 Setter注入 再讲本节内容之前 我们先来提两个传参的方式 首先呢 上节的文章里边 我们提到了五大类注解和 Bean注解
  • STM32F407ZGTE6利用模拟PWM驱动42步进电机(与pwm驱动led闪烁一样)

    前言 lmf老师来帮我解决42步进电机 预转不转 的问题 利用引脚模拟pwm波形驱动42步进电机 成功找到原因 还顺便给我留下了另一种驱动思路 直接引脚驱动 解决问题 42电机原地不动的原因是 线接触不良 采用杜邦线拼接 拟解决方案 重新换
  • C++程序设计期末考试抱佛脚

    大一上的 今早的计算机概论压中一道大题 我惊呆了 先放 点我看学友的复习总结 if嵌套配对 书p45 内嵌平衡语句 if if else else if else else总是与写在它前面的 最靠近的 尚未与其他else配对的if配对 其他
  • 栈破坏下crash的分析方法

    在众多的coredump中 有一类crash调试起来是最麻烦的 那就是 栈被破坏 导致的函数调用回溯结构破坏引发的coredump 本文 主要讲讲这一类crash的成因 原理以及调试方法 1 SMTC show me the code 首先
  • 数据包络分析--保证域方法(assurance region method)附python代码以及案例

    Data envelopment analysis Assurance region method 保证域方法 Data envelopment analysis Assurance region method model AR 有效 py
  • ARIMA时间序列预测MATLAB代码模板(无需调试)

    小白专用 直接改成自己的数据运行即可完成预测并画图 我的数据在评论区自取 clear clc 小白专用 需要自己输入 仅在有这种注释的地方改成自己的数据即可 一共有4个地方 DD readmatrix B xlsx 这里输入自己的单序列数据
  • 云服务的应用场景,为什么要用云服务(学习心得)

    降低IT支出成本 云服务器无需硬件设施及机房 兼具优质扩容能力 门户网站 社区网站 电商网站 免除硬件配置与升级的忧虑 专注于服务功能的开发 大大减少网站IT基础设施成本 及运维成本 弹性扩展云服务器 当服务器需求不固定 预先估计不准确时
  • 基于动态规划的强化学习方法

    quad quad 基于动态规划的强化学习方法 quad 动态规划 dynamic programming 是程序设计算法中非常重要的内容 能够高效解决一些经典问题
  • VScode搭建Vue环境(2)

    VScode搭建Vue环境 2 目录 1 全局安装下载vue cli 2 创建项目 1 命令行创建 2 GUI创建 3 如果无法在终端打开 请看下方图片 方法1 方法2 在上一篇文章中我们下载安装并配置好了nodejs 并可以在全局环境中下
  • jQuery的Ajax实例(附完整代码)

    目录 写在前边 什么是Ajax Ajax基本结构 实例 实例1 实例2 小结 写在前边 作为一个前端刚入门没多久的小白 想在这里分享一下我的学习内容 就算是学习笔记了 因为前端的大部分学习都是通过网站上的教程 所以遇到不懂得问题 也只有求助
  • linux下保护模式之CPL,RPL,DPL总结

    linux下保护模式之CPL RPL DPL总结 先说下特权级的概念 在保护模式下 系统依靠特权级来实施代码和数据的保护 相当于权限啦 特权级共有4 个级别 0 1 2 3 数字越小特权越高 较为核心的代码和数据放在较高 靠内 的层级中 处
  • RabbitMQ-安装与配置-linux

    1 安装RabbitMQ 安装方式一 下载rabbitmq镜像 3 management为带管理界面的rabbitmq 启动rabbitmq镜像 5672端口是客户端和容器的通信端口 15672端口是web管理界面的通信端口 访问并登录we
  • Python批量插入数据

    Python批量插入数据到mysql中 相较于jdbc 简化了长度 占位符使用的 s而不是 import mysql connector as conn def getConn db conn connect host localhost
  • 分布式查找过程[HBase]Region location

    HBase的table是该region切分的 client操作一个row的时候 如何知道这个row对应的region是在哪台Region server上呢 这里有个region location过程 主要涉及到2张系统表 ROOT META
  • 重复代码检查工具Simian

    简介 Simian是一个可跨平台使用的重复代码检测工具 能够检测代码片段中除了空格 注释及换行外的内容是否完全一致 且支持的语言十分广泛 官网 Simian官网 http www harukizaemon com simian index