用途:在任意编程语言、框架中编写或修改代码时,强制保持低认知复杂度(SonarSource 指标)与低圈复杂度,避免函数过于复杂。
主要能力与阈值:每个函数/方法目标认知复杂度<=5(特殊复杂逻辑可接受至10,绝不超过15);圈复杂度<=5(可接受至10,绝不超过15)。规范文件为 cognitive-complexity-spec.md。
认知复杂度计分要点:if、三元、switch(整体)、for、while、do while、catch、else if、else、goto、带标签的 break/continue、递归环中每个方法、每段同类型布尔运算符序列各+1;嵌套在其它流程中断结构内的 if、三元、switch、for、while、catch 额外+1嵌套惩罚;方法调用、try、finally、case 标签、空合并、提前返回、简单 break/continue、lambda 不计分(lambda 会增加嵌套层级)。
圈复杂度计分要点:方法入口+1;if、else if、for、while、do while、case、catch、&&、||、三元各+1(此为核定义,不同语言分析器可能有差异)。
强制降复杂度手法(按优先级):提取方法/函数;提前返回/守卫子句;把嵌套条件改为扁平逻辑(if A && B);用多态、策略模式或查表替代 if/else 链;用声明式管道(filter/map/reduce、LINQ、streams)替代循环+条件;拆分布尔表达式为具名变量或谓词函数;用提前退出替代标志变量;使用语言惯用法(空合并、可选链、模式匹配、解构,解构免费,模式匹配整体+1优于 if/else 每分支+1)。
使用方式:写逻辑后心算计分,若>5则先用上述手法重构再定稿;偏好多个小函数;嵌套深度>2即应提取。资料含嵌套条件、循环嵌套等正反示例及具体计分。
限制:仅依据所给资料,未提供具体的安装命令、运行环境、收费、平台或集成方式,这些信息暂未提供。