golang轻量级的代码复制粘贴检查器 cpd
golang轻量级的代码复制粘贴检查器 cpd
项目地址: https://github.com/dengjiawen8955/copy-paste-detector

快速开始
clone
git clone https://github.com/dengjiawen8955/copy-paste-detector.git
cd copy-paste-detector
配置文件 vim cpd.toml
minRepeatLine = 4 # 最小重复行
parseFolder = "out" # 解析的文件夹路径
Ignore = [] # 过滤的正则表达式
Contain = [] # 匹配的正则表达式文件, 优先级高于 Ignore
编译
go build copy-paste-detector .
可选: 指定配置文件
$ ./copy-paste-detector -h
Usage of ./copy-paste-detector:
--config string config file (default "cpd.toml")
pflag: help requested
run
$ ./copy-paste-detector
+------+------+--------------+
| 片段 | 序号 | 文件名:行数 |
+------+------+--------------+
| 1 | 1 | out1.txt:2-5 |
| 1 | 2 | out2.txt:6-9 |
+------+------+--------------+
b
c
d
3
实现思路
- Parser 主要返回
map[string][]IDLine重复的 IDLine 可以通过 IDLine 查询到确定的文件和确定的行 - Detector 主要返回
BlockMatrix [][]*Block{Start, End}重复代码块, 遍历链表, 通过重复 map 的 IDLine 获取重复代码块
优化思路
重复代码检测专利: https://patents.google.com/patent/CN106294139B/zh
参考 jscpd: https://github.com/kucherenko/jscpd
本文由mdnice多平台发布
golang轻量级的代码复制粘贴检查器 cpd的更多相关文章
- wps 图片代码 复制 粘贴
<table><tr><td><img src="C:\Users\Administrator\Desktop\QQ截图20160921180946 ...
- 21行python代码实现拼写检查器
引入 大家在使用谷歌或者百度搜索时,输入搜索内容时,谷歌总是能提供很好的拼写检查,比方你输入 speling,谷歌会立即返回 spelling. 前几天,看到http://norvig.com/spe ...
- 百度知道的代码复制粘贴到VB没有换行怎么办
在如下所示的网页中,复制 粘贴到word文档,换行还是有的 再复制到VB6.0中还是可用的
- golang 防SQL注入 基于反射、TAG标记实现的不定参数检查器
收到一个任务,所有http的handler要对入参检查,防止SQL注入.刚开始笨笨的,打算为所有的结构体写一个方法,后来统计了下,要写几十上百,随着业务增加,以后还会重复这个无脑力的机械劳作.想想就l ...
- Revealjs网页版PPT让你复制粘贴另类装逼,简洁优雅又低调,不懂编程也看过来
Revealjs网页版PPT让你复制粘贴另类装逼,简洁优雅又低调,不懂编程也看过来 要了解一个新知识我们可以从三个方面入手:是什么,有什么用,怎么用.下面我们就从这三个方面进行讲解Reveal.js噢 ...
- python 拼写检查代码(怎样写一个拼写检查器)
原文:http://norvig.com/spell-correct.html 翻译:http://blog.youxu.info/spell-correct.html 怎样写一个拼写检查器 Pete ...
- 使用vs2010复制粘贴代码时特别卡用一段时间就特别卡重启也没用
vs2010编写代码一段时间后复制粘贴特别卡,下拉条也特别卡,这个状况困扰了我两个月,实在忍不住了,去网上搜了搜 有网友说是快捷键冲突,所以我就把其他程序结束了,结果莫名奇妙的瞬间就不卡了.最终弄明白 ...
- Cocos Creator JS web平台复制粘贴代码(亲测可用)
Cocos Creator JS web平台复制粘贴代码(亲测可用) 1 webCopyString: function(str){ var input = str; const el = docum ...
- php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行)
php求和为s的两个数字(多复制上面写的代码,有利于检查错误)(由浅入深,先写简单算法,做题的话够用就行) 一.总结 1.多复制上面写的代码,有利于检查错误 2.一层循环就解决了,前后两个指针,和大了 ...
- 原生js复制粘贴上传图片前后台代码,兼容firebox,chrome, ie11,亲测有效
需求:粘贴上传图片,截图工具,右键粘贴,或者ctrl+v粘贴 方法1:可直接套用富文本框的图片上传功能,完成复制粘贴 缺点:麻烦,样式难控制 方法2:用原生js完成,以下案例基于此,样式请自己动手调整 ...
随机推荐
- ASP.NET Core - 实现自定义WebApi模型验证 ModelState
Framework时代 在Framework时代,我们一般进行参数验证的时候,以下代码是非常常见的 [HttpPost] public async Task<JsonResult> Sav ...
- 『手撕Vue-CLI』下载指定模板
开篇 经上篇文章的介绍,实现了获取下载目录地址,接下来实现下载指定模板的功能. 背景 通过很多章节过后,已经可以拿到模板名称,模板版本号,下载目录地址,这些信息都是为了下载指定模板做准备的. 实现 如 ...
- python-判断两个序列的成员是否一样
目的:判断两个序列的成员是否一样,如:list1 = [1, 2],list2 = [2, 1],则两个序列的成员是一样的. 实现:借助集合set()的性质实现. 代码如下: 1 if __name_ ...
- Github Markdown 指定图片在光亮或暗黑模式展示
Github 根据系统配置不同的主题模式: 如果想要在光亮模式和暗黑模式显示不同的主题的图片,比如以下就是同一个图片在暗黑模式和光亮模式下展示: 解决方案 在markdon 的图片链接后添加#gh-d ...
- C# 利用Autofac批量接口注入依赖【学习记录】
背景: 本人在一位大佬的Colder框架中看到了这个接口注入,然后呢就想学习一下ioc思想与di设计模式.此写法给我的感觉就是 非常的 优雅 ,优雅永不过时.关于接口注入的概念和ioc和di具体是什么 ...
- css制作骰子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- vue自定义指令 - directive
https://cn.vuejs.org/v2/guide/custom-directive.html 除了核心功能默认内置的指令,Vue也允许注册自定义指令.有的情况下,对普通 DOM 元素进行底层 ...
- element el-input 去掉边框
element样式还是蛮好的,只是有时候我们需要做一些调整,比如,el-input 的边框,官网是这样子的 我们需要去掉这个边框 试了常用的:border: none: 以及:outline:non ...
- python类和对象初识
# python类和对象初识 a = 2 b = 3 print(id(a)) print(type(a)) print(a) print(id(b)) print(type(b)) print(b) ...
- ZynqMP PL固件通过U-BOOT从指定位置加载FPGA BIT
原因 PL固件可能经常修改,而BOOT.BIN和文件系统.内核实际上基本不会变,在一个平台上可以用同一份.如果每次修改都要重新打包PL 固件到BOOT.BIN,操作起来非常麻烦.所以希望PL 的固件可 ...