Skip to content

Latest commit

 

History

History
39 lines (27 loc) · 2.09 KB

File metadata and controls

39 lines (27 loc) · 2.09 KB

Decomplexification

TL;DR

文章提出通过降低代码复杂度提升软件质量和安全性,建议使用圈复杂度分析工具(如pmccabe)重构高复杂度函数。以curl项目为例,建立复杂度监测体系并设100分阈值,经持续重构使代码平均复杂度下降超50%,消除了超过100分的函数。通过CI检查机制阻断高复杂度代码合并,并公开监测数据与工具。当前最复杂函数维持在70-100分区间,未来计划逐步收紧阈值,强调重构需与充分测试结合并纳入开发流程。

Summary

文章围绕"代码去复杂化"实践展开,强调通过降低代码复杂度提升软件质量和安全性。主要内容如下:

  1. 去复杂化原则
  • 提出代码复杂度与缺陷、安全漏洞的正相关性,主张通过降低cyclomatic complexity(圈复杂度)优化代码
  • 使用pmccabe工具扫描C代码,针对高复杂度函数进行重构
  1. curl项目实践
  • 建立三类复杂度监测指标: ① 最高复杂度函数与99/90分位数值 ② 复杂度分布热力图(显示各复杂度段的代码占比) ③ 平均复杂度趋势图
  • 设定复杂度阈值:将函数复杂度上限定义为100分,通过持续重构使最复杂函数(曾达350分)下降至100分以下
  1. 重构成效
  • 2025年实现curl代码中所有函数复杂度低于100分
  • 平均复杂度较2022年下降超过50%
  • 静态分析工具误报率降低,代码可维护性提升
  1. 过程管理
  • 建立CI检查机制,禁止复杂度超限的PR合并
  • 公开所有监测数据、分析脚本和图表
  1. 当前状态
  • 当前最复杂函数位于70-100分区间(如myssh_statemach_act为100分)
  • 计划逐步降低复杂度阈值,持续优化过程

文中强调重构是持续过程,需结合充分测试验证,并将复杂度管理纳入开发流程。所有监测数据及工具公开透明,包含函数长度(含注释)的并行监测指标(部分图表存在逻辑矛盾需修正)。