| name | code-detect-dup |
| description | 代码重复度检测技能:使用 Simian 和 JSCPD 检测项目中的重复代码 |
工具一:Simian
java -jar ~/app/simian/simian-4.2.1.jar \
-language=java -threshold=20 \
$(fd -H -I -s -c never -t f -e java | grep --color=never -v "\/test\/" | xargs) \
> docs/dup-{yyyy-mm-dd}-{seq}.txt 2>&1
- threshold 代表重复代码的行数,应根据实际情况调整
- language 根据实际情况调整:java/cpp/csharp/javascript
- fd0='fd -H -I -s -c never', grep0='grep --color=never'
- seq 应从 001 开始,按日重置,报告应 git 留档
工具二:JSCPD
npm install -g jscpd
jscpd src/ --min-lines 15 --reporters html,console --output docs/jscpd-{yyyy-mm-dd}-{seq}
jscpd src/ --min-lines 15 --ignore "**/test/**,**/node_modules/**" --reporters html,console
jscpd . --extensions java,ts,py,cpp --min-lines 15 --reporters html --output docs/jscpd-report
- --min-lines 最小重复行数,建议 Java 15-20,Python 10-15,Shell 5-10
- --reporters 支持console/html/json/xml
- --extensions 指定语言,不指定则自动检测
- HTML 报告在 output/index.html
工具对比
| 特性 | Simian | JSCPD |
|---|
| 语言 | Java/C/C++/C# | 150+语言 |
| 报告 | 文本 | HTML可视化 |
| 安装 | JAR包 | npm |