Appearance
代码热点分析
识别项目中的"问题热点"文件,量化技术债务风险。
概述
代码热点是指那些频繁修改且与 Bug 修复高度关联的文件。这些文件往往是技术债务的重灾区,需要重点关注和重构。
使用方式
VS Code 插件:
- 侧边栏:代码热点 → 开始分析
- 命令面板:
Git Doctor: 分析代码热点
CLI:
bash
git-doctor hotspots热点视图
┌─────────────────────────────────────────┐
│ 代码热点 │
├─────────────────────────────────────────┤
│ 🔥 高风险 (TDI > 80) │
│ └─ src/core/parser.ts │
│ 修改次数: 45 | Bug修复: 12 │
│ TDI: 85.3 │
│ │
│ ⚠️ 中风险 (TDI 60-80) │
│ └─ src/utils/helper.ts │
│ 修改次数: 23 | Bug修复: 5 │
│ TDI: 67.2 │
│ │
│ 📝 低风险 (TDI 30-60) │
│ └─ src/api/client.ts │
│ 修改次数: 15 | Bug修复: 2 │
│ TDI: 42.1 │
└─────────────────────────────────────────┘TDI 技术债务指数
计算公式
TDI = Churn × BugFactor × Complexity × TimeDecay各维度说明
| 维度 | 权重 | 计算方法 |
|---|---|---|
| Churn | 40% | 文件修改次数 / 最大修改次数 |
| BugFactor | 35% | Bug 修复提交数 / 总修改次数 |
| Complexity | 15% | 文件大小 / 基准大小(10KB) |
| TimeDecay | 10% | 时间衰减因子(近期权重更高) |
时间衰减算法
typescript
function calculateTimeDecay(lastModified: Date): number {
const daysSinceModified = /* 计算天数差 */
// 180天内线性衰减:1.0 → 0.5
if (daysSinceModified <= 180) {
return 1.0 - (daysSinceModified / 180) * 0.5
}
return 0.5 // 180天后保持最低权重
}风险级别
| TDI 范围 | 风险级别 | 颜色 | 建议 |
|---|---|---|---|
| 0-30 | 低风险 | 🟢 绿色 | 正常维护 |
| 31-60 | 中风险 | 🟡 黄色 | 关注监控 |
| 61-80 | 高风险 | 🟠 橙色 | 计划重构 |
| 81-100 | 严重风险 | 🔴 红色 | 优先处理 |
热力图
可视化展示代码变更热度。
打开方式:
- 命令面板:
Git Doctor: 打开热力图 - 代码热点视图 → 工具栏 → 热力图图标
热力图说明
- 颜色越深 = 修改越频繁
- 点击文件可查看详细历史
- 支持按目录聚合展示
技术债务仪表盘
打开方式:
- 命令面板:
Git Doctor: 技术债务仪表盘
仪表盘内容
- 📊 总体债务评分 - 仓库整体技术债务水平
- 📈 债务趋势图 - 按月统计债务变化
- 📁 模块分布 - 各目录的债务占比
- 🎯 治理优先级 - 建议优先重构的文件
AI 分析
AI 热点分析建议
Git Doctor: AI 分析热点建议AI 会分析热点文件并提供:
- 问题根因分析
- 重构建议
- 优先级排序
AI 生成债务治理计划
Git Doctor: AI 生成债务治理计划生成结构化的治理方案:
- 短期目标(1-2周)
- 中期目标(1-2月)
- 长期目标(季度)
配置项
json
{
// 热点判定的最小修改次数
"gitDoctor.hotspot.churnThreshold": 10,
// 分析时间范围(天)
"gitDoctor.hotspot.timeRange": 90,
// 排除的文件模式
"gitDoctor.hotspot.excludePatterns": [
"**/node_modules/**",
"**/*.min.js",
"**/dist/**",
"**/build/**",
"**/*.lock",
"**/package-lock.json"
],
// Bug Fix 识别关键词
"gitDoctor.hotspot.bugFixKeywords": [
"fix", "bug", "issue", "hotfix", "patch",
"修复", "问题", "修正"
]
}最佳实践
1. 定期分析
建议每周或每个迭代结束后运行热点分析,跟踪债务变化趋势。
2. 设置合理阈值
根据项目规模调整 churnThreshold:
- 小项目:5-10
- 中型项目:10-20
- 大型项目:20-50
3. 关注趋势而非绝对值
单次 TDI 值参考意义有限,应关注:
- 趋势是否在上升
- 新增热点的速度
- 重构后的改善效果
4. 结合 CI 使用
bash
# 在 CI 中检查热点数量
git-doctor hotspots --json | jq '.critical | length'