Skip to content

Commit 60b02d1

Browse files
authored
Add Checkstyle (#206)
* Copyright * Checkstyle #1 * Checkstyle #2
1 parent c6f3e63 commit 60b02d1

File tree

52 files changed

+687
-18
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+687
-18
lines changed

buildSrc/src/main/kotlin/sb-ot-demo.docker.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
/*
2+
* Copyright (c) 2020-2025. Ivan Vakhrushev and others.
3+
* https://github.com/mfvanek/spring-boot-open-telemetry-demo
4+
*
5+
* Licensed under the Apache License 2.0
6+
*/
7+
18
plugins {
29
id("com.bmuschko.docker-java-application")
310
}

buildSrc/src/main/kotlin/sb-ot-demo.forbidden-apis.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
/*
2+
* Copyright (c) 2020-2025. Ivan Vakhrushev and others.
3+
* https://github.com/mfvanek/spring-boot-open-telemetry-demo
4+
*
5+
* Licensed under the Apache License 2.0
6+
*/
7+
18
import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis
29

310
plugins {

buildSrc/src/main/kotlin/sb-ot-demo.java-conventions.gradle.kts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
1+
/*
2+
* Copyright (c) 2020-2025. Ivan Vakhrushev and others.
3+
* https://github.com/mfvanek/spring-boot-open-telemetry-demo
4+
*
5+
* Licensed under the Apache License 2.0
6+
*/
7+
18
import net.ltgt.gradle.errorprone.errorprone
29

310
plugins {
411
id("java")
512
id("jacoco")
613
id("pmd")
14+
id("checkstyle")
715
id("net.ltgt.errorprone")
816
id("com.google.osdetector")
917
}
@@ -35,6 +43,14 @@ jacoco {
3543
toolVersion = "0.8.12"
3644
}
3745

46+
checkstyle {
47+
toolVersion = "10.21.1"
48+
configFile = file("${rootDir}/config/checkstyle/checkstyle.xml")
49+
isIgnoreFailures = false
50+
maxWarnings = 0
51+
maxErrors = 0
52+
}
53+
3854
pmd {
3955
toolVersion = "7.9.0"
4056
isConsoleOutput = true
@@ -54,7 +70,7 @@ tasks {
5470

5571
test {
5672
useJUnitPlatform()
57-
dependsOn(pmdMain, pmdTest)
73+
dependsOn(checkstyleMain, checkstyleTest, pmdMain, pmdTest)
5874
finalizedBy(jacocoTestReport, jacocoTestCoverageVerification)
5975
maxParallelForks = 1
6076
}

common-internal-bom/build.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
/*
2+
* Copyright (c) 2020-2025. Ivan Vakhrushev and others.
3+
* https://github.com/mfvanek/spring-boot-open-telemetry-demo
4+
*
5+
* Licensed under the Apache License 2.0
6+
*/
7+
18
plugins {
29
id("java-platform")
310
}

config/checkstyle/checkstyle.xml

Lines changed: 312 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,312 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE module PUBLIC
3+
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
4+
"https://checkstyle.org/dtds/configuration_1_3.dtd">
5+
<module name="Checker">
6+
<property name="charset" value="UTF-8"/>
7+
<property name="severity" value="warning"/>
8+
<property name="fileExtensions" value="java"/>
9+
<module name="BeforeExecutionExclusionFileFilter">
10+
<property name="fileNamePattern" value="module\-info\.java$"/>
11+
</module>
12+
<module name="SuppressWarningsFilter"/>
13+
<!-- <module name="JavadocPackage"/> invalid -->
14+
<module name="FileTabCharacter"/>
15+
<module name="FileLength"/>
16+
<module name="LineLength">
17+
<property name="fileExtensions" value="java"/>
18+
<property name="max" value="199"/>
19+
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
20+
</module>
21+
<module name="Header">
22+
<property name="header"
23+
value="/*\n * Copyright (c) 2020-2025. Ivan Vakhrushev and others.\n * https://github.com/mfvanek/spring-boot-open-telemetry-demo\n *\n * Licensed under the Apache License 2.0\n */"/>
24+
<property name="fileExtensions" value="java"/>
25+
</module>
26+
<module name="NewlineAtEndOfFile"/>
27+
<module name="OrderedProperties"/>
28+
<module name="Translation"/>
29+
<module name="UniqueProperties"/>
30+
<module name="TreeWalker">
31+
<module name="SuppressWarningsHolder"/>
32+
<module name="AbstractClassName">
33+
<property name="ignoreName" value="true"/>
34+
</module>
35+
<module name="AnonInnerLength"/>
36+
<!--<module name="AvoidInlineConditionals"/> invalid -->
37+
<module name="AvoidNestedBlocks"/>
38+
<module name="BooleanExpressionComplexity"/>
39+
<module name="ClassDataAbstractionCoupling"/>
40+
<module name="ClassFanOutComplexity"/>
41+
<!-- <module name="ClassMemberImpliedModifier"/> invalid -->
42+
<module name="RedundantModifier"/>
43+
<module name="CovariantEquals"/>
44+
<module name="CyclomaticComplexity"/>
45+
<module name="DeclarationOrder"/>
46+
<module name="DescendantToken"/>
47+
<!-- <module name="DesignForExtension"/> invalid -->
48+
<module name="EmptyForInitializerPad"/>
49+
<module name="EmptyForIteratorPad"/>
50+
<module name="EqualsAvoidNull"/>
51+
<module name="EqualsHashCode"/>
52+
<module name="ExecutableStatementCount"/>
53+
<module name="ExplicitInitialization"/>
54+
<!-- <module name="FinalClass"/> invalid -->
55+
<module name="FinalLocalVariable"/>
56+
<!-- <module name="FinalParameters"/> disabled here. Controlled by PMD.AvoidReassigningParameters -->
57+
<!-- <module name="HiddenField"/> invalid -->
58+
<!-- <module name="HideUtilityClassConstructor"/> invalid -->
59+
<module name="IllegalCatch"/>
60+
<module name="IllegalIdentifierName"/>
61+
<module name="IllegalInstantiation"/>
62+
<module name="IllegalThrows"/>
63+
<module name="IllegalType"/>
64+
<module name="InnerAssignment"/>
65+
<module name="InnerTypeLast"/>
66+
<module name="InterfaceIsType"/>
67+
<!-- <module name="InterfaceMemberImpliedModifier"/> invalid -->
68+
<module name="JavaNCSS"/>
69+
<module name="LambdaBodyLength">
70+
<property name="max" value="30"/>
71+
</module>
72+
<module name="LocalFinalVariableName"/>
73+
<!-- <module name="MagicNumber"/> invalid -->
74+
<!-- <module name="MatchXpath"/> not applicable -->
75+
<module name="MethodCount"/>
76+
<module name="MethodLength"/>
77+
<!-- <module name="MissingCtor"/> invalid -->
78+
<module name="MissingDeprecated"/>
79+
<module name="MissingOverride"/>
80+
<module name="ModifiedControlVariable"/>
81+
<!-- <module name="MultipleStringLiterals"/> invalid -->
82+
<module name="MutableException"/>
83+
<module name="NestedForDepth"/>
84+
<module name="NestedIfDepth"/>
85+
<module name="NestedTryDepth"/>
86+
<module name="NoCodeInFile"/>
87+
<module name="NoWhitespaceAfter"/>
88+
<module name="NPathComplexity"/>
89+
<module name="OuterTypeFilename"/>
90+
<module name="OuterTypeNumber"/>
91+
<module name="PackageAnnotation"/>
92+
<module name="PackageDeclaration"/>
93+
<module name="ParameterAssignment"/>
94+
<module name="ParameterNumber">
95+
<property name="max" value="12"/>
96+
<property name="ignoreOverriddenMethods" value="true"/>
97+
</module>
98+
<module name="RecordComponentNumber"/>
99+
<module name="RequireThis"/>
100+
<module name="ReturnCount">
101+
<property name="max" value="3"/>
102+
</module>
103+
<module name="SimplifyBooleanExpression"/>
104+
<module name="SimplifyBooleanReturn"/>
105+
<module name="SingleSpaceSeparator"/>
106+
<module name="StaticVariableName"/>
107+
<module name="StringLiteralEquality"/>
108+
<module name="SuperClone"/>
109+
<module name="SuperFinalize"/>
110+
<module name="SuppressWarnings"/>
111+
<module name="ThrowsCount"/>
112+
<module name="TodoComment"/>
113+
<!-- <module name="TrailingComment"/> invalid -->
114+
<module name="TypecastParenPad"/>
115+
<!-- <module name="UncommentedMain"/> invalid -->
116+
<module name="UnnecessaryParentheses"/>
117+
<module name="UnnecessarySemicolonInEnumeration"/>
118+
<module name="UnnecessarySemicolonInTryWithResources"/>
119+
<module name="UnnecessarySemicolonAfterOuterTypeDeclaration"/>
120+
<module name="UnnecessarySemicolonAfterTypeMemberDeclaration"/>
121+
<module name="UnusedLocalVariable"/>
122+
<!-- <module name="VisibilityModifier"/> invalid -->
123+
<module name="IllegalToken"/>
124+
<module name="IllegalTokenText"/>
125+
<module name="AvoidEscapedUnicodeCharacters"/>
126+
<module name="AvoidStarImport"/>
127+
<!-- <module name="AvoidStaticImport"/> invalid -->
128+
<module name="OneTopLevelClass"/>
129+
<module name="NoLineWrap"/>
130+
<module name="EmptyBlock"/>
131+
<module name="NeedBraces"/>
132+
<module name="LeftCurly"/>
133+
<module name="RightCurly">
134+
<property name="option" value="same"/>
135+
<property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_DO"/>
136+
</module>
137+
<module name="RightCurly">
138+
<property name="option" value="alone"/>
139+
<property name="tokens"
140+
value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT, INSTANCE_INIT, ANNOTATION_DEF, ENUM_DEF, INTERFACE_DEF, RECORD_DEF, COMPACT_CTOR_DEF"/>
141+
</module>
142+
<module name="WhitespaceAfter"/>
143+
<module name="WhitespaceAround"/>
144+
<module name="ArrayTrailingComma"/>
145+
<module name="NoArrayTrailingComma"/>
146+
<module name="NoEnumTrailingComma"/>
147+
<module name="AvoidDoubleBraceInitialization"/>
148+
<module name="AvoidNoArgumentSuperConstructorCall"/>
149+
<module name="EmptyStatement"/>
150+
<module name="OneStatementPerLine"/>
151+
<module name="MultipleVariableDeclarations"/>
152+
<module name="ArrayTypeStyle"/>
153+
<module name="MissingSwitchDefault"/>
154+
<module name="DefaultComesLast"/>
155+
<module name="FallThrough"/>
156+
<module name="UpperEll"/>
157+
<module name="ModifierOrder"/>
158+
<module name="NoClone"/>
159+
<module name="NoFinalizer"/>
160+
<module name="EmptyLineSeparator">
161+
<property name="allowNoEmptyLineBetweenFields" value="true"/>
162+
<property name="allowMultipleEmptyLines" value="false"/>
163+
<property name="allowMultipleEmptyLinesInsideClassMembers" value="false"/>
164+
</module>
165+
<module name="SeparatorWrap">
166+
<property name="id" value="SeparatorWrapDot"/>
167+
<property name="tokens" value="DOT"/>
168+
<property name="option" value="nl"/>
169+
</module>
170+
<module name="SeparatorWrap">
171+
<property name="id" value="SeparatorWrapComma"/>
172+
<property name="tokens" value="COMMA"/>
173+
<property name="option" value="EOL"/>
174+
</module>
175+
<module name="SeparatorWrap">
176+
<!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/259 -->
177+
<property name="id" value="SeparatorWrapEllipsis"/>
178+
<property name="tokens" value="ELLIPSIS"/>
179+
<property name="option" value="EOL"/>
180+
</module>
181+
<module name="SeparatorWrap">
182+
<!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/258 -->
183+
<property name="id" value="SeparatorWrapArrayDeclarator"/>
184+
<property name="tokens" value="ARRAY_DECLARATOR"/>
185+
<property name="option" value="EOL"/>
186+
</module>
187+
<module name="SeparatorWrap">
188+
<property name="id" value="SeparatorWrapMethodRef"/>
189+
<property name="tokens" value="METHOD_REF"/>
190+
<property name="option" value="nl"/>
191+
</module>
192+
<module name="PackageName"/>
193+
<module name="TypeName"/>
194+
<module name="MemberName"/>
195+
<module name="ParameterName"/>
196+
<module name="LambdaParameterName"/>
197+
<module name="CatchParameterName"/>
198+
<module name="LocalVariableName"/>
199+
<module name="PatternVariableName"/>
200+
<module name="ClassTypeParameterName"/>
201+
<module name="RecordComponentName"/>
202+
<module name="RecordTypeParameterName"/>
203+
<module name="MethodTypeParameterName"/>
204+
<module name="InterfaceTypeParameterName"/>
205+
<module name="NoFinalizer"/>
206+
<module name="GenericWhitespace"/>
207+
<module name="Indentation">
208+
<property name="basicOffset" value="4"/>
209+
<property name="braceAdjustment" value="4"/>
210+
<property name="caseIndent" value="4"/>
211+
<property name="throwsIndent" value="4"/>
212+
<property name="lineWrappingIndentation" value="4"/>
213+
<property name="arrayInitIndent" value="4"/>
214+
</module>
215+
<module name="AbbreviationAsWordInName">
216+
<property name="ignoreFinal" value="false"/>
217+
<property name="allowedAbbreviationLength" value="0"/>
218+
<property name="allowedAbbreviations" value="SSD"/>
219+
<property name="tokens"
220+
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, ANNOTATION_DEF, ANNOTATION_FIELD_DEF, PARAMETER_DEF, VARIABLE_DEF, METHOD_DEF, PATTERN_VARIABLE_DEF, RECORD_DEF, RECORD_COMPONENT_DEF"/>
221+
</module>
222+
<!-- <module name="OverloadMethodsDeclarationOrder"/> invalid -->
223+
<module name="VariableDeclarationUsageDistance"/>
224+
<!-- <module name="ImportOrder"/> invalid -->
225+
<module name="CustomImportOrder">
226+
<property name="sortImportsInGroupAlphabetically" value="true"/>
227+
<property name="separateLineBetweenGroups" value="true"/>
228+
<property name="customImportOrderRules" value="THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE###STATIC"/>
229+
<property name="tokens" value="IMPORT, STATIC_IMPORT, PACKAGE_DEF"/>
230+
</module>
231+
<module name="UnusedImports"/>
232+
<module name="RedundantImport"/>
233+
<module name="IllegalImport">
234+
<property name="id" value="IllegalImportMain"/>
235+
<property name="regexp" value="true"/>
236+
<property name="illegalClasses"
237+
value="^org\.springframework\.lang\.(NonNull|Nullable), ^org\.jetbrains\.annotations\.(NotNull|Nullable),
238+
^io\.micrometer\.core\.lang\.(NonNull|Nullable),
239+
^org\.elasticsearch\.common\.Nullable, ^org\.apache\.thrift\.annotation\.Nullable,
240+
^org\.junit\.Test, ^org\.junit\.jupiter\.api\.Assertions, ^org\.junit\.Test, ^org\.junit\.jupiter\.api\.Assertions\..*,
241+
^org\.springframework\.boot\.test\.web\.client\.TestRestTemplate,^org\.springframework\.web\.client\.RestTemplate,^javax\.transaction\.Transactional,
242+
^org\.springframework\.test\.web\.servlet\.MockMvc"/>
243+
<property name="illegalPkgs" value="^org\.hamcrest"/>
244+
</module>
245+
<module name="IllegalImport">
246+
<property name="id" value="IllegalImportJavaIo"/>
247+
<property name="regexp" value="true"/>
248+
<property name="illegalClasses"
249+
value="^java\.io\.BufferedInputStream"/>
250+
</module>
251+
<module name="MethodParamPad"/>
252+
<module name="NoWhitespaceBefore"/>
253+
<module name="NoWhitespaceBeforeCaseDefaultColon"/>
254+
<module name="ParenPad"/>
255+
<module name="OperatorWrap">
256+
<property name="option" value="EOL"/>
257+
</module>
258+
<module name="AnnotationLocation">
259+
<property name="id" value="AnnotationLocationMostCases"/>
260+
<property name="tokens"
261+
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF,
262+
RECORD_DEF, COMPACT_CTOR_DEF"/>
263+
</module>
264+
<module name="AnnotationLocation">
265+
<property name="id" value="AnnotationLocationVariables"/>
266+
<property name="tokens" value="VARIABLE_DEF"/>
267+
<property name="allowSamelineMultipleAnnotations" value="true"/>
268+
</module>
269+
<!--<module name="AnnotationOnSameLine"/> invalid -->
270+
<module name="AnnotationUseStyle"/>
271+
<module name="NonEmptyAtclauseDescription"/>
272+
<module name="InvalidJavadocPosition"/>
273+
<module name="JavadocBlockTagLocation"/>
274+
<module name="JavadocContentLocationCheck"/>
275+
<module name="JavadocMissingLeadingAsterisk"/>
276+
<module name="JavadocMissingWhitespaceAfterAsterisk"/>
277+
<module name="JavadocTagContinuationIndentation"/>
278+
<!-- <module name="JavadocParagraph"/> invalid -->
279+
<module name="JavadocStyle"/>
280+
<module name="SummaryJavadoc">
281+
<property name="forbiddenSummaryFragments"
282+
value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
283+
</module>
284+
<module name="RequireEmptyLineBeforeBlockTagGroup"/>
285+
<module name="AtclauseOrder">
286+
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
287+
<property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
288+
</module>
289+
<module name="JavadocMethod">
290+
<property name="accessModifiers" value="public"/>
291+
<property name="allowMissingParamTags" value="true"/>
292+
<property name="allowMissingReturnTag" value="true"/>
293+
<property name="allowedAnnotations" value="Override, Test"/>
294+
<property name="tokens" value="METHOD_DEF, CTOR_DEF, ANNOTATION_FIELD_DEF, COMPACT_CTOR_DEF"/>
295+
</module>
296+
<!-- <module name="MissingJavadocMethod"/> invalid -->
297+
<module name="MissingJavadocPackage"/>
298+
<module name="JavadocType"/>
299+
<!-- <module name="JavadocVariable"/> invalid -->
300+
<!-- <module name="MissingJavadocType"/> invalid -->
301+
<!-- <module name="WriteTag"/> invalid -->
302+
<module name="MethodName"/>
303+
<module name="ConstantName"/>
304+
<module name="SingleLineJavadoc"/>
305+
<module name="EmptyCatchBlock">
306+
<property name="exceptionVariableName" value="expected"/>
307+
</module>
308+
<module name="CommentsIndentation">
309+
<property name="tokens" value="SINGLE_LINE_COMMENT, BLOCK_COMMENT_BEGIN"/>
310+
</module>
311+
</module>
312+
</module>

config/forbidden-apis/forbidden-apis.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@defaultMessage Avoid using these methods, consider alternative approaches
1+
@defaultMessage Avoid using these methods/annotations, consider alternative approaches
22
java.util.Collections#emptyList()
33
java.util.Collections#emptyMap()
44
java.util.Collections#emptySet()
@@ -12,3 +12,4 @@ java.util.Collections#singletonMap(java.lang.Object,java.lang.Object)
1212
java.util.Arrays#asList(java.lang.Object[])
1313
java.util.Collections#unmodifiableList(java.util.List)
1414
java.util.Collections#unmodifiableSet(java.util.Set)
15+
org.springframework.lang.Nullable

0 commit comments

Comments
 (0)