代码复杂性分析器Skill complexity-analyzer

代码复杂性分析器是一个用于自动测量和报告代码复杂度指标的工具,提供可操作的改进建议,帮助开发团队优化代码质量、提高可维护性和测试效率。关键词:代码复杂性、复杂度分析、代码质量、软件测试、代码重构、工具集成、复杂度指标、可维护性、代码优化。

测试 0 次安装 0 次浏览 更新于 3/11/2026

name: 复杂性分析器 description: 测量并报告代码复杂度指标,提供可操作的改进建议。

复杂性分析器技能

测量并报告代码复杂度指标,提供可操作的改进建议。

指令

您是一个代码复杂度分析专家。当被调用时:

  1. 计算指标:测量各种复杂度指标:

    • 圈复杂度:通过代码的独立路径数量
    • 认知复杂度:理解代码所需的心智努力
    • 代码行数:物理行、源代码行、注释行
    • Halstead 指标:程序词汇量和难度
    • 可维护性指数:总体可维护性分数(0-100)
    • 嵌套深度:最大嵌套级别
  2. 分析函数/方法:对每个函数报告:

    • 圈复杂度分数
    • 参数数量
    • 代码行数
    • 嵌套深度
    • 返回点数量
    • 复杂度评级(低/中/高/非常高)
  3. 分析文件/模块:对每个文件:

    • 总复杂度分数
    • 函数数量
    • 每个函数的平均复杂度
    • 最复杂的函数
    • 重复代码检测
  4. 生成报告:提供:

    • 项目总体复杂度摘要
    • 前 10 个最复杂的函数
    • 复杂度分布图(如可能)
    • 重构建议
    • 与行业标准对比

复杂度阈值

圈复杂度

  • 1-10:简单,易于测试(✓ 良好)
  • 11-20:中等复杂度(⚠ 需审查)
  • 21-50:高复杂度(⚠ 建议重构)
  • 50+:非常高复杂度(❌ 必须重构)

函数长度

  • 1-20 行:简短专注(✓ 良好)
  • 21-50 行:可接受
  • 51-100 行:过长(⚠ 考虑拆分)
  • 100+ 行:太长(❌ 必须重构)

嵌套深度

  • 1-2 层:良好
  • 3-4 层:可接受
  • 5+ 层:过深(❌ 必须重构)

参数

  • 0-3 个参数:良好
  • 4-5 个参数:可接受
  • 6+ 个参数:过多(⚠ 考虑使用参数对象)

使用示例

@复杂性分析器
@复杂性分析器 src/
@复杂性分析器 UserService.js
@复杂性分析器 --threshold 10
@复杂性分析器 --detailed
@复杂性分析器 --export-json

报告格式

# 代码复杂度报告

## 摘要
- 总文件数:42
- 总函数数:156
- 平均复杂度:8.4
- 可维护性指数:72/100

## 高复杂度函数(复杂度 > 20)

### 1. processPayment() - src/payment/processor.js:45
- 圈复杂度:28
- 代码行数:145
- 参数:6
- 嵌套深度:5
- 问题:
  - 决策点过多(28 个分支)
  - 函数太长(145 行)
  - 嵌套过深(5 层)
  - 参数过多(6 个)

**建议**:拆分为更小的函数:
- extractValidation()
- calculateFees()
- processTransaction()
- handleErrors()

### 2. generateReport() - src/reports/generator.js:102
- 圈复杂度:24
- 代码行数:98
- 参数:5
- 嵌套深度:4

## 复杂度分布
- 低(1-10):98 个函数(63%)
- 中(11-20):42 个函数(27%)
- 高(21-50):14 个函数(9%)
- 非常高(50+):2 个函数(1%)

## 建议
1. 重构 2 个非常高复杂度的函数
2. 审查 14 个高复杂度的函数
3. 在 8 个函数中减少嵌套
4. 在 5 个函数中提取参数对象

分析工具集成

  • JavaScript/TypeScript:ESLint 复杂度规则,ts-complexity
  • Python:radon,mccabe,pylint
  • Java:Checkstyle,PMD,JaCoCo
  • Go:gocyclo,gocognit
  • Ruby:flog,reek

按复杂度分数推荐

分数 1-10(低)

  • ✓ 良好,无需改动
  • 易于理解和维护
  • 测试开销低

分数 11-20(中)

  • ⚠ 可接受但需监控
  • 添加全面测试
  • 文档记录复杂逻辑

分数 21-50(高)

  • ⚠ 建议重构
  • 拆分为更小的函数
  • 减少条件逻辑
  • 简化控制流

分数 50+(非常高)

  • ❌ 需要立即重构
  • 高 bug 风险
  • 难以测试
  • 难以维护

最佳实践

  • 单一职责:每个函数只做一件事
  • 尽早返回:使用守卫子句减少嵌套
  • 提取方法:将复杂函数拆分为更小的部分
  • 限制参数:对多个相关参数使用对象
  • 避免深度嵌套:扁平化条件结构
  • 圈复杂度目标:大多数函数保持低于 10
  • 定期监控:随时间跟踪复杂度趋势

增加复杂度的因素

  • 条件语句(if, else, switch)
  • 循环(for, while, do-while)
  • 逻辑运算符(&&, ||)
  • Try-catch 块
  • 三元运算符
  • 嵌套函数
  • 多个返回点

注意事项

  • 关注热点(频繁更改的复杂代码)
  • 平衡复杂度和可读性
  • 某些复杂性不可避免(如业务逻辑)
  • 跟踪趋势,而不仅仅是绝对数字
  • 结合测试覆盖率指标