分类

代码复杂度分析器

分析圈复杂度、认知复杂度、深层嵌套和重复代码

对 JavaScript、TypeScript、Python、Java、Go 代码进行复杂度与质量启发式分析。

示例结果

2 个示例

分析分支较多的 JavaScript 函数

用较严格阈值评估一个嵌套定价函数的圈复杂度和认知复杂度。

{
  "summary": {
    "language": "javascript",
    "functionCount": 1,
    "averageCyclomaticComplexity": 5,
    "averageCognitiveComplexity": 4,
    "hotspotCount": 0,
    "longFunctionCount": 0,
    "deepNestingCount": 1,
    "duplicateClusters": 0
  },
  "functions": [
    {
      "name": "score",
      "cyclomaticComplexity": 5,
      "deepNesting": true
    }
  ]
}
查看输入参数
{ "sourceCode": "function score(order) {\n if (!order) return 0;\n let total = 0;\n for (const item of order.items) {\n if (item.discount) {\n total += item.price * 0.8;\n } else if (item.vip) {\n total += item.price * 0.9;\n } else {\n total += item.price;\n }\n }\n return total;\n}", "language": "javascript", "longFunctionThreshold": 8, "nestingThreshold": 2, "duplicateWindow": 4 }

识别 Python 中重复的归一化逻辑

检测重复的辅助函数风格逻辑,并确认相似代码块中的重复窗口。

{
  "summary": {
    "language": "python",
    "functionCount": 2,
    "duplicateClusters": 1
  },
  "duplicates": [
    {
      "occurrences": 2,
      "lines": [
        1,
        6
      ]
    }
  ]
}
查看输入参数
{ "sourceCode": "def normalize_user(row):\n email = row[\"email\"].strip().lower()\n if not email:\n return None\n return {\"email\": email, \"team\": row.get(\"team\", \"general\")}\n\ndef normalize_admin(row):\n email = row[\"email\"].strip().lower()\n if not email:\n return None\n return {\"email\": email, \"team\": row.get(\"team\", \"general\")}", "language": "python", "longFunctionThreshold": 20, "nestingThreshold": 3, "duplicateWindow": 3 }

关键信息

分类
Development
输入类型
textarea, select, number
输出类型
json
样本覆盖
4
支持 API
Yes

概览

代码复杂度分析器通过启发式方法评估源代码的圈复杂度、认知复杂度、嵌套深度、长函数和重复逻辑。

适用场景

  • 当你想在代码评审或重构前快速判断代码质量时。
  • 当技术负责人需要快速定位高风险函数时。
  • 当你想比较 JavaScript、TypeScript、Python、Java、Go 代码的可维护性时。
  • 当重复逻辑和深层嵌套已经影响开发效率时。

工作原理

  • 粘贴源代码,并选择语言或使用自动识别。
  • 工具会用跨语言规则提取函数或逻辑块。
  • 随后根据分支数量、嵌套层级和认知负担进行评分。
  • 结果中会返回热点函数、重复片段和改进建议。

使用场景

在发版前确定优先重构的函数。
检查遗留代码中的维护性风险点。
帮助团队理解深层控制流对可读性的影响。
为工程流程补充轻量级静态分析能力。

用户案例

1. 在遗留服务里定位优先重构对象

技术负责人
背景原因
某个后端模块已经演化多年,充满条件分支和深层嵌套。
解决问题
团队需要先确定哪些函数最值得优先重构。
如何使用
粘贴模块代码,保持自动识别,查看热点函数列表和重复片段报告。
示例配置
语言:自动识别。长函数阈值:50。嵌套阈值:4。
效果
团队可以快速看到高风险函数排序,并明确下一步清理重点。

用 Samples 测试

development

相关专题

常见问题

这是完整的 AST 静态分析器吗?

不是。它是一个轻量级启发式分析器,目标是快速提供可操作的复杂度信号。

支持哪些语言?

支持 JavaScript、TypeScript、Python、Java 和 Go,并提供自动识别。

能识别重复代码吗?

可以。它会对规范化后的代码窗口进行比对,以发现可能的复制粘贴逻辑。

会给出改进建议吗?

会。热点函数会附带降低分支复杂度、提取辅助函数、减少嵌套等建议。

API 文档

请求端点

POST /zh/api/tools/code-complexity-analyzer

请求参数

参数名 类型 必填 描述
sourceCode textarea -
language select -
longFunctionThreshold number -
nestingThreshold number -
duplicateWindow number -

响应格式

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
JSON数据: JSON数据

AI MCP 文档

将此工具添加到您的 MCP 服务器配置中:

{
  "mcpServers": {
    "elysiatools-code-complexity-analyzer": {
      "name": "code-complexity-analyzer",
      "description": "分析圈复杂度、认知复杂度、深层嵌套和重复代码",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=code-complexity-analyzer",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

你可以串联多个工具,比如:`https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`,最多20个。

如果遇见问题,请联系我们:[email protected]