用途:分析 Dart 与 Flutter 代码库的可维护性与函数可读性,定位并整改高复杂度告警。它衡量的是人工或审阅模型理解控制流所需的认知负担,而非传统圈复杂度。适合处理深层嵌套条件、冗长 if-else 链、超阈值的单体方法体,以及超出结构行数上限的逻辑类。
主要能力:给出三条确定性评分规则。规则一,空安全运算符、联级、空安全集合元素以及 Dart 3 switch 语句/表达式均为零惩罚,整个穷尽 switch 只计 1 个基础分。规则二,if、else if、else、三元表达式、for、while、do-while、集合字面量中的 for/if 子句及 catch/on 各加 1 基础分,连续同种逻辑运算符只计 1 分,交替运算符族每次交替加 1 分。规则三,流中断结构嵌套时按其结构嵌套深度 D 追加分值,但 else、else if、catch/on 只加固定 1 分且不乘嵌套深度。
用法:先用只读检索命令定位热点。命令保持原样:
查找嵌套很深的条件语句
grep -rnE '^\s{8,}(if|for|while|switch)\s*(' lib/
查找待用 Dart 3 switch 表达式重构的 else-if 链
grep -rnE '^\s*} else if (' lib/ 评估整文件、目录或多类架构时,默认委派只读子代理(Complexity Auditor)返回越界方法清单、行范围与失败结构;仅在不到 50 行的片段或重构后即时校验时在主上下文内联计算。子代理须严格只读,避免改动工作区。
阈值:生产逻辑函数目标分不超过 15,超过须重构;测试方法(_test.dart)目标不超过 40;逻辑类不超过 150 非注释行;Flutter 声明式 build 方法不受 150 行限制,但控件树水平缩进最多 5 层,超出应抽取独立 helper 控件类。
重构策略:模式 A 用 Dart 3 表驱动 switch 表达式替代嵌套 if-else;模式 B 用卫语句(if (!condition) return;)提前退出以削减嵌套乘数;模式 C 对捕获大量局部状态的庞大函数,参照 encapsulated-method-object 技能抽为私有 runner 类。
验证:提交前运行 dart format .、dart analyze 与 dart test(或 flutter test),确保零静态告警、零行为漂移。限制:以上为技能文档提供的规则与流程,具体工具集成、安装方式及收费信息暂未提供。