Skip to content

Commit

Permalink
Implementing Checkstyle (#208)
Browse files Browse the repository at this point in the history
Motivation:
To ensure code consistency and quality through the adoption of
Checkstyle

Modification:
Added Checkstyle plugin and configuration, updated code to comply with
new coding standards.
Set version as INTERNAL on internal modules

Result:
Enhanced code quality and consistency across the project, facilitating
easier contributions and maintenance.
  • Loading branch information
jchrys authored Feb 28, 2024
1 parent 2192c24 commit 140c634
Show file tree
Hide file tree
Showing 37 changed files with 382 additions and 38 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/ci-integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ jobs:
run: docker-compose -f ${{ github.workspace }}/containers/mysql-compose.yml up -d
- name: Integration test with MySQL ${{ matrix.mysql-version }}
run: |
set -o pipefail
./mvnw -B verify -Dmaven.javadoc.skip=true \
-Dmaven.surefire.skip=true \
-Dtest.mysql.password=r2dbc-password!@ \
Expand All @@ -37,5 +38,6 @@ jobs:
-Dio.netty.leakDetectionLevel=paranoid \
-Dio.netty.leakDetection.targetRecords=32 \
| tee test.log
set +o pipefail
- name: ensure no leaks
run: ./.github/scripts/ensure_no_leak.sh test.log
2 changes: 2 additions & 0 deletions .github/workflows/ci-mariadb-intergration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ jobs:
run: docker-compose -f ${{ github.workspace }}/containers/mariadb-compose.yml up -d
- name: Integration test with MySQL ${{ matrix.mysql-version }}
run: |
set -o pipefail
./mvnw -B verify -Dmaven.javadoc.skip=true \
-Dmaven.surefire.skip=true \
-Dtest.mysql.password=r2dbc-password!@ \
Expand All @@ -39,5 +40,6 @@ jobs:
-Dio.netty.leakDetectionLevel=paranoid \
-Dio.netty.leakDetection.targetRecords=32 \
| tee test.log
set +o pipefail
- name: ensure no leaks
run: ./.github/scripts/ensure_no_leak.sh test.log
2 changes: 2 additions & 0 deletions .github/workflows/ci-unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@ jobs:
cache: maven
- name: Unit test with Maven
run: |
set -o pipefail
./mvnw -B test -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN \
-Dio.netty.leakDetectionLevel=paranoid \
-Dio.netty.leakDetection.targetRecords=32 \
| tee test.log
set +o pipefail
- name: ensure no leaks
run: ./.github/scripts/ensure_no_leak.sh test.log
25 changes: 25 additions & 0 deletions build-tools/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2024 asyncer.io projects
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ https://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.asyncer</groupId>
<artifactId>build-tools</artifactId>
<version>INTERNAL</version>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
<suppress files="[/\\]target[/\\]" checks=".*"/>
<suppress files="[/\\].mvn[/\\]" checks=".*"/>
<suppress files="[/\\].idea[/\\]" checks=".*"/>
<suppress files="[/\\].git[/\\]" checks=".*"/>
</suppressions>
203 changes: 203 additions & 0 deletions build-tools/src/main/resources/io/asyncer/checkstyle.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">

<!--
Checkstyle configuration that checks the sun coding conventions from:
- the Java Language Specification at
https://docs.oracle.com/javase/specs/jls/se11/html/index.html
- the Sun Code Conventions at https://www.oracle.com/java/technologies/javase/codeconventions-contents.html
- the Javadoc guidelines at
https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html
- the JDK Api documentation https://docs.oracle.com/en/java/javase/11/
- some best practices
Checkstyle is very configurable. Be sure to read the documentation at
https://checkstyle.org (or in your downloaded distribution).
Most Checks are configurable, be sure to consult the documentation.
To completely disable a check, just comment it out or delete it from the file.
To suppress certain violations please review suppression filters.
Finally, it is worth reading the documentation.
-->

<module name="Checker">
<!--
If you set the basedir property below, then all reported file
names will be relative to the specified directory. See
https://checkstyle.org/config.html#Checker
<property name="basedir" value="${basedir}"/>
-->
<property name="severity" value="error"/>

<property name="fileExtensions" value="java, properties, xml"/>

<!-- Excludes all 'module-info.java' files -->
<!-- See https://checkstyle.org/filefilters/index.html -->
<module name="BeforeExecutionExclusionFileFilter">
<property name="fileNamePattern" value="module\-info\.java$"/>
</module>

<!-- https://checkstyle.org/filters/suppressionfilter.html -->
<module name="SuppressionFilter">
<property name="file" value="${org.checkstyle.sun.suppressionfilter.config}"
default="checkstyle-suppressions.xml"/>
<property name="optional" value="true"/>
</module>

<!-- Checks that a package-info.java file exists for each package. -->
<!-- See https://checkstyle.org/checks/javadoc/javadocpackage.html#JavadocPackage -->
<module name="JavadocPackage"/>

<!-- enables @SuppressWarning("checkstyle:xxxx") -->
<module name="SuppressWarningsFilter" />

<!-- Checks whether files end with a new line. -->
<!-- See https://checkstyle.org/checks/misc/newlineatendoffile.html -->
<module name="NewlineAtEndOfFile"/>

<!-- Checks that property files contain the same keys. -->
<!-- See https://checkstyle.org/checks/misc/translation.html -->
<module name="Translation"/>

<!-- Checks for Size Violations. -->
<!-- See https://checkstyle.org/checks/sizes/index.html -->
<module name="FileLength"/>
<module name="LineLength">
<property name="max" value="120"/>
<property name="fileExtensions" value="java"/>
</module>

<!-- Checks for whitespace -->
<!-- See https://checkstyle.org/checks/whitespace/index.html -->
<module name="FileTabCharacter"/>

<!-- Miscellaneous other checks. -->
<!-- See https://checkstyle.org/checks/misc/index.html -->
<module name="RegexpSingleline">
<property name="format" value="\s+$"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="message" value="Line has trailing spaces."/>
</module>

<!-- Checks for Headers -->
<!-- See https://checkstyle.org/checks/header/index.html -->
<!-- <module name="Header"> -->
<!-- <property name="headerFile" value="${checkstyle.header.file}"/> -->
<!-- <property name="fileExtensions" value="java"/> -->
<!-- </module> -->

<module name="RegexpSingleline">
<property name="format" value="^(\s|\*|#)*Copyright\s+[0-9]+\s+asyncer.io projects\s*$"/>
<property name="message" value="license header missing"/>
<property name="minimum" value="1"/>
<property name="maximum" value="1"/>
</module>


<module name="TreeWalker">

<!-- Checks for Javadoc comments. -->
<!-- See https://checkstyle.org/checks/javadoc/index.html -->
<module name="InvalidJavadocPosition"/>
<module name="JavadocStyle">
<property name="checkFirstSentence" value="false"/>
</module>

<!-- enables @SuppressWarning("checkstyle:xxxx") -->
<module name="SuppressWarningsHolder" />
<!-- <module name="MissingJavadocMethod"/>-->

<!-- Checks for Naming Conventions. -->
<!-- See https://checkstyle.org/checks/naming/index.html -->
<!-- <module name="ConstantName"/>-->
<module name="LocalFinalVariableName"/>
<module name="LocalVariableName"/>
<module name="MemberName"/>
<module name="MethodName"/>
<module name="PackageName"/>
<module name="ParameterName"/>
<module name="StaticVariableName"/>
<module name="TypeName"/>

<!-- Checks for imports -->
<!-- See https://checkstyle.org/checks/imports/index.html -->
<module name="AvoidStarImport"/>
<module name="IllegalImport"/> <!-- defaults to sun.* packages -->
<module name="RedundantImport"/>
<module name="UnusedImports">
<property name="processJavadoc" value="true"/>
</module>

<!-- Checks for Size Violations. -->
<!-- See https://checkstyle.org/checks/sizes/index.html -->
<!-- <module name="MethodLength"/>-->
<!-- <module name="ParameterNumber"/>-->

<!-- Checks for whitespace -->
<!-- See https://checkstyle.org/checks/whitespace/index.html -->
<module name="EmptyForIteratorPad"/>
<module name="GenericWhitespace"/>
<module name="MethodParamPad"/>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround"/>

<!-- Modifier Checks -->
<!-- See https://checkstyle.org/checks/modifier/index.html -->
<module name="ModifierOrder"/>
<module name="RedundantModifier"/>

<!-- Checks for blocks. You know, those {}'s -->
<!-- See https://checkstyle.org/checks/blocks/index.html -->
<module name="AvoidNestedBlocks">
<property name="allowInSwitchCase" value="true"/>
</module>
<module name="EmptyBlock"/>
<module name="LeftCurly"/>
<module name="NeedBraces"/>
<module name="RightCurly"/>

<!-- Checks for common coding problems -->
<!-- See https://checkstyle.org/checks/coding/index.html -->
<module name="EmptyStatement"/>
<module name="EqualsHashCode"/>
<module name="IllegalInstantiation"/>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>

<!-- Checks for class design -->
<!-- See https://checkstyle.org/checks/design/index.html -->
<module name="DesignForExtension"/>
<module name="FinalClass"/>
<module name="HideUtilityClassConstructor"/>
<module name="InterfaceIsType"/>

<!-- Miscellaneous other checks. -->
<!-- See https://checkstyle.org/checks/misc/index.html -->
<module name="ArrayTypeStyle"/>
<!-- <module name="FinalParameters"/>-->
<!-- <module name="TodoComment"/>-->
<module name="UpperEll"/>

<!-- https://checkstyle.org/filters/suppressionxpathfilter.html -->
<module name="SuppressionXpathFilter">
<property name="file" value="${org.checkstyle.sun.suppressionxpathfilter.config}"
default="checkstyle-xpath-suppressions.xml"/>
<property name="optional" value="true"/>
</module>
</module>
</module>
3 changes: 2 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.asyncer</groupId>
<artifactId>r2dbc-mysql-parent</artifactId>
<version>1.1.2-SNAPSHOT</version>
<version>INTERNAL</version>
<packaging>pom</packaging>

<modules>
<module>r2dbc-mysql</module>
<module>test-native-image</module>
<module>build-tools</module>
</modules>
</project>
47 changes: 46 additions & 1 deletion r2dbc-mysql/pom.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--
~ Copyright 2024 asyncer.io projects
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ https://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>io.asyncer</groupId>
Expand Down Expand Up @@ -257,6 +274,34 @@

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>validate</id>
<phase>validate</phase>
<configuration>
<configLocation>io/asyncer/checkstyle.xml</configLocation>
<suppressionsLocation>io/asyncer/checkstyle-suppressions.xml</suppressionsLocation>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
<failOnViolation>true</failOnViolation>
</configuration>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>io.asyncer</groupId>
<artifactId>build-tools</artifactId>
<version>INTERNAL</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ public int hashCode() {

@Override
public String toString() {
return "ColumnDefinition<0x" + Integer.toHexString(bitmap) + ", 0x" + Integer.toHexString(collationId)+ '>';
return "ColumnDefinition<0x" + Integer.toHexString(bitmap) + ", 0x" + Integer.toHexString(collationId) + '>';
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
public abstract class MySqlBatch implements Batch {

@Override
abstract public MySqlBatch add(String sql);
public abstract MySqlBatch add(String sql);

@Override
abstract public Flux<MySqlResult> execute();
public abstract Flux<MySqlResult> execute();
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@
import java.time.DateTimeException;
import java.time.Duration;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Function;
Expand Down Expand Up @@ -656,7 +655,7 @@ private static String transactionIsolationColumn(ConnectionContext context) {
"@@transaction_isolation AS i" : "@@tx_isolation AS i";
}

private static class SessionData {
private static final class SessionData {

private final IsolationLevel level;

Expand Down
Loading

0 comments on commit 140c634

Please sign in to comment.