已关闭
[Issue] BM004 告警未指明被计入复杂度的具体构造 #24
ywxt创建于 9月11日关闭于 9月23日
WangZijun
9月23日 评论:
9月23日 评论:
https://gitcode.com/xuanwu/bot-metric/pulls/20
结论:
- 问题可以复现;BM004 原先仅输出总复杂度,未列出构成。
- 问题已修复,BM004 evidence 现在包含控制流贡献明细。
具体修复:
- 汇总函数内 if/else、match arms、loops、布尔条件等控制流贡献。
- 在 BM004 evidence 中输出 breakdown,便于定位需要重构或提取的路径。
- 新增端到端回归测试验证 JSON 输出。


问题概述
BM004(函数复杂度)告警只输出总复杂度值、阈值和差值,未指明具体哪些代码构造被计入了复杂度,导致开发者难以定位需要修改的分支/嵌套点。
首次出现版本:1.1.0
影响范围
复现步骤
请提供最小源码样例、
bot-metric analyze或bot-metric check命令、配置及完整执行顺序。bot-metric check预期结果
告警信息在给出复杂度值的同时,列出被计入复杂度的具体构造及其贡献,例如:
= complexity breakdown:
便于开发者直接定位需要拆分或提取的决策路径。
实际结果
告警仅给出总值与通用提示,未指明哪些构造被计入:/crates//src/deflate/mod.rs:380:12
warningBM004: function encode_flush is too complex
-->
|
380 | pub fn encode_flush(
| ^^^^^^^^^^^^
= reason: complexity 28 exceeds the limit of 20 by 8
= definition: cyclomatic complexity approximates independent control-flow paths
= help: reduce branching and nesting, or extract decision paths
分析环境与范围
deflate模块指标、发现与报告证据
附件与提交确认