Skip to content

Commit 0ef5745

Browse files
authored
chore: New checkstyle rules and GitHub action (#107)
* New checkstyle rules and GitHub action GitHub Actions: Add gitlint to check commit message format Signed-off-by: Joel Hanson <joelhanson025@gmail.com>
1 parent 7cc087c commit 0ef5745

22 files changed

+913
-545
lines changed

.checkstyle/checkstyle.xml

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE module PUBLIC
3+
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4+
"http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">
5+
6+
<module name="Checker">
7+
8+
<property name="localeLanguage" value="en"/>
9+
10+
<module name="FileTabCharacter"/>
11+
12+
<module name="SuppressWarningsFilter"/>
13+
14+
<module name="TreeWalker">
15+
16+
<!-- code cleanup -->
17+
<module name="UnusedImports">
18+
<property name="processJavadoc" value="true"/>
19+
</module>
20+
<module name="RedundantImport"/>
21+
<module name="IllegalImport"/>
22+
<module name="EqualsHashCode"/>
23+
<module name="SimplifyBooleanExpression"/>
24+
<module name="OneStatementPerLine"/>
25+
<module name="UnnecessaryParentheses"/>
26+
<module name="SimplifyBooleanReturn"/>
27+
28+
<!-- style -->
29+
<module name="DefaultComesLast"/>
30+
<module name="EmptyStatement"/>
31+
<module name="ArrayTypeStyle"/>
32+
<module name="UpperEll"/>
33+
<module name="LeftCurly"/>
34+
<module name="RightCurly"/>
35+
<module name="EmptyStatement"/>
36+
<module name="ConstantName">
37+
<property name="format" value="(^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$)|(^log$)"/>
38+
</module>
39+
<module name="LocalVariableName"/>
40+
<module name="LocalFinalVariableName"/>
41+
<module name="MemberName"/>
42+
<module name="ClassTypeParameterName">
43+
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
44+
</module>
45+
<module name="MethodTypeParameterName">
46+
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
47+
</module>
48+
<module name="InterfaceTypeParameterName">
49+
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
50+
</module>
51+
<module name="PackageName"/>
52+
<module name="ParameterName"/>
53+
<module name="StaticVariableName"/>
54+
<module name="TypeName"/>
55+
<module name="AvoidStarImport"/>
56+
57+
<!-- dependencies -->
58+
<!--<module name="ImportControl">
59+
<property name="file" value="${importControlFile}"/>
60+
</module>-->
61+
62+
<!-- whitespace -->
63+
<module name="GenericWhitespace"/>
64+
<module name="NoWhitespaceBefore"/>
65+
<module name="WhitespaceAfter"/>
66+
<module name="NoWhitespaceAfter"/>
67+
<module name="WhitespaceAround">
68+
<property name="allowEmptyConstructors" value="true"/>
69+
<property name="allowEmptyMethods" value="true"/>
70+
</module>
71+
<module name="Indentation"/>
72+
<module name="MethodParamPad"/>
73+
<module name="ParenPad"/>
74+
<module name="TypecastParenPad"/>
75+
76+
<!-- locale-sensitive methods should specify locale -->
77+
<module name="Regexp">
78+
<property name="format" value="\.to(Lower|Upper)Case\(\)"/>
79+
<property name="illegalPattern" value="true"/>
80+
<property name="ignoreComments" value="true"/>
81+
</module>
82+
83+
<!-- code quality -->
84+
<module name="MethodLength"/>
85+
<module name="ParameterNumber">
86+
<!-- default is 8 -->
87+
<property name="max" value="13"/>
88+
</module>
89+
<module name="ClassDataAbstractionCoupling">
90+
<!-- default is 7 -->
91+
<property name="max" value="20"/>
92+
</module>
93+
<module name="BooleanExpressionComplexity">
94+
<!-- default is 3 -->
95+
<property name="max" value="5"/>
96+
</module>
97+
98+
<module name="ClassFanOutComplexity">
99+
<!-- default is 20 -->
100+
<property name="max" value="44"/>
101+
</module>
102+
<module name="CyclomaticComplexity">
103+
<!-- default is 10-->
104+
<property name="max" value="19"/>
105+
</module>
106+
<module name="JavaNCSS">
107+
<!-- default is 50 -->
108+
<property name="methodMaximum" value="100"/>
109+
</module>
110+
<module name="NPathComplexity">
111+
<!-- default is 200 -->
112+
<property name="max" value="9111"/>
113+
</module>
114+
115+
<module name="IllegalToken">
116+
<property name="tokens" value="LITERAL_ASSERT"/>
117+
</module>
118+
119+
<!-- Make the @SuppressWarnings annotations available to Checkstyle -->
120+
<module name="SuppressWarningsHolder"/>
121+
122+
<!-- ES Specific rules -->
123+
<module name="FinalLocalVariable">
124+
<property name="tokens" value="VARIABLE_DEF,PARAMETER_DEF"/>
125+
<property name="validateEnhancedForLoopVariable" value="true"/>
126+
<message key="final.variable"
127+
value="All variables and parameters must be declared final, to enable a functional style. ''{0}'' is currently not final."/>
128+
</module>
129+
130+
</module>
131+
132+
<module name="BeforeExecutionExclusionFileFilter">
133+
<property name="fileNamePattern" value=".*[\\/]kafka-admin-client[\\/].*$" />
134+
</module>
135+
136+
<module name="SuppressionFilter">
137+
<property name="file" value="${checkstyle.config.path}/.checkstyle/suppressions.xml"/>
138+
</module>
139+
140+
<!-- Filter out Checkstyle warnings that have been suppressed with the @SuppressWarnings annotation -->
141+
<module name="SuppressWarningsFilter"/>
142+
143+
</module>

.checkstyle/intellij-checkstyle.xml

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE module PUBLIC
3+
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4+
"http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">
5+
6+
<module name="Checker">
7+
8+
<property name="localeLanguage" value="en"/>
9+
10+
<module name="FileTabCharacter"/>
11+
12+
<module name="SuppressWarningsFilter"/>
13+
14+
<module name="TreeWalker">
15+
16+
<!-- code cleanup -->
17+
<module name="UnusedImports">
18+
<property name="processJavadoc" value="true"/>
19+
</module>
20+
<module name="RedundantImport"/>
21+
<module name="IllegalImport"/>
22+
<module name="EqualsHashCode"/>
23+
<module name="SimplifyBooleanExpression"/>
24+
<module name="OneStatementPerLine"/>
25+
<module name="UnnecessaryParentheses"/>
26+
<module name="SimplifyBooleanReturn"/>
27+
28+
<!-- style -->
29+
<module name="DefaultComesLast"/>
30+
<module name="EmptyStatement"/>
31+
<module name="ArrayTypeStyle"/>
32+
<module name="UpperEll"/>
33+
<module name="LeftCurly"/>
34+
<module name="RightCurly"/>
35+
<module name="EmptyStatement"/>
36+
<module name="ConstantName">
37+
<property name="format" value="(^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$)|(^log$)"/>
38+
</module>
39+
<module name="LocalVariableName"/>
40+
<module name="LocalFinalVariableName"/>
41+
<module name="MemberName"/>
42+
<module name="ClassTypeParameterName">
43+
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
44+
</module>
45+
<module name="MethodTypeParameterName">
46+
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
47+
</module>
48+
<module name="InterfaceTypeParameterName">
49+
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
50+
</module>
51+
<module name="PackageName"/>
52+
<module name="ParameterName"/>
53+
<module name="StaticVariableName"/>
54+
<module name="TypeName"/>
55+
<module name="AvoidStarImport"/>
56+
57+
<!-- dependencies -->
58+
<!--<module name="ImportControl">
59+
<property name="file" value="${importControlFile}"/>
60+
</module>-->
61+
62+
<!-- whitespace -->
63+
<module name="GenericWhitespace"/>
64+
<module name="NoWhitespaceBefore"/>
65+
<module name="WhitespaceAfter"/>
66+
<module name="NoWhitespaceAfter"/>
67+
<module name="WhitespaceAround">
68+
<property name="allowEmptyConstructors" value="true"/>
69+
<property name="allowEmptyMethods" value="true"/>
70+
</module>
71+
<module name="Indentation"/>
72+
<module name="MethodParamPad"/>
73+
<module name="ParenPad"/>
74+
<module name="TypecastParenPad"/>
75+
76+
<!-- locale-sensitive methods should specify locale -->
77+
<module name="Regexp">
78+
<property name="format" value="\.to(Lower|Upper)Case\(\)"/>
79+
<property name="illegalPattern" value="true"/>
80+
<property name="ignoreComments" value="true"/>
81+
</module>
82+
83+
<!-- code quality -->
84+
<module name="MethodLength"/>
85+
<module name="ParameterNumber">
86+
<!-- default is 8 -->
87+
<property name="max" value="13"/>
88+
</module>
89+
<module name="ClassDataAbstractionCoupling">
90+
<!-- default is 7 -->
91+
<property name="max" value="20"/>
92+
</module>
93+
<module name="BooleanExpressionComplexity">
94+
<!-- default is 3 -->
95+
<property name="max" value="5"/>
96+
</module>
97+
98+
<module name="ClassFanOutComplexity">
99+
<!-- default is 20 -->
100+
<property name="max" value="44"/>
101+
</module>
102+
<module name="CyclomaticComplexity">
103+
<!-- default is 10-->
104+
<property name="max" value="19"/>
105+
</module>
106+
<module name="JavaNCSS">
107+
<!-- default is 50 -->
108+
<property name="methodMaximum" value="100"/>
109+
</module>
110+
<module name="NPathComplexity">
111+
<!-- default is 200 -->
112+
<property name="max" value="9111"/>
113+
</module>
114+
115+
<module name="IllegalToken">
116+
<property name="tokens" value="LITERAL_ASSERT"/>
117+
</module>
118+
119+
<!-- Make the @SuppressWarnings annotations available to Checkstyle -->
120+
<module name="SuppressWarningsHolder"/>
121+
122+
<!-- ES Specific rules -->
123+
<module name="FinalLocalVariable">
124+
<property name="tokens" value="VARIABLE_DEF,PARAMETER_DEF"/>
125+
<property name="validateEnhancedForLoopVariable" value="true"/>
126+
<message key="final.variable"
127+
value="All variables and parameters must be declared final, to enable a functional style. ''{0}'' is currently not final."/>
128+
</module>
129+
130+
</module>
131+
132+
<module name="SuppressionFilter">
133+
<property name="file" value=".checkstyle/suppressions.xml"/>
134+
</module>
135+
136+
<!-- Filter out Checkstyle warnings that have been suppressed with the @SuppressWarnings annotation -->
137+
<module name="SuppressWarningsFilter"/>
138+
139+
</module>

.checkstyle/suppressions.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0"?>
2+
3+
<!DOCTYPE suppressions PUBLIC
4+
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
5+
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
6+
7+
<suppressions>
8+
9+
<!-- Note that [/\\] must be used as the path separator for cross-platform support -->
10+
11+
</suppressions>
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Checkstyle and Tests
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- 'master'
7+
types: [opened, synchronize, reopened]
8+
9+
jobs:
10+
test:
11+
name: Checkstyle and Tests
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v3
16+
- name: Set up JDK 8
17+
uses: actions/setup-java@v3
18+
with:
19+
java-version: 8
20+
distribution: 'temurin'
21+
- name: Get java-version
22+
run: |
23+
BUILD_VERSION=$( mvn help:evaluate -Dexpression=project.version -q -DforceStdout )
24+
echo "VERSION=$BUILD_VERSION" >> $GITHUB_ENV
25+
- name: Compile
26+
run: mvn -X compile
27+
- name: Checkstyle
28+
run: mvn -X validate
29+
- name: Test
30+
run: mvn -X test
31+
verify-commits:
32+
name: Verify Commits
33+
runs-on: ubuntu-latest
34+
steps:
35+
- name: Checkout code
36+
uses: actions/checkout@v2
37+
with:
38+
ref: ${{ github.event.pull_request.head.sha }}
39+
fetch-depth: 0
40+
41+
- name: Verify Signed-off-by
42+
run: |
43+
for commit in $(git rev-list --no-merges HEAD^..HEAD); do
44+
if ! git log -1 --format=%B "$commit" | grep -q "^Signed-off-by: "; then
45+
echo "Commit $commit is missing Signed-off-by line."
46+
exit 1
47+
fi
48+
done

pom.xml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,31 @@
262262
</execution>
263263
</executions>
264264
</plugin>
265+
<plugin>
266+
<groupId>org.apache.maven.plugins</groupId>
267+
<artifactId>maven-checkstyle-plugin</artifactId>
268+
<version>3.2.0</version>
269+
<configuration>
270+
<encoding>UTF-8</encoding>
271+
<consoleOutput>true</consoleOutput>
272+
<failsOnError>true</failsOnError>
273+
<violationSeverity>warning</violationSeverity>
274+
<failOnViolation>true</failOnViolation>
275+
<linkXRef>false</linkXRef>
276+
<sourceDirectories>${project.build.sourceDirectory}</sourceDirectories>
277+
<configLocation>${project.basedir}/.checkstyle/checkstyle.xml</configLocation>
278+
<propertyExpansion>checkstyle.config.path=${project.basedir}</propertyExpansion>
279+
</configuration>
280+
<executions>
281+
<execution>
282+
<id>validate</id>
283+
<phase>validate</phase>
284+
<goals>
285+
<goal>check</goal>
286+
</goals>
287+
</execution>
288+
</executions>
289+
</plugin>
265290
</plugins>
266291
</build>
267292
</project>

0 commit comments

Comments
 (0)