| name | analysis_code |
| description | 系统化代码分析技能,用于代码质量评估、技术债务识别、性能优化分析和架构重构评估。采用"总-分-总"结构化分析方法,支持多轮迭代分析,生成量化指标和改进建议。适用于需要进行代码审查、系统分析、重构规划等场景。 |
代码分析技能 (Code Analysis Skill)
版本: 1.2.0 | 基于: Copilot工作流系统 analysis_system
🎯 技能概述
本技能提供系统化的代码分析能力,帮助 Copilot 执行专业的代码质量评估、技术债务识别和性能优化分析。采用"总-分-总"的结构化分析方法,确保分析的系统性和可追溯性。
核心能力
- 代码质量分析: 评估代码复杂度、可读性、可维护性
- 技术债务识别: 识别代码异味、过时模式、重复代码
- 性能评估: 分析算法复杂度、资源使用、性能热点
- 架构分析: 评估模块依赖、耦合度、内聚性
- 重构规划: 生成结构化的重构建议和实施计划
适用场景
- 当用户请求进行"代码分析"、"代码质量评估"、"代码审查"时
- 当用户需要识别"技术债务"、"代码异味"、"性能问题"时
- 当用户准备进行"重构"并需要分析支持时
- 当用户需要对项目进行系统性理解和评估时
📋 分析流程
总-分-总结构
本技能采用三阶段分析流程:
阶段一:总体规划(总)
↓
阶段二:循环分析(分)→ 可多轮迭代
↓
阶段三:汇总报告(总)
阶段一:总体规划
目标: 建立分析框架和总体计划
步骤:
- 需求解析: 理解用户的分析需求和目标
- 信息确认: 与用户确认项目类型、技术栈、分析重点
- 计划制定: 制定分析维度和预期轮次
- 环境准备: 创建分析任务目录结构
输出:
阶段一交互确认(ask_questions,替代暂停点):
- 问题:
是否批准分析计划?
- 选项A:
批准
- 选项B:
自定义(由用户填写调整项)
- 要求: 通过
ask_questions 执行,不使用开放式“暂停等待输入”
阶段二:循环分析(9步循环)
每轮分析包含以下步骤:
步骤1: 创建轮次目录
创建轮次分析的目录结构,第一轮命名为 1_初始质量评估
步骤2: 制定轮次计划
使用 round-plan.md 明确本轮分析目标
步骤3: 收集项目数据
- 运行代码指标收集工具
- 分析项目结构和依赖
- 收集用户提供的补充信息
步骤4: 确定分析内容
基于收集的数据确定本轮重点分析内容
步骤5: 执行分析
- 分析代码结构和模块组织
- 识别代码异味和反模式
- 评估代码复杂度和可维护性
- 检查设计原则遵循情况
步骤6: 量化评估
- 计算代码健康度评分
- 量化技术债务和修复成本
- 可选:编写测试验证假设
步骤7: 记录结果
使用 round-analysis-report.md 生成轮次报告
步骤8: 生成建议
提出针对性改进建议,评估可行性
步骤9: 轮次评估
第一轮完成后的分流确认(新增必做)
当第1轮(如 1_初始质量评估)完成后,进入后续轮次前必须执行以下流程:
-
列出候选分析方向/模块
- 基于第1轮结论整理候选清单(例如:核心业务模块、数据访问层、接口层、性能热点、架构依赖、测试薄弱区等)
- 每个候选项至少包含:
方向/模块名称、分析目标、预期产出
-
使用 ask_questions 工具向用户确认
- 必须调用
ask_questions 展示候选项供用户选择
- 支持用户在自选栏补充自定义方向/模块(allow freeform input)
- 支持用户利用自选栏进行多选(multi-select),以便并行分析多个方向
-
基于确认结果规划后续轮次
- 将用户选中的方向/模块转化为后续轮次任务
- 未选中的方向保留在待选池,不默认继续深入
多 sub-agent 并行分析规范(新增)
在第1轮确认后,若需要并行深入分析,允许创建多个 sub-agent 分别负责不同方向/模块。
- 分工原则: 一名 sub-agent 只负责一个明确方向/模块或一个明确分析视角
- 目录隔离原则: 每个 sub-agent 的输出必须落在独立目录,严禁混写
- 可追溯原则: 每个 sub-agent 目录中必须包含其任务说明、过程记录与结果报告
推荐目录命名方式:subagent_{序号}_{方向或模块名}(如:subagent_01_订单模块、subagent_02_性能热点)
轮次结束交互确认(ask_questions,替代暂停点):
- 问题:
本轮分析完成,下一步如何进行?
- 推荐选项:
继续下一轮 / 进入汇总报告 / 自定义(由用户填写)
- 要求: 必须通过
ask_questions 获取决策,再进入下一动作
阶段三:汇总报告
目标: 整合所有轮次结果,生成完整分析报告
输出:
📊 分析维度
代码结构分析
- 模块依赖: 分析模块间的依赖复杂度
- 耦合度: 评估组件间的耦合程度
- 内聚性: 分析模块内部的功能内聚性
代码质量评估
- 圈复杂度: McCabe圈复杂度分析
- 认知复杂度: 代码理解难度评估
- 可读性: 命名规范、注释质量、代码风格
- 可维护性: 代码重复度、函数长度、类大小
性能分析
- 时间复杂度: 算法效率分析
- 空间复杂度: 内存使用评估
- 性能热点: 识别性能瓶颈
技术债务
- 代码异味: 长方法、大类、重复代码
- 过时模式: 不推荐的编程实践
- 债务量化: 修复成本估算
🛠️ 工具使用
代码指标收集
使用 code-metrics-collector.py 收集代码指标:
python tools/code-metrics-collector.py --project-path "项目路径" --output-format json
分析报告生成
(可选)如项目中存在 generate-analysis-report.ps1 脚本,可用于生成报告:
./tools/generate-analysis-report.ps1 -ProjectPath "项目路径" -ReportType "comprehensive"
📁 目录结构
分析任务的标准目录结构:
tasks/
├── 项目名_分析主题/
│ ├── master_plan/ # 总体规划和汇总
│ │ ├── master_analysis_plan.md
│ │ ├── final_analysis_report.md
│ │ └── executive_summary.md
│ ├── 1_初始质量评估/ # 第1轮分析
│ │ ├── summary/ # 核心输出
│ │ ├── reports/ # 详细报告
│ │ ├── metrics/ # 量化数据
│ │ └── analysis/ # 分析过程
│ ├── 2_并行专项分析/ # 第2轮(示例:多 sub-agent 并行)
│ │ ├── coordinator/ # 主代理:方向清单、ask_questions确认记录、汇总
│ │ ├── subagent_01_模块A/
│ │ │ ├── task.md # sub-agent任务定义
│ │ │ ├── process.md # 分析过程记录
│ │ │ ├── report.md # 分析报告
│ │ │ └── artifacts/ # 指标、图表、中间产物
│ │ ├── subagent_02_模块B/
│ │ │ ├── task.md
│ │ │ ├── process.md
│ │ │ ├── report.md
│ │ │ └── artifacts/
│ └── N_具体任务名/ # 后续轮次
💡 分析原则
核心原则
- 数据驱动: 基于客观数据进行分析,避免主观臆断
- 循序渐进: 从概要分析开始,逐步深入细节
- 持续验证: 定期验证分析结果的准确性
- 用户参与: 关键决策点统一使用
ask_questions 做选择式确认
质量标准
- 完整性: 覆盖计划中的所有分析维度
- 准确性: 分析结论有数据支撑
- 可操作性: 改进建议具体可执行
- 可追溯性: 结论可追溯到原始数据
📝 使用示例
示例1: 启动代码质量分析
用户请求:
我想对这个Python项目进行代码质量分析,重点关注可维护性和技术债务
Copilot响应流程:
- 解析需求,提取关键信息
- 创建分析计划,确认分析维度
- 使用
ask_questions 确认(批准/自定义)
- 执行分析循环
- 生成分析报告
示例2: 重构前分析
用户请求:
我准备重构这个模块,需要先进行分析评估
Copilot响应流程:
- 进行代码结构分析
- 识别重构风险点
- 评估重构范围和影响
- 生成重构前分析报告
- 可选:生成重构计划草案
🔗 相关资源
⚠️ 注意事项
- 交互方式: 原“暂停点”统一替换为
ask_questions 选择式确认,提升交互效率与一致性
- 渐进式执行: 不要一次性完成所有分析,按阶段执行并获取反馈
- 灵活调整: 根据实际发现调整分析计划是正常的
- 文档归档: 分析完成后确保所有文档正确归档
- 第一轮后确认: 第1轮结束后,必须先列方向并通过
ask_questions 与用户确认,再进入并行深入分析
- sub-agent隔离输出: 多 sub-agent 并行时,报告必须按 sub-agent 独立目录存放,避免结果混杂
🧭 ask_questions 标准交互卡片
为保证流程一致性,建议在以下节点使用标准问题卡片:
-
阶段一结束
- 问题:
是否批准分析计划?
- 选项:
批准 / 自定义(由用户填写)
-
第一轮结束(分流)
- 问题:
请选择后续拟深入分析的方向/模块(可多选,可自定义)
- 选项: 基于第1轮结果动态生成
- 配置:
multiSelect=true,allowFreeformInput=true
-
每轮结束
- 问题:
本轮分析完成,下一步如何进行?
- 选项:
继续下一轮 / 进入汇总报告 / 自定义(由用户填写)