Reports classes that may be serialized or deserialized.

A class may be serialized if it supports the Serializable interface, and its readObject() and writeObject() methods are not defined to always throw an exception. Serializable classes may be dangerous in code intended for secure use.

Example:


  class DeserializableClass implements Serializable { // the class doesn't contain 'writeObject()' method throwing an exception
    private int sensitive = 736326;

    private void readObject(ObjectInputStream in) {
        throw new Error();
    }
}

After the quick-fix is applied:


  class DeserializableClass implements Serializable {
    private int sensitive = 736326;

    private void readObject(ObjectInputStream in) {
        throw new Error();
    }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
        throw new java.io.NotSerializableException("DeserializableClass");
    }
  }

Use the following options to configure the inspection: