我正在使用IntelliJ PMD插件,它在if(keys[i].equals(key))
上给了我违反LOD的权限。键是函数中同一类中的对象。
public Object get(Object key) {
int n,i;
for(i=0,n=0;i<keys.length;i++) {
if(n >= nelems)
break ;
if ( keys[i] == null )
continue;
if(keys[i].equals(key))
return values[i] ;
n++ ;
}
return null;
}
您可以在这里找到完整的代码:https://raw.githubusercontent.com/Sable/abc/master/benchmarks/Jigsaw/src/classes/org/w3c/util/ArrayDictionary.java
如果您不希望将其标记为错误,则可以将索引字段键[i]包装为新的String(keys [i])并在此新对象上调用equals函数。这种丑陋的骇客将破坏规则。
但是,我认为,更好的解决方案是从此规则中过滤基类,例如String,Integer,Long等。其次,不可变类也应免除此规则。 java批注@Immutable可用于实现此目的。这将必须由PMD团队实施。
否则,此方法链接规则会变得很累。