PMD统治神Class——理解指标

PMD rule God Class - understanding the metrics

我们在 Java 项目中使用源代码分析器 PMD。我正在尝试解决所报告的问题,目前我正在为 GodClass 规则而苦苦挣扎。我知道这个想法不是要创建巨大的 classes。

不过,我不喜欢"huge"这个词,因为它太含糊了。谁能解释一下这个规则的指标是如何工作的?报告说例如

Possible God class (WMC=47, ATFD=11, TCC=0.06315789473684211)

这些数字是什么意思?有人知道决定特定 class 是否巨大的公式吗?

Java此规则的文档指出

The rule uses the detection strategy described in [1]. The violations are reported against the entire class. [1] Lanza. Object-Oriented Metrics in Practice. Page 80.

好吧,我不会仅仅因为它的第 80 页就订购某本书。

顺便说一句。有没有办法配置这样的规则,即更改其参数?

感谢您的解释。

  • WMC = 加权方法计数
  • ATFD = 访问国外数据
  • TCC = 紧密 Class 凝聚力

基线似乎被定义为常数值。如果您想了解更多信息,可以找到实现 here. (A little older code, but it is all in one place here.)

WMC 代表加权方法计数或加权方法 Class。 WMC 指标定义为 class 中声明的所有方法的复杂性总和。这个指标是一个很好的指标,需要付出多少努力才能维护和开发一个特定的 class.

ATFD 代表访问外部数据。此指标表示给定 class 直接或通过访问器方法从中访问属性的外部 classes 的数量。

TCC 代表紧密 Class 内聚。 TCC 是通过访问属性直接连接的方法的相对数量。

如果 WMC >= 47 且 ATFD > 5 且 TCC < 1/3,code 将触发违规。

您可以在 page 55 in Object-Oriented Metrics in Practice (and you do not have to buy the book to just read 1 page). You can also read the PMD documentation 上阅读有关上帝 class 的信息。