Files
codeql/java/ql/lib/semmle/code/java/Serializability.qll
Andrew Eisenberg 8e750f18ad Packaging: Java refactoring
Split java pack into `codeql/java-all` and `codeql/java-queries`.
2021-08-19 14:09:35 -07:00

31 lines
928 B
Plaintext

/**
* Provides classes and predicates for working with Java Serialization.
*/
import java
private import frameworks.jackson.JacksonSerializability
private import frameworks.google.GoogleHttpClientApi
/**
* A serializable field may be read without code referencing it,
* due to the use of serialization.
*/
abstract class SerializableField extends Field { }
/**
* A deserializable field may be written without code referencing it,
* due to the use of serialization.
*/
abstract class DeserializableField extends Field { }
/**
* A non-`transient` field in a type that (directly or indirectly) implements the `Serializable` interface
* and may be read or written via serialization.
*/
library class StandardSerializableField extends SerializableField, DeserializableField {
StandardSerializableField() {
this.getDeclaringType().getASupertype*() instanceof TypeSerializable and
not this.isTransient()
}
}