ConfigMe
ConfigMe copied to clipboard
Test for missing @NotNull / @Nullable annotations
Write a unit test that scans the parameters of methods and constructors, and the return value of methods and that reports any that don't have @NotNull or @Nullable.
To do
- Add org.reflections as a test dependency
- Write a test that collects all classes of ConfigMe
- Skip classes that end in "Test"
- Collect all method/constructor params and method return values
- Report all instances where neither nullability annotation is used
- Special case arrays:
T @NotNull []is how the array itself is reported not null. Probably should also check the component if possible? - Begs the question what to do with other generic types such as
List<String>(vs.List<@NotNull String>)...?
- Special case arrays:
Seems impossible to do currently:
@NotNulland@NullablehaveSOURCEretention, so need to use org.reflections or javassist to pick out the values- org.reflections has no way of returning whether a specific method parameter has an annotation
- javassist has a bug where it thinks
@Foo String[]means the array is annotated, while it's supposed to beString @Foo []. This leads to a lot of false positives.