【问题标题】:cyclomatic complexity with MetrixReloadedMetrixReloaded 的圈复杂度
【发布时间】:2018-02-01 15:53:56
【问题描述】:

我正在尝试使用 Android Studio 中的 MetricsReloaded 插件(应该与 IntelliJ 相同)来分析代码库的圈复杂度。

我让它工作并获得输出,但不确定输出的实际含义。我看到的输出是:

谁能告诉我这是什么意思,是什么定义是“好”/“坏”?

感谢您的帮助:)

【问题讨论】:

    标签: android intellij-idea metrics cyclomatic-complexity


    【解决方案1】:

    屏幕截图中的指标以不同的粒度级别显示代码的cycolomatic complexity (CC)。第一个屏幕截图(标题为方法指标的第一个选项卡)是最精细的,显示了项目中每个方法的圈复杂度。第二个屏幕截图在类级别执行相同的操作,以此类推,直到最右侧的选项卡显示整个项目的指标。

    最右边四个选项卡上的平均值和总计值都从 方法指标 选项卡上的值向上流动,因此请重点关注。

    首先,最受关注的数字是您第一个屏幕截图中 v(G) 列下的数字,将每种方法的 CC 显示为整数值。 PMD documentation 提供以下准则来确定这些数字是“好”/“坏”:

    复杂度由方法中决策点的数量决定 加一个用于方法条目。决策点是 'if', 'while', “for”和“case 标签”。一般1-4为低复杂度,5-7 表示中等复杂度,8-10表示高复杂度,11+表示 非常复杂。

    具有高 CC 值的方法松散地对应于乍一看复杂的方法,反之亦然。例如,bean getter/setter 的 v(G) 应该为 1,因为它们的作用不大。

    您的第一个屏幕截图上的数字都低于 6,因此无需担心太多。但是,如果某个方法的 v(G) 值很高,那么您可能需要查看 the two values to its left, ev(G) and iv(G)。例如,如果您有一个 iv(G) 值为 1 且 ev(G) 值为 15 的方法,则该方法不会调用其他方法,但会有一些复杂的内部逻辑(可能是嵌套循环),可能值得重构。

    显然远不止这些,但密切关注 方法指标 选项卡上的 v(G) 列可能是最重要的事情.

    【讨论】:

    • 非常感谢@skomisa,现在更有意义了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    相关资源
    最近更新 更多