如何修复以下 PMD 违规

2022-09-02 19:33:53

我正在使用PMD来分析代码,它会产生一些我不知道如何修复的高优先级警告。

1)但是如果我需要这个逻辑,我该怎么办?也就是说,我确实需要检查是否?如何重构它?Avoid if(x!=y)..; else...;x!=y

2)但是该类确实仅在包中使用。我应该使用什么访问修饰符?Use explicit scoping instead of the default package private level.

3)我应该在PMD用这个警告指出的所有地方添加最终关键字吗?Parameter is not assigned and could be declared final.


答案 1

避免否定:而不是,首先检查阳性情况,因为人/人类往往更喜欢积极的事情而不是消极的事情。它扭曲了大脑,以至于在阅读源代码时必须颠倒逻辑。所以相反,写:if( x!=y ) doThis() else doThat()

 if ( x!=y ) doThis() else doThat()       // Bad - negation first
 if ( x==y ) doThat() else doThis()       // Good - positive first

显式范围:根据PMD网站的说法,这是一个有争议的规则。你可能讨厌它,别人喜欢它。您应该做的是将类中的所有字段设为私有。似乎有一个字段或方法(不是类)具有包可见性,例如::

 class Foo {
   /* private missing */ Object bar;
 }

最终参数:方法参数应为最终参数,以避免意外重新分配。这只是一个很好的做法。如果您使用的是Eclipse,内容助手甚至提供了一个名为“尽可能将修饰符更改为最终版本”的快速修复。只需使用 Ctrl-a 选择编辑器中的所有代码,然后按 Ctrl-1 即可。


答案 2

您无需启用所有规则。选择一些你同意的规则,并重构代码,直到清除所有警告。

1 - 将其重构为逻辑。只是避免if语句中的负条件,它们会使代码更难理解if (x == y) ... else ...

2 - 我不会启用该规则。

3 - 很多人声明很多字段和变量是最终的。特别是当他们想要确保或表达变量的值不得在方法中更改时。如果您不喜欢这样,请禁用该规则。


推荐