我们将Findbugs配置为通过Maven在我们的Jenkins上运行。
除其他外,它在以下代码行上抱怨SE_BAD_FIELD:
private boolean logged = false;
此错误的说明说
Se:可序列化类(SE_BAD_FIELD)中的非瞬态不可序列化实例字段 该Serializable类定义了一个非基本实例字段,该实例字段既不是临时的,Serializable的也不是java.lang.Object,并且似乎没有实现Externalizable接口或readObject()和writeObject()方法。如果不可序列化的对象存储在此字段中,则不会正确反序列化此类的对象。
Se:可序列化类(SE_BAD_FIELD)中的非瞬态不可序列化实例字段
该Serializable类定义了一个非基本实例字段,该实例字段既不是临时的,Serializable的也不是java.lang.Object,并且似乎没有实现Externalizable接口或readObject()和writeObject()方法。如果不可序列化的对象存储在此字段中,则不会正确反序列化此类的对象。
但是boolean是原始的吗?那么为什么要抱怨呢?还是这是某种Findbugs,Maven或Jenkins Bug?
boolean
我注意到,FindBugs有时报告错误的SE_BAD_FIELD行号。因此,您可能需要检查其他字段的可串行性。(我使用FB 1.3.9。)。