This PR abstracts all tasks executed in core logic related to NullAway specifically and extracts them into interfaces. With this change, we can add support for a new checker (e.g. taint or other nullness checkers) by just implementing the Checker interface.
Below is a quick summary of tasks related specifically to NullAway:
Backward compatibility check with different NullAway serialization versions.
Preparation of NullAway config file before compiling a module
Deserialization of errors reported by NullAway.
Error suppression logic after the inference is executed.
Preprocess step which injects @Initializer annotations
Error equals and hashcode logic which is specific to NullAway (the edge case for initialization errors)
This PR abstracts all tasks executed in
core
logic related to NullAway specifically and extracts them into interfaces. With this change, we can add support for a new checker (e.g. taint or other nullness checkers) by just implementing theChecker
interface.Below is a quick summary of tasks related specifically to NullAway:
@Initializer
annotationsequals
andhashcode
logic which is specific to NullAway (the edge case for initialization errors)