# 重复代码检测Skill

> Skill

- Skill: `sky-cube/skill-64` (Agent Skill)
- Install (CLI): `npx skillmds@latest add sky-cube/skill-64`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sky-cube/skill-64/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Sky-Cube (https://skillmd.com/u/sky-cube)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sky-cube/skill-64

---

# 重复代码检测Skill

## 适用场景
代码质量度量环节,检测项目内重复代码块,统计重复率,按类型给出抽取公共方法/模块或保留的处置建议。

## 执行步骤
1. 选工具:优先运行现有工具(jscpd、SonarQube duplication、PMD CPD);无工具时人工比对(同文件相邻重复、跨文件相似结构逐段比对)。
2. 应用阈值(默认值,可按项目调整)筛选重复块。
3. 输出重复块清单:双位置证据、行数、相似度。
4. 按重复类型给处置建议,并统计重复率。

## 阈值与判定(默认)
| 规模 | 判定 |
|---|---|
| <10 行且仅 1 处重复 | 可接受,不处理 |
| 10-50 行或 2-3 处重复 | 建议抽取公共方法/基类 |
| >50 行或 >3 处重复 | 必须抽取公共模块/工具类/共享库 |
| 仅注释、字符串、生成代码相似 | 不计入重复,标记忽略 |

## 处置建议(按重复类型)
- 抽取公共方法:功能完全一致的代码块,抽到工具类/基类,调用方替换。
- 模板方法/策略模式:结构相似、局部步骤不同的代码块。
- 抽公共模块:跨服务/跨仓库重复,抽共享库或 SDK 统一维护。
- 保留不处理:重复内容为配置、协议生成代码、遗留代码冻结区,注明理由。

## 规范要点
- 每处重复必须给出双位置证据:文件路径 + 行号 + 重复行数,禁止「感觉这段代码哪见过」式结论。
- 相似度判定必须注明口径:工具名 + 参数,或人工比对的比对标准。
- 与全局规范一致:重复逻辑必须抽取公共方法,禁止复制粘贴式开发。
- 建议抽取时必须说明:目标落点(哪个工具类/基类)+ 调用方替换范围。

## 输出模板
```
## 重复代码检测报告
| # | 重复块描述 | 位置1(文件:行) | 位置2(文件:行) | 行数 | 相似度 | 处置建议 |
## 重复率统计(重复行数 / 总行数,工具与参数)
## 忽略清单(注释/生成代码,附理由)
```

## 自检清单
- [ ] 每处重复有双位置证据
- [ ] 阈值与相似度口径已说明
- [ ] 每处重复有处置建议(含「不处理」的理由)
- [ ] 重复率已统计

