我们正在使用Sonar分析我们的代码,并在Sonar的自定义质量配置文件中配置PMD,findbugs和checkstyle规则。如果违反此规则的阈值,则PMD规则代码样式圈复杂度会收集我们代码中的违规行为。 Sonar还在Project仪表板中有一个Complexity小部件,它根据类,方法和文件显示复杂性。此Complexity小部件是否考虑PMD规则引擎定义的相同规则来计算代码样式的圈复杂度,或者此小部件是否有自己的计算复杂性的方法? Sonar复杂小部件是否使用PMD规则引擎报告的违规来确定复杂性?
提出这个问题的原因是,如果两者都有不同的计算复杂度的方法,那么我们只想提到一种方法,而且哪种方法最好保留。
答案 0 :(得分:1)
Sonar使用我们的内部Java解析器自行计算圈复杂度。这是复杂小部件中显示的内容。计算可能确实与PMD不同。因此,如果你激活关于复杂性的PMD规则,显然这将触发PMD所做的措施,而不是Sonar。
仅供参考,我们的目标是在Sonar(基于我们自己的内部解析器)中逐步实现PMD和Checkstyle中可以找到的大多数有用规则,这样主要结果就像您所经历的那样没有差异。