Skip to content

Commit

Permalink
chore: New checkstyle rules and GitHub action (#107)
Browse files Browse the repository at this point in the history
* New checkstyle rules and GitHub action
GitHub Actions: Add gitlint to check commit message format

Signed-off-by: Joel Hanson <[email protected]>
  • Loading branch information
Joel-hanson authored Apr 23, 2023
1 parent 7cc087c commit 0ef5745
Show file tree
Hide file tree
Showing 22 changed files with 913 additions and 545 deletions.
143 changes: 143 additions & 0 deletions .checkstyle/checkstyle.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">

<module name="Checker">

<property name="localeLanguage" value="en"/>

<module name="FileTabCharacter"/>

<module name="SuppressWarningsFilter"/>

<module name="TreeWalker">

<!-- code cleanup -->
<module name="UnusedImports">
<property name="processJavadoc" value="true"/>
</module>
<module name="RedundantImport"/>
<module name="IllegalImport"/>
<module name="EqualsHashCode"/>
<module name="SimplifyBooleanExpression"/>
<module name="OneStatementPerLine"/>
<module name="UnnecessaryParentheses"/>
<module name="SimplifyBooleanReturn"/>

<!-- style -->
<module name="DefaultComesLast"/>
<module name="EmptyStatement"/>
<module name="ArrayTypeStyle"/>
<module name="UpperEll"/>
<module name="LeftCurly"/>
<module name="RightCurly"/>
<module name="EmptyStatement"/>
<module name="ConstantName">
<property name="format" value="(^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$)|(^log$)"/>
</module>
<module name="LocalVariableName"/>
<module name="LocalFinalVariableName"/>
<module name="MemberName"/>
<module name="ClassTypeParameterName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
</module>
<module name="MethodTypeParameterName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
</module>
<module name="InterfaceTypeParameterName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
</module>
<module name="PackageName"/>
<module name="ParameterName"/>
<module name="StaticVariableName"/>
<module name="TypeName"/>
<module name="AvoidStarImport"/>

<!-- dependencies -->
<!--<module name="ImportControl">
<property name="file" value="${importControlFile}"/>
</module>-->

<!-- whitespace -->
<module name="GenericWhitespace"/>
<module name="NoWhitespaceBefore"/>
<module name="WhitespaceAfter"/>
<module name="NoWhitespaceAfter"/>
<module name="WhitespaceAround">
<property name="allowEmptyConstructors" value="true"/>
<property name="allowEmptyMethods" value="true"/>
</module>
<module name="Indentation"/>
<module name="MethodParamPad"/>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>

<!-- locale-sensitive methods should specify locale -->
<module name="Regexp">
<property name="format" value="\.to(Lower|Upper)Case\(\)"/>
<property name="illegalPattern" value="true"/>
<property name="ignoreComments" value="true"/>
</module>

<!-- code quality -->
<module name="MethodLength"/>
<module name="ParameterNumber">
<!-- default is 8 -->
<property name="max" value="13"/>
</module>
<module name="ClassDataAbstractionCoupling">
<!-- default is 7 -->
<property name="max" value="20"/>
</module>
<module name="BooleanExpressionComplexity">
<!-- default is 3 -->
<property name="max" value="5"/>
</module>

<module name="ClassFanOutComplexity">
<!-- default is 20 -->
<property name="max" value="44"/>
</module>
<module name="CyclomaticComplexity">
<!-- default is 10-->
<property name="max" value="19"/>
</module>
<module name="JavaNCSS">
<!-- default is 50 -->
<property name="methodMaximum" value="100"/>
</module>
<module name="NPathComplexity">
<!-- default is 200 -->
<property name="max" value="9111"/>
</module>

<module name="IllegalToken">
<property name="tokens" value="LITERAL_ASSERT"/>
</module>

<!-- Make the @SuppressWarnings annotations available to Checkstyle -->
<module name="SuppressWarningsHolder"/>

<!-- ES Specific rules -->
<module name="FinalLocalVariable">
<property name="tokens" value="VARIABLE_DEF,PARAMETER_DEF"/>
<property name="validateEnhancedForLoopVariable" value="true"/>
<message key="final.variable"
value="All variables and parameters must be declared final, to enable a functional style. ''{0}'' is currently not final."/>
</module>

</module>

<module name="BeforeExecutionExclusionFileFilter">
<property name="fileNamePattern" value=".*[\\/]kafka-admin-client[\\/].*$" />
</module>

<module name="SuppressionFilter">
<property name="file" value="${checkstyle.config.path}/.checkstyle/suppressions.xml"/>
</module>

<!-- Filter out Checkstyle warnings that have been suppressed with the @SuppressWarnings annotation -->
<module name="SuppressWarningsFilter"/>

</module>
139 changes: 139 additions & 0 deletions .checkstyle/intellij-checkstyle.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">

<module name="Checker">

<property name="localeLanguage" value="en"/>

<module name="FileTabCharacter"/>

<module name="SuppressWarningsFilter"/>

<module name="TreeWalker">

<!-- code cleanup -->
<module name="UnusedImports">
<property name="processJavadoc" value="true"/>
</module>
<module name="RedundantImport"/>
<module name="IllegalImport"/>
<module name="EqualsHashCode"/>
<module name="SimplifyBooleanExpression"/>
<module name="OneStatementPerLine"/>
<module name="UnnecessaryParentheses"/>
<module name="SimplifyBooleanReturn"/>

<!-- style -->
<module name="DefaultComesLast"/>
<module name="EmptyStatement"/>
<module name="ArrayTypeStyle"/>
<module name="UpperEll"/>
<module name="LeftCurly"/>
<module name="RightCurly"/>
<module name="EmptyStatement"/>
<module name="ConstantName">
<property name="format" value="(^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$)|(^log$)"/>
</module>
<module name="LocalVariableName"/>
<module name="LocalFinalVariableName"/>
<module name="MemberName"/>
<module name="ClassTypeParameterName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
</module>
<module name="MethodTypeParameterName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
</module>
<module name="InterfaceTypeParameterName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$$"/>
</module>
<module name="PackageName"/>
<module name="ParameterName"/>
<module name="StaticVariableName"/>
<module name="TypeName"/>
<module name="AvoidStarImport"/>

<!-- dependencies -->
<!--<module name="ImportControl">
<property name="file" value="${importControlFile}"/>
</module>-->

<!-- whitespace -->
<module name="GenericWhitespace"/>
<module name="NoWhitespaceBefore"/>
<module name="WhitespaceAfter"/>
<module name="NoWhitespaceAfter"/>
<module name="WhitespaceAround">
<property name="allowEmptyConstructors" value="true"/>
<property name="allowEmptyMethods" value="true"/>
</module>
<module name="Indentation"/>
<module name="MethodParamPad"/>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>

<!-- locale-sensitive methods should specify locale -->
<module name="Regexp">
<property name="format" value="\.to(Lower|Upper)Case\(\)"/>
<property name="illegalPattern" value="true"/>
<property name="ignoreComments" value="true"/>
</module>

<!-- code quality -->
<module name="MethodLength"/>
<module name="ParameterNumber">
<!-- default is 8 -->
<property name="max" value="13"/>
</module>
<module name="ClassDataAbstractionCoupling">
<!-- default is 7 -->
<property name="max" value="20"/>
</module>
<module name="BooleanExpressionComplexity">
<!-- default is 3 -->
<property name="max" value="5"/>
</module>

<module name="ClassFanOutComplexity">
<!-- default is 20 -->
<property name="max" value="44"/>
</module>
<module name="CyclomaticComplexity">
<!-- default is 10-->
<property name="max" value="19"/>
</module>
<module name="JavaNCSS">
<!-- default is 50 -->
<property name="methodMaximum" value="100"/>
</module>
<module name="NPathComplexity">
<!-- default is 200 -->
<property name="max" value="9111"/>
</module>

<module name="IllegalToken">
<property name="tokens" value="LITERAL_ASSERT"/>
</module>

<!-- Make the @SuppressWarnings annotations available to Checkstyle -->
<module name="SuppressWarningsHolder"/>

<!-- ES Specific rules -->
<module name="FinalLocalVariable">
<property name="tokens" value="VARIABLE_DEF,PARAMETER_DEF"/>
<property name="validateEnhancedForLoopVariable" value="true"/>
<message key="final.variable"
value="All variables and parameters must be declared final, to enable a functional style. ''{0}'' is currently not final."/>
</module>

</module>

<module name="SuppressionFilter">
<property name="file" value=".checkstyle/suppressions.xml"/>
</module>

<!-- Filter out Checkstyle warnings that have been suppressed with the @SuppressWarnings annotation -->
<module name="SuppressWarningsFilter"/>

</module>
11 changes: 11 additions & 0 deletions .checkstyle/suppressions.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0"?>

<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">

<suppressions>

<!-- Note that [/\\] must be used as the path separator for cross-platform support -->

</suppressions>
48 changes: 48 additions & 0 deletions .github/workflows/checkstyle-and-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Checkstyle and Tests

on:
pull_request:
branches:
- 'master'
types: [opened, synchronize, reopened]

jobs:
test:
name: Checkstyle and Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: 8
distribution: 'temurin'
- name: Get java-version
run: |
BUILD_VERSION=$( mvn help:evaluate -Dexpression=project.version -q -DforceStdout )
echo "VERSION=$BUILD_VERSION" >> $GITHUB_ENV
- name: Compile
run: mvn -X compile
- name: Checkstyle
run: mvn -X validate
- name: Test
run: mvn -X test
verify-commits:
name: Verify Commits
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0

- name: Verify Signed-off-by
run: |
for commit in $(git rev-list --no-merges HEAD^..HEAD); do
if ! git log -1 --format=%B "$commit" | grep -q "^Signed-off-by: "; then
echo "Commit $commit is missing Signed-off-by line."
exit 1
fi
done
25 changes: 25 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,31 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<encoding>UTF-8</encoding>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
<violationSeverity>warning</violationSeverity>
<failOnViolation>true</failOnViolation>
<linkXRef>false</linkXRef>
<sourceDirectories>${project.build.sourceDirectory}</sourceDirectories>
<configLocation>${project.basedir}/.checkstyle/checkstyle.xml</configLocation>
<propertyExpansion>checkstyle.config.path=${project.basedir}</propertyExpansion>
</configuration>
<executions>
<execution>
<id>validate</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Loading

0 comments on commit 0ef5745

Please sign in to comment.