一、概述

Simian是一个可跨平台使用的重复代码检测工具,有商用和免费两种使用渠道,官方网址为:http://www.harukizaemon.com/simian/installation.html,能够检测代码片段中除了空格、注释及换行外的内容是否完全一致,且支持的语言十分广泛,包括:

  • Java
  • C#
  • C++
  • C
  • Objective-C
  • JavaScript (ECMAScript)
  • COBOL, ABAP
  • Ruby
  • Lisp
  • SQL
  • Visual Basic
  • Groovy
  • Swift

二、安装与使用

直接下载文件http://www.harukizaemon.com/simian/get_it_now.html,推荐下载.MD5版本,保证下载的文件是完整的。下载后解压,无需安装即可使用。

Windows平台使用bin目录下的exe,linux平台可执行bin目录下的simian*.jar。

三、示例

c:\>simian.exe [options] files

一些参数:
  • 检查包括子目录下的所有的c#文件:

"-recurse=*.cs"

  • 检查当前目录下的所有c#文件 ,并且只检查代码3行以上重复的代码

-threshold=3 "*.cs"

  • 在当前目录的所有子文件夹下检测所有c和h后缀的文件:
    **/*.c **/*.h
  • 检测两个不同目录下的所有java文件:
    "/csharp-source/*.cs" "/java-source/*.java"
  • 检测所有子目录下的所有java文件,包括test类:
    -includes=**/*.java -excludes=**/*Test.java
  • 检测当前目录下的所有java文件,且忽略其中的数字的不同:
    -ignoreNumbers "*.java"
  • 检测所有java文件,并以xml格式显示结果:
    -formatter=xml "*.rb"
  • 从文件中读取配置参数(文件中一行只能包括一个simian有效的参数):
    -config=simian.config

使用Simian进行重复代码检测的更多相关文章

  1. idea详细设置:编码、代码提示大小写、窗口数量限制、自动导包、serialID、重复代码警告、热部署等设置

    提示: idea ultimate 2018.2 idea-file-setttings设置的是当前项目的配置(只针对当前项目生效)idea-file-others settings相当于以后导入创建 ...

  2. 重复代码检查工具simian的基本用法

    simian是一个检查重复代码的工具,支持通过命令行和UI方式来检查代码,可以检查多种语言(比如C\C++, java, c#等)的代码,常见的编程语言都支持,下面先来看看如何使用命令行来检查c++重 ...

  3. 搭建基于SornaQube的自动化安全代码检测平台

    一.背景和目的 近年来,随着新业务.新技术的快速发展,应用软件安全缺陷层出不穷.虽然一般情况下,开发者基本都会有单元测试.每日构建.功能测试等环节来保证应用的可用性.但在安全缺陷方面,缺乏安全意识.技 ...

  4. Web前端开发最佳实践(9):CSS代码太太乱,重复代码太多?你需要精简CSS代码

    前言 提高网站整体加载速度的一个重要手段就是提高代码文件的网络传输速度.之前提到过,所有的代码文件都应该是经过压缩了的,这可提高网络传输速度,提高性能.除了压缩代码之外,精简代码也是一种减小代码文件大 ...

  5. 学习:java代码检测

    转自:http://zh.wikipedia.org/wiki/%E4%BB%A3%E7%A0%81%E5%BC%82%E5%91%B3 对于Java开发语言,有些工具,比如Checkstyle.PM ...

  6. 恶意代码检测工具 -- Mathematics Malware Detected Tools

    Mathematics Malware Detected Tools 重要:由于缺少测试数据,部分结论可能不正确.更多更准确的结论,还需要进行大量实验. 概述 mmdt(Mathematics Mal ...

  7. 重复代码的克星,高效工具 VSCode snippets 的使用指南

    为什么要用 snippets(代码段)? 不管你使用何种编程语言,在我们日常的编码工作中,都会存在有大量的重复代码编写,例如: 日志打印: console.log,log.info('...') 输出 ...

  8. 代码的坏味道(14)——重复代码(Duplicate Code)

    坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...

  9. 基于git diff进行的eslint代码检测

    缘起 在项目中, 通常都会使用代码检测工具来规范团队的代码风格, 比如eslint.随着代码的不断增加, eslint进行代码检测的时间也越来越久.每次检测的时候, 需要检测的文件和实际检测的文件极度 ...

随机推荐

  1. C++分治策略实现快速排序

    问题描述: 给定一个未知顺序的n个元素组成的数组,现要利用快速排序算法对这n个元素进行非递减排序. 细节须知: (1)代码实现了利用递归对数组进行快速排序,其中limit为从已有的随机数文件中输入的所 ...

  2. 前端调试代码 chrom 和 火狐禁用缓存 Disabled cache

    前端调试的时候经常遇到缓存问题, chrome : f12  ---> 找到 Disabled caceh 勾上 火狐: f12 找到 禁用缓存

  3. Flannel 原理简析及安装

    flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具.它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip:让所有的容器认为大家在同一个直 ...

  4. dataGridView读写文本

    constant con = new constant(); private void loadlistbox2() { dataGridView1.ColumnCount = 1; string z ...

  5. NEST dynamic 和 alias

    /// <summary> /// Dynamic = false无法搜索 /// </summary> public void Dynamicmapping() { var ...

  6. CGContextRef&CGMutablePathRef&UIBezierPath简单学习

    简单的四句介绍 Quartz是一个二维绘图引擎,使用的是CoreGraphics库,同时支持iOS和Mac系统 CGContextRef:获取图形上下文.或者叫作用域,即画布,他是专门用来保存绘画期间 ...

  7. python day 17: UML(统一建模语言)

    python day 17 UML:unified modeling languages,是一种基于面向对象的可视化建模语言. 画图语言:画图要合理.即符合逻辑. 历史: 3.1. 软件功能越来越强大 ...

  8. Code Clean读书笔记

    代码整洁之道读书笔记 by fangpc 序言部分 "神在细节之中" - 建筑师路德维希 5S哲学(精益) 整理(Seiri):搞清楚事物之所在--通过恰当地命名之类的手段--至关 ...

  9. Android为TV端助力之:maxWidth设置无效

    android:maxWidth用过几次,之前有效,今天再用就无效了.其实是有两个注意点的,记录下: 1. android:adjustViewBounds="true" 2.an ...

  10. ubuntu16.04重置root密码

    问题描述: 一个用户不能G附加多个用户组,在centos没有问题的.具体的还不清楚 问题解决:   重启进入启动项修改启动参数进入root中设置密码 参考: https://www.cnblogs.c ...