先说几点核心判断。坦白说,MiMo Code 本身并没有内置一个叫“代码复杂度分析”的独立模块——但这并不妨碍它把这件事干得比别人更顺手。它的真正价值在于,通过终端原生的执行能力、多文件上下文的语义理解,以及对现有工具链的协同调度,把原本需要手动配置、交叉对比、逐个路径排查的复杂度分析流程,封装进一条自然语言指令里。说白了,你不需要切换环境、不用写复杂的脚本,也不用在 SonarQube、CodeClimate、PMD 这些工具之间来回倒腾,就能拿到可落地的结果。

那么问题来了——它能分析些什么?精度如何?
支持的复杂度维度与对应实现方式
MiMo Code 不直接计算圈复杂度(Cyclomatic Complexity)的原始数值,这跟传统静态分析工具有所不同。但它能借助内置或外部工具链,再结合自身的语义推理能力,输出真正对重构有指导意义的评估,而不是一个冷冰冰的数字。具体覆盖四个维度:
- 逻辑复杂度:自动识别嵌套层级过深(比如超过 5 层的 if/for 堆叠)、重复条件分支、状态机混乱等典型模式,并精确锁定到具体函数与调用链。这比单纯报一个圈复杂度数字要直观得多。
- 耦合复杂度:扫描跨模块的 import 关系、全局变量滥用情况、接口之间的隐式依赖,标记出高扇入/扇出模块。举个例子,某个 service 被 17 个 controller 直接引用——这种地方往往就是重构的突破口。
- 维护复杂度:结合 Git 历史,识别那些长期没有大修改但频繁被小改动波及的“热点文件”。同时标记注释缺失率超过 60%、单函数长度超过 200 行的高风险区域。经验表明,这些区域往往是 bug 的温床。
- 测试覆盖盲区:关联项目中
test/目录,比对源码路径与测试用例的覆盖率缺口。当然,这需要项目已集成 pytest 或 Jest 等工具,并且生成过 coverage report。
三步触发自动化分析流程
整个过程不需要写一行脚本,也不需要配置 YAML。直接在项目根目录的终端里执行三个步骤:
- 运行初始化:
mimo init(第一次使用时会建立项目记忆,索引 AST 结构与依赖图,后续分析会越来越快) - 发起自然语言请求:比如输入
mimo ask "分析当前服务层的复杂度瓶颈,重点检查用户认证模块的耦合和逻辑深度"——就是这么直接。 - 选择执行模式:系统会提供三种选项:
- Plan 模式:先返回一份分析方案,告诉你接下来调用哪些工具、扫描哪些路径、依据哪类规则。你可以确认后再执行。
- Build 模式:自动拉起对应的工具链——比如 Python 项目会用
radon,JavaScript 项目会用eslint --rule complexity,已配置 SonarQube 的也会自动调用sonar-scannerCLI。所有结果会整合后结构化输出。 - Compose 模式:更进一步,直接生成可执行的重构建议。比如“将 TokenValidator 拆为 JwtParser + PolicyChecker 两个类,并补全 3 个边界 case 的单元测试”。
关键注意事项
要保证分析结果的准确率和可靠性,有几个前提条件需要满足:
- 项目必须包含可运行的构建或测试命令(比如
npm test或make build),MiMo Code 会据此判断工程结构和依赖关系。 - 如果使用第三方 LLM(如 DeepSeek-Coder),建议开启
--enable-code-exec参数,允许在安全沙箱内执行轻量静态分析工具。这个开关默认是关闭的,需要主动启用。 - 对于私有仓库或敏感逻辑,MiMo-V2.5 默认不上传代码——所有 AST 解析、依赖推导都在本地的 SQLite 记忆库中完成。这一点值得放心。
- 复杂度报告默认以 Markdown 格式输出,支持直接导出为
complexity-report.md,并可以提交到 PR 描述区,方便团队 review。
