0

我们正在使用 Sonar 分析我们的代码并在 Sonar 的自定义质量配置文件中配置 PMD、findbugs 和 checkstyle 规则。如果违反此规则的阈值,则 PMD 规则代码样式圈复杂度会在我们的代码中收集违规行为。Sonar 在项目仪表板中还有一个复杂性小部件,它根据类、方法和文件显示复杂性。这个复杂度小部件是否考虑了由 PMD 规则引擎定义的用于计算代码样式圈复杂度的相同规则,或者这个小部件是否有自己的计算复杂度的方法?Sonar 复杂性小部件是否使用 PMD 规则引擎报告的违规来确定复杂性?

提出这个问题的原因是,如果两者计算复杂度的方法不同,那么我们只想参考一种方法,并且最好保留哪种方法。

4

1 回答 1

1

Sonar 使用我们的内部 Java 解析器自行计算圈复杂度。这就是复杂性小部件中显示的内容。计算可能确实与 PMD 所做的不同。因此,如果您激活有关复杂性的 PMD 规则,显然这将触发 PMD 而不是 Sonar 执行的措施。

仅供参考,我们的目标是在 Sonar(基于我们自己的内部解析器)中逐步实现 PMD 和 Checkstyle 中可以找到的大多数有用规则,这样主要结果就不会像您所经历的那样存在差异。

于 2013-03-11T12:44:50.963 回答