Skip to content

代码热点分析

识别项目中的"问题热点"文件,量化技术债务风险。

概述

代码热点是指那些频繁修改且与 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

各维度说明

维度权重计算方法
Churn40%文件修改次数 / 最大修改次数
BugFactor35%Bug 修复提交数 / 总修改次数
Complexity15%文件大小 / 基准大小(10KB)
TimeDecay10%时间衰减因子(近期权重更高)

时间衰减算法

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'

基于 MIT 许可发布