Java 用于与常量进行比较的PMD规则

Java 用于与常量进行比较的PMD规则,java,coding-style,checkstyle,pmd,Java,Coding Style,Checkstyle,Pmd,我有一个正式的编码策略,当与常量进行比较时,常量[非原语]应该与所讨论的对象进行比较 例如: final String BEST_NAME = "Jim"; String myName = "Bob"; 比较应该是 BEST_NAME.equalsIgnoreCase(myName) 我似乎找不到这个PMD的特定规则。。。它存在吗 我似乎找不到这个PMD的特定规则。。。它存在吗 这样做的可能性很小,因为这样的规则是特定于项目(或者可能是组织)的。事实上,对于大多数人/项目/组织来说,这样的规

我有一个正式的编码策略,当与常量进行比较时,常量[非原语]应该与所讨论的对象进行比较

例如:

final String BEST_NAME = "Jim";
String myName = "Bob";
比较应该是

BEST_NAME.equalsIgnoreCase(myName)
我似乎找不到这个PMD的特定规则。。。它存在吗

我似乎找不到这个PMD的特定规则。。。它存在吗

这样做的可能性很小,因为这样的规则是特定于项目(或者可能是组织)的。事实上,对于大多数人/项目/组织来说,这样的规则“完全是错误的”。对所有字符串常量使用不区分大小写的比较不是正常/标准/最佳做法

但是,我确实发现这条规则与您的要求类似:

  • -也就是说,如果使用
    equalsIgnoreCase
    比较字符串,则应使用文本值作为目标

如果需要,可以为项目/组织编写自定义PMD规则。。。如果这是你需要的

参考:



1-好的,可能其他人也有此要求,并且已经编写了这样的PMD规则。然而,与从头开始编写PMD规则相比,追踪代码并重新调整其用途可能需要更多的努力…

我想您正在寻找类似于PMD规则的东西

该规则规定,在比较中应首先使用常量值。 这在大多数情况下适用于内联(例如
myName.equals(“Jim”)
)情况,但是它永远找不到您向我们展示的示例(例如
myName.equalsIgnoreCase(BEST_NAME)
),因为PMD无法引用常量字段


我建议使用,它也可以检测此类规则冲突,但它仍然在规则的比较名称中首先使用熟悉的位置文字,因此很容易适应。你可以自己看一个例子。

你在这里陈述了两条独立的规则:一条,常数应该先出现;第二,“比较应该是
equalsIgnoreCase()。
我怀疑第二个是你想要的。请澄清。不,案例比较与此无关,它只是一个例子。请解释否决票。这个问题告诉OP(可能)最有效的方法来满足他的要求。这也回答了他的字面问题。我不相信他的实际问题与案件不敏感有关。标题和第一句话都没有这样说。我要求他澄清。我没有否决,但问题是关于比较,而不是关于案件不敏感的问题[这是一个规则]。。。我看到链接引导我找到了我一直在寻找的答案!谢谢