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