gpt4 book ai didi

optimization - Sonar 报告中的认知复杂性是什么?

转载 作者:行者123 更新时间:2023-12-03 17:06:39 26 4
gpt4 key购买 nike

现在有几天我切换到 Sonar 报告以进行静态代码审查和性能改进。在规则部分,我发现我的方法的认知复杂性很高。

您可以在 Sonar 中发现认知复杂性错误:
转至 项目->问题选项卡->规则下拉菜单->认知复杂性

下面的屏幕截图为您提供了 Sonar 项目的引用:

enter image description here

我没有任何方法来计算和降低我的方法的认知复杂性。最后我找到了计算复杂度的准确方法,我将在下面的帖子中回答这个问题。请退房。

最佳答案

认知复杂性

在搜索了一些博客并与 Sonar 团队聊天后,我发现认知复杂性的简单定义和计算如下:

定义:

Cognitive Complexity, Because Testability != Understandability



你写的代码必须像上面的定义一样简单易懂,简单。

less Cognitive Complexity more Readability



让我们看一个方法,例如计算 抄送 ,现在我指的是 kotlin 语言,见下图:

Sonar capture

在上图中有一个方法 getAppConfigData() ,其认知复杂性正在被测量。现在这个方法的CC是 18 .正如您可以在上面的屏幕截图中查看的那样,有一个警告,它告诉我们最大复杂度的限制是 15 ,低于此方法的当前 CC。

现在实际的问题是: 如何在开发时计算我的方法的 CC?

关注下方 规则 获取任何方法或类的 CC 为:
  • 线性中断时增加(从上到下,
    从左到右)代码流
  • 结构断裂时增加
    流嵌套
  • 忽略可读的“速记”结构
    将多行代码压缩为一行

  • 因此,每当上述规则匹配时,只需将 + count 添加到您的 CC 并记住计数将根据代码中断级别增加,例如“if”条件如果是第一个代码中断则为 +1,但如果您使用了更多嵌套如果那么它将为该内部“if”的+2,如下图所示。

    enter image description here

    这就是我在 方面得到的全部信息认知复杂性 .

    您可以在 sonar blog 找到与 CC 相关的所有内容。

    谢谢

    关于optimization - Sonar 报告中的认知复杂性是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52741725/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com