Skip to content

Commit

Permalink
chore(lint): Update Checkstyle rules (#57)
Browse files Browse the repository at this point in the history
  • Loading branch information
JoseLion committed Feb 5, 2024
1 parent 29412e2 commit 656b974
Show file tree
Hide file tree
Showing 10 changed files with 248 additions and 109 deletions.
155 changes: 142 additions & 13 deletions config/checkstyle/checkstyle.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,23 @@
<module name="NewlineAtEndOfFile" />

<!-- Regexp -->
<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 name="RegexpMultiline">
<property name="fileExtensions" value="java" />
<property name="format" value="^([^\n ]+ )*(class|record|interface) [^{]*\{\n[^\n}]" />
<property name="message" value="Leave empty line after class/record/interface definition." />
</module>
<module name="RegexpMultiline">
<property name="fileExtensions" value="java" />
<property name="format" value="^([^\n ]+ )*(enum) [^{]*\{\n[\n}]" />
<property name="message" value="Do not leave empty line after enum definition." />
</module>
<module name="RegexpMultiline">
<property name="fileExtensions" value="java" />
<property name="format" value="[^{]\n\n\}\n$" />
<property name="message" value="Do not leave empty line before end of class/record/interface/enum" />
</module>

<!-- Size Violations -->
<module name="FileLength">
<property name="max" value="2000" />
</module>
<module name="LineLength">
<property name="max" value="120" />
<property name="ignorePattern" value="^package.*|^import.*" />
Expand All @@ -38,32 +44,82 @@
<module name="TreeWalker">
<property name="tabWidth" value="2" />

<!-- Annotations -->
<module name="AnnotationUseStyle" />
<module name="MissingDeprecated" />
<module name="MissingOverride" />

<!-- Block Checks -->
<module name="AvoidNestedBlocks" />
<module name="EmptyBlock" />
<module name="EmptyCatchBlock" />
<module name="LeftCurly" />
<module name="NeedBraces" />
<module name="RightCurly" />

<!-- Class Design -->
<module name="FinalClass" />
<module name="HideUtilityClassConstructor" />
<module name="InnerTypeLast" />
<module name="InterfaceIsType" />
<module name="MutableException" />
<module name="OneTopLevelClass" />
<module name="ThrowsCount" />
<module name="VisibilityModifier" />

<!-- Coding -->
<module name="AvoidDoubleBraceInitialization" />
<module name="AvoidNoArgumentSuperConstructorCall" />
<module name="CovariantEquals" />
<module name="DeclarationOrder" />
<module name="DefaultComesLast" />
<module name="EmptyStatement" />
<module name="EqualsHashCode" />
<module name="FallThrough" />
<module name="FinalLocalVariable" />
<module name="HiddenField">
<property
name="tokens"
value="VARIABLE_DEF, PATTERN_VARIABLE_DEF, LAMBDA, RECORD_COMPONENT_DEF"
/>
</module>
<module name="IllegalCatch" />
<module name="IllegalThrows" />
<module name="IllegalToken" />
<module name="IllegalType" />
<module name="InnerAssignment" />
<module name="MissingSwitchDefault" />
<module name="ModifiedControlVariable" />
<module name="MultipleVariableDeclarations" />
<module name="NoArrayTrailingComma" />
<module name="NoClone" />
<module name="NoEnumTrailingComma" />
<module name="NoFinalizer" />
<module name="OneStatementPerLine" />
<module name="OverloadMethodsDeclarationOrder" />
<module name="PackageDeclaration" />
<module name="ParameterAssignment" />
<module name="RequireThis">
<property name="validateOnlyOverlapping" value="false" />
</module>
<module name="SimplifyBooleanExpression" />
<module name="SimplifyBooleanReturn" />
<module name="StringLiteralEquality" />
<module name="UnnecessaryParentheses" />
<module name="UnnecessarySemicolonAfterOuterTypeDeclaration" />
<module name="UnnecessarySemicolonAfterTypeMemberDeclaration" />
<module name="UnnecessarySemicolonInEnumeration" />
<module name="UnnecessarySemicolonInTryWithResources" />
<module name="UnusedLocalVariable" />

<!-- Javadoc Comments -->
<module name="InvalidJavadocPosition" />
<!-- Filters -->
<module name="SuppressWithNearbyCommentFilter">
<property name="commentFormat" value="NOSONAR|NOCHECKSTYLE" />
</module>

<!-- Imports -->
<module name="AvoidStarImport" />
<module name="IllegalImport" />
<module name="ImportOrder">
<property name="groups" value="/^java\./,javax,org,com" />
<property name="ordered" value="true" />
Expand All @@ -74,16 +130,51 @@
<module name="RedundantImport" />
<module name="UnusedImports" />

<!-- Javadoc Comments -->
<module name="InvalidJavadocPosition" />
<module name="JavadocBlockTagLocation" />
<module name="JavadocContentLocation" />
<module name="JavadocMethod" />
<module name="JavadocMissingLeadingAsterisk" />
<module name="JavadocMissingWhitespaceAfterAsterisk" />
<module name="JavadocParagraph" />
<module name="JavadocStyle">
<property name="endOfSentenceFormat" value="([.:?!][ \t\n\r\f&lt;])|([.:?!]$)" />
</module>
<module name="JavadocTagContinuationIndentation">
<property name="offset" value="2" />
</module>
<module name="JavadocType">
<property name="scope" value="public" />
</module>
<module name="MissingJavadocMethod" />
<module name="MissingJavadocPackage" />
<module name="MissingJavadocType" />
<module name="NonEmptyAtclauseDescription" />
<module name="RequireEmptyLineBeforeBlockTagGroup" />
<module name="SingleLineJavadoc" />

<!-- Miscellaneous -->
<module name="ArrayTypeStyle" />
<module name="AvoidEscapedUnicodeCharacters">
<property name="allowEscapesForControlCharacters" value="true" />
</module>
<module name="CommentsIndentation" />
<module name="FinalParameters" />
<module name="NoCodeInFile" />
<module name="OuterTypeFilename" />
<module name="TodoComment" />
<module name="TrailingComment">
<property name="legalComment" value="^\sNOSONAR$" />
</module>
<module name="UpperEll" />

<!-- Modifiers -->
<module name="ModifierOrder" />
<module name="RedundantModifier" />

<!-- Naming Conventions -->
<module name="AbstractClassName" />
<module name="ClassTypeParameterName" />
<module name="ConstantName" />
<module name="IllegalIdentifierName" />
Expand All @@ -93,7 +184,9 @@
<module name="LocalVariableName" />
<module name="MemberName" />
<module name="MethodName" />
<module name="MethodTypeParameterName" />
<module name="MethodTypeParameterName">
<property name="format" value="^[A-Z][0-9]?$" />
</module>
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />
</module>
Expand All @@ -104,17 +197,53 @@
<module name="StaticVariableName" />
<module name="TypeName" />

<!-- Regexp -->
<module name="RegexpSinglelineJava">
<property name="format" value="(?!\*)[^$]\s+$" />
<property name="minimum" value="0" />
<property name="maximum" value="0" />
<property name="message" value="Line has trailing spaces." />
</module>

<!-- Size Violations -->
<module name="AnonInnerLength" />
<module name="OuterTypeNumber" />

<!-- Whitespace -->
<module name="EmptyForInitializerPad" />
<module name="EmptyForIteratorPad" />
<module name="EmptyLineSeparator">
<property name="allowMultipleEmptyLines" value="false" />
<property name="allowMultipleEmptyLinesInsideClassMembers" value="false" />
</module>
<module name="GenericWhitespace" />
<module name="MethodParamPad" />
<module name="NoLineWrap" />
<module name="NoWhitespaceAfter" />
<module name="NoWhitespaceBefore" />
<module name="NoWhitespaceAfter">
<property name="allowLineBreaks" value="true" />
<property
name="tokens"
value="ARRAY_INIT, AT, INC, DEC, UNARY_MINUS, UNARY_PLUS, BNOT, LNOT, DOT, ARRAY_DECLARATOR, INDEX_OP, METHOD_REF"
/>
</module>
<module name="NoWhitespaceBefore">
<property name="allowLineBreaks" value="true" />
<property
name="tokens"
value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, LABELED_STAT, METHOD_REF"
/>
</module>
<module name="NoWhitespaceBeforeCaseDefaultColon" />
<module name="OperatorWrap" />
<module name="ParenPad" />
<module name="SeparatorWrap">
<property name="option" value="eol" />
<property name="tokens" value="COMMA" />
</module>
<module name="SeparatorWrap">
<property name="option" value="nl" />
<property name="tokens" value="DOT" />
</module>
<module name="SingleSpaceSeparator" />
<module name="TypecastParenPad" />
<module name="WhitespaceAfter" />
Expand Down
16 changes: 12 additions & 4 deletions config/checkstyle/suppressions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,16 @@

<suppressions>
<!-- Tests -->
<suppress
checks="InnerTypeLast|MethodName|TypeName"
files=".*[\\/]src[\\/]test[\\/]"
/>
<suppress files=".*[\\/]?src[\\/]test[\\/].+Test\.java$" checks="FinalClass" />
<suppress files=".*[\\/]?src[\\/]test[\\/].+Test\.java$" checks="HideUtilityClassConstructor" />
<suppress files=".*[\\/]?src[\\/]test[\\/].+Test\.java$" checks="IllegalThrows" />
<suppress files=".*[\\/]?src[\\/]test[\\/].+Test\.java$" checks="InnerTypeLast" />
<suppress files=".*[\\/]?src[\\/]test[\\/].+Test\.java$" checks="MethodName" />
<suppress files=".*[\\/]?src[\\/]test[\\/].+Test\.java$" checks="ThrowsCount" />
<suppress files=".*[\\/]?src[\\/]test[\\/].+Test\.java$" checks="TypeName" />
<suppress files=".*[\\/]?src[\\/]test[\\/].+Test\.java$" checks="RequireThis" />

<!-- Test Helpers -->
<suppress files=".*[\\/]?src[\\/]test[\\/].+\.java$" checks="MissingJavadocPackage" />
<suppress files=".*[\\/]?src[\\/]test[\\/].+\.java$" checks="MissingJavadocType" />
</suppressions>
4 changes: 2 additions & 2 deletions gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ com.google.guava:failureaccess:1.0.2=checkstyle
com.google.guava:guava:33.0.0-jre=checkstyle
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=checkstyle
com.h2database:h2:2.2.224=testCompileClasspath,testRuntimeClasspath
com.puppycrawl.tools:checkstyle:10.12.7=checkstyle
com.puppycrawl.tools:checkstyle:10.13.0=checkstyle
commons-beanutils:commons-beanutils:1.9.4=checkstyle
commons-codec:commons-codec:1.15=checkstyle
commons-collections:commons-collections:3.2.2=checkstyle
Expand Down Expand Up @@ -58,7 +58,7 @@ org.codehaus.plexus:plexus-container-default:2.1.0=checkstyle
org.codehaus.plexus:plexus-utils:3.3.0=checkstyle
org.codehaus.woodstox:stax2-api:4.2.1=sonarlintCoreClasspath
org.eclipse.jdt:org.eclipse.jdt.annotation:2.2.700=compileClasspath,testCompileClasspath
org.flywaydb:flyway-core:10.6.0=compileClasspath,testCompileClasspath,testRuntimeClasspath
org.flywaydb:flyway-core:10.7.1=compileClasspath,testCompileClasspath,testRuntimeClasspath
org.glassfish:jakarta.el:4.0.2=sonarlintCoreClasspath
org.javassist:javassist:3.28.0-GA=checkstyle
org.junit.jupiter:junit-jupiter-api:5.10.1=testCompileClasspath,testRuntimeClasspath
Expand Down
7 changes: 7 additions & 0 deletions lombok.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
config.stopBubbling = true

lombok.accessors.fluent = true
lombok.addNullAnnotations = eclipse
lombok.copyableAnnotations += org.eclipse.jdt.annotation.Nullable
lombok.equalsAndHashCode.callSuper = call
lombok.utilityClass.flagUsage = error
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ rootProject.name = 'atomic-flyway'
dependencyResolutionManagement {
versionCatalogs {
libs {
version('checkstyle', '10.12.7')
version('checkstyle', '10.13.0')
version('junit', '5.10.1')
version('reactor', '3.6.2')
version('sonarlint-core', '9.6.1.76766')
Expand Down
47 changes: 24 additions & 23 deletions src/main/java/io/github/joselion/atomicflyway/AtomicFlyway.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
* configuration programmatically. The attachment is expoected in the main
* method so the execution arguments can be handled.
*
* <pre>
* <pre>{@code
* public class MyAwesomeApp {
*
* public static void main(String[] args) {
Expand All @@ -33,46 +33,46 @@
* // start your app here!
* }
* }
* </pre>
*
* }</pre>
*
* @author Jose Luis Leon
* @since v1.0.0
*/
@Slf4j
public final class AtomicFlyway {

@Option(
names = {"--migrate"},
names = "--migrate",
description = "Run migrations"
)
private boolean migrate;

@Option(
names = {"--undo-migration", "--undo"},
description =
"Reverts the last N applied migration(s) using their down script. Use an " +
"integer parameter to specify the number of migrations to undo. Defaults " +
"to 1 if the parameter is ommited.",
"Reverts the last N applied migration(s) using their down script. Use an "
+ "integer parameter to specify the number of migrations to undo. Defaults "
+ "to 1 if the parameter is ommited.",
arity = "0..1",
fallbackValue = "1"
)
private Optional<Integer> undoMigration;

@Option(
names = {"-url"},
names = "-url",
description = "The URL for the database connection"
)
private Optional<String> url;

@Option(
names = {"-user"},
names = "-user",
description = "The user of the database connection",
defaultValue = "${user:-}"
)
private String user;

@Option(
names = {"-password"},
names = "-password",
description = "The password of the database connection",
defaultValue = ""
)
Expand Down Expand Up @@ -142,27 +142,28 @@ public void attach(final String... args) {
Maybe
.from(() ->
this.url
.map(dbUrl -> flywayConfig.dataSource(dbUrl, this.user, this.password))
.orElse(flywayConfig)
.map(dbUrl -> this.flywayConfig.dataSource(dbUrl, this.user, this.password))
.orElse(this.flywayConfig)
.load()
)
.doOnSuccess(sink::success)
.doOnError(sink::error)
);

if (this.migrate) {
flywayMono.flatMap(flyway ->
Mono.<Integer>create(sink ->
Maybe
.from(flyway::migrate)
.doOnSuccess(result -> sink.success(CommandLine.ExitCode.OK))
.doOnError(sink::error)
flywayMono
.flatMap(flyway ->
Mono.<Integer>create(sink ->
Maybe
.from(flyway::migrate)
.doOnSuccess(result -> sink.success(CommandLine.ExitCode.OK))
.doOnError(sink::error)
)
)
)
.subscribe(
System::exit,
this::handleError
);
.subscribe(
System::exit,
this::handleError
);

return;
}
Expand Down
Loading

0 comments on commit 656b974

Please sign in to comment.