编程语言
首页 > 编程语言> > java – FindBugs:检测Object.hashCode()的调用

java – FindBugs:检测Object.hashCode()的调用

作者:互联网

如果一个对象没有实现它自己的hashCode()方法,那么它将使用默认实现Object.hashCode()(前提是它们之间没有超类). Object.hashCode()不保证在不同的JVM实例中生成相同的哈希代码.我们在集群环境中遇到了一些问题.

除了我们应用的一些修复,我们希望静态分析检测到这种情况.我们已经在使用FindBugs了,但不幸的是我没有扩展默认规则集的经验.

我做了一些研究,我知道你可以实现自己的自定义探测器,但我没有找到很多关于如何做到这一点的文档.

我想我的问题是:

>在我在这里投入太多工作之前,这种方法是否合理,FindBugs能做到这一点吗?
>让我开始编写自定义探测器的最佳资源是什么?

感谢您的输入!

解决方法:

Findbugs已经对hashCode进行了一些检查:(另见http://findbugs.sourceforge.net/bugDescriptions.html)

> HE_EQUALS_NO_HASHCODE
> HE_EQUALS_USE_HASHCODE
> HE_HASHCODE_NO_EQUALS
> HE_HASHCODE_USE_OBJECT_EQUALS
> HE_INHERITS_EQUALS_USE_HASHCODE(这可能对你的情况有用)

如果这些对您来说还不够,那么它们可能是创建自定义探测器的良好起点.

UPDATE.探测器的源代码可以在https://code.google.com/p/findbugs/source/browse/findbugs/src/java/edu/umd/cs/findbugs/和该回购的其他包中找到.

标签:java,static-analysis,findbugs
来源: https://codeday.me/bug/20190629/1321208.html