Skip to content

Commit 7e32f50

Browse files
edyda99sbrannen
authored andcommitted
Configure Checkstyle to require package-level null-safety annotations
This commit updates the project's checkstyle configuration to check that package-info.java files contain the @NonNullApi and @NonNullFields null-safety annotations. See gh-30069
1 parent 268e3fe commit 7e32f50

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/checkstyle/checkstyle-suppressions.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,15 @@
130130
<suppress files="sockjs[\\/]transport[\\/]TransportType" checks="JavadocVariable"/>
131131
<suppress files="src[\\/]test[\\/]java[\\/]org[\\/]springframework[\\/]web[\\/]reactive[\\/]protobuf[\\/].*" checks=".*"/>
132132

133-
<!-- Suppress JavadocPackage checks on packages outside of src/main-->
133+
<!-- Suppress JavadocPackage checks and package null safety annotations on packages outside of src/main-->
134134
<!-- And outside 'framework-docs' module-->
135135
<!-- And outside 'spring-core/src/main/java/org/springframework/asm' package-->
136136
<!-- And outside 'spring-core/src/main/java/org/springframework/cglib' package-->
137137
<!-- And outside 'spring-core/src/main/java/org/springframework/objenesis' package-->
138138
<!-- And outside 'spring-core/src/main/java/org/springframework/javapoet' package-->
139139
<!-- And outside 'spring-core/src/main/java/org/springframework/lang' package-->
140140
<suppress checks="JavadocPackage" files="(^(?!.*src[\\/]main[\\/]).*)|(.*framework-docs.*)|(.*spring-core\/src\/main\/java\/org\/springframework\/asm.*)|(.*spring-core\/src\/main\/java\/org\/springframework\/cglib.*)|(.*spring-core\/src\/main\/java\/org\/springframework\/objenesis.*)|(.*spring-core\/src\/main\/java\/org\/springframework\/javapoet.*)|(.*spring-core\/src\/main\/java\/org\/springframework\/lang.*)"/>
141+
<suppress checks="RegexpSinglelineJava" files="^(?!.*(package-info.java))" id="javaDocPackageNonNullFieldsAnnotation"/>
142+
<suppress checks="RegexpSinglelineJava" files="^(?!.*(package-info.java))" id="javaDocPackageNonNullApiAnnotation"/>
141143

142144
</suppressions>

src/checkstyle/checkstyle.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,26 @@
239239
<module name="io.spring.javaformat.checkstyle.check.SpringCatchCheck"/>
240240
<module name="io.spring.javaformat.checkstyle.check.SpringJavadocCheck"/>
241241
<module name="io.spring.javaformat.checkstyle.check.SpringJUnit5Check"/>
242+
<!--package-info should contain null-safety annotations-->
243+
<!--These two modules will fail to detect multiline annotations-->
244+
<module name="RegexpSinglelineJavaCheck">
245+
<property name="id" value="javaDocPackageNonNullFieldsAnnotation"/>
246+
<property name="format" value="(@NonNullFields|@org\.springframework\.lang\.NonNullFields)"/>
247+
<property name="minimum" value="1"/>
248+
<property name="maximum" value="1"/>
249+
<property name="severity" value="warning"/>
250+
<property name="message" value="package-info.java is missing required null-safety annotation @NonNullFields."/>
251+
<property name="ignoreComments" value="true"/>
252+
</module>
253+
<module name="RegexpSinglelineJavaCheck">
254+
<property name="id" value="javaDocPackageNonNullApiAnnotation"/>
255+
<property name="format" value="(@NonNullApi|@org\.springframework\.lang\.NonNullApi)"/>
256+
<property name="minimum" value="1"/>
257+
<property name="maximum" value="1"/>
258+
<property name="severity" value="warning"/>
259+
<property name="message" value="package-info.java is missing required null-safety annotation @NonNullApi."/>
260+
<property name="ignoreComments" value="true"/>
261+
</module>
242262
</module>
243263

244264
<!--package-info checker -->

0 commit comments

Comments
 (0)