Checkstyle,如何强制序列化 ID 的存在?

Checkstyle, how to enforce the presence of a serialisation ID?

有谁知道 Checkstyle Check 在任何实现 Serializable 的 class 中强制存在序列化 ID。

例如:

public class Accounts extends implements Serializable {

应该强制有字段

/**
* Id for serialization
*/
private static final long serialVersionUID = 1L;

似乎没有针对这个特定案例的检查

我不清楚如何使用 / ,如果使用合适,"Regexp" 检查这种情况, 因为我不确定如何将其应用于特定的 classes(实现可序列化的那些)?

任何指点或帮助都会很棒。 谢谢大家。 卢克

开箱即用的 Checkstyle 目前无法做到这一点。 (出于各种原因,其中之一是因为 Checkstyle 对源代码而不是字节码进行操作,所以判断 class 是否实现 Serializable 并不容易。)但是,您可以 write a custom check 去做。

话虽如此,您可能想尝试一下 FindBugs, if that is possible for you. It has a check called SE_NO_SERIALVERSIONID which should do just what you need. And some more related checks, too, such as SE_NONFINAL_SERIALVERSIONID, SE_NONLONG_SERIALVERSIONID, or SE_NONSTATIC_SERIALVERSIONID