我正在寻找一个工具,它可以告诉我一个类/对象是否是合法的可序列化对象(实现可序列化,并且其所有字段都是可序列化的)。 我知道我可以知道一个对象是否只能在运行时序列化。 我希望在编译时得到警告,类是否可以序列化(例如,成员不可序列化,尽管在运行时它可以为null,或者是可连接的子类类型)。另外,在运行时,我想在尝试通过网络作为序列化对象发送它之前检查一个类是否真的可序列化。
感谢...
答案 0 :(得分:4)
是否需要编译时间?我以前用单元测试完成了这个,这在开发生命周期方面非常接近编译时间。 This article有点陈旧,但概述了一些好的方法。通过使用两个Web服务器对我们的webapp进行真正的故障转移测试,我们也发现了不可序列化的状态,这就是我需要验证可序列化的原因。
答案 1 :(得分:1)
这通常使用静态代码分析来完成。
一个经常使用的工具是Findbugs。它会告诉你许多常见问题和可疑行为。其中一项检查是您提到的(described here)。
大多数IDE都有插件,所以它可以在你工作时完成它的工作,一个常见的模式就是将它包含在你的自动构建中。