技术债务检测Skill phx:techdebt

该技能用于分析Elixir/Phoenix项目中的技术债务,自动化检测重复代码模式、反模式,并提供重构建议,适用于代码审计和质量提升。关键词:技术债务,代码分析,重复代码检测,重构,Elixir,Phoenix,代码审计。

架构设计 0 次安装 0 次浏览 更新于 3/11/2026

name: phx:techdebt description: 分析项目的技术债务、重复代码和重构机会。用于清理或审计代码质量。

技术债务检测

查找并消除 Elixir/Phoenix 项目中的重复代码模式、反模式和重构机会。

铁律 - 绝不可违反

  1. 重构前搜索 - 在提取前理解重复代码的完整范围
  2. 三击规则 - 仅在 3+ 次重复后才提取共享代码
  3. 优先组合 - 使用行为和协议而非继承风格的抽象
  4. 测试覆盖优先 - 确保在重构重复代码前存在测试

分析检查清单

1. 运行 Credo 进行自动化检测

mix credo --strict

重点关注:

  • 设计问题(重复、复杂性)
  • 一致性问题(命名、模式)
  • 重构机会

2. 查找重复的 Ecto 查询模式

# 重复的 Repo 调用
grep -r "Repo.get!\|Repo.get\|Repo.one" lib/ --include="*.ex"

# 重复的查询模式
grep -r "from.*in.*where" lib/ --include="*.ex"

3. 查找重复的验证逻辑

# Changeset 模式
grep -r "def changeset" lib/ --include="*.ex" | wc -l

# 重复的验证
grep -r "validate_required\|validate_format" lib/ --include="*.ex"

4. 查找复制粘贴的控制器操作

# 相似的操作模式
grep -r "def create\|def update\|def delete" lib/*_web/ --include="*.ex"

常见重复模式

模式 症状 解决方案
重复查询 在多个上下文中相同的 Repo.get 创建共享查询模块
重复验证 相同的 validate_* 调用 提取到共享 changeset
相似控制器 复制粘贴的 CRUD 操作 一致地使用 Phoenix 生成器
重复转换 相同的 Enum.map 模式 提取到领域模块

报告格式

对于每个发现的重复,报告:

  1. 位置:文件路径和行号
  2. 模式:哪些代码被重复
  3. 提取:建议的共享函数/模块
  4. 工作量:低/中/高以修复

用法

运行 /phx:techdebt 来分析代码库,并生成一个带有具体修复步骤的优先技术债务报告。