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。
有谁知道 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。