From ff6701e8177b6eced8508332d423b6048c52c466 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Thu, 25 Mar 2021 22:57:28 +0000 Subject: [PATCH] Add basic groovy code style validation. IDK how well this would work on a gradle script but might be interesting to try on yarn or something. --- .gitignore | 3 +- build.gradle | 6 ++ codenarc.groovy | 66 +++++++++++++++++++ .../fabricmc/loom/AccessWidenerTest.groovy | 2 +- .../loom/util/ProjectTestTrait.groovy | 2 +- 5 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 codenarc.groovy diff --git a/.gitignore b/.gitignore index af5b65f..c316a77 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,5 @@ !/README.md !/settings.gradle !/Jenkinsfile -!/checkstyle.xml \ No newline at end of file +!/checkstyle.xml +!/codenarc.groovy \ No newline at end of file diff --git a/build.gradle b/build.gradle index f1d8e6b..1458eac 100644 --- a/build.gradle +++ b/build.gradle @@ -7,6 +7,7 @@ plugins { id 'groovy' id 'checkstyle' id 'jacoco' + id 'codenarc' id "org.cadixdev.licenser" version "0.5.0" } @@ -110,6 +111,11 @@ checkstyle { toolVersion = '8.39' } +codenarc { + toolVersion = "2.0.0" + configFile = file("codenarc.groovy") +} + gradlePlugin { plugins { fabricLoom { diff --git a/codenarc.groovy b/codenarc.groovy new file mode 100644 index 0000000..9f15eb6 --- /dev/null +++ b/codenarc.groovy @@ -0,0 +1,66 @@ +ruleset { + UnnecessarySemicolon + BlockEndsWithBlankLine + BlockStartsWithBlankLine + ConsecutiveBlankLines + MissingBlankLineAfterImports + MissingBlankLineAfterPackage + + // Braces + BracesForClass + BracesForForLoop + BracesForIfElse + BracesForMethod + BracesForTryCatchFinally + + // Spaces + SpaceAfterCatch + SpaceAfterComma + SpaceAfterClosingBrace + SpaceAfterFor + SpaceAfterIf + SpaceAfterOpeningBrace + SpaceAfterSemicolon + SpaceAfterSwitch + SpaceAfterWhile + SpaceAroundClosureArrow + SpaceAroundMapEntryColon + SpaceAroundOperator + SpaceBeforeClosingBrace + SpaceBeforeOpeningBrace + TrailingWhitespace + + // Groovyism - See: https://codenarc.org/codenarc-rules-groovyism.html + ClosureAsLastMethodParameter + ExplicitArrayListInstantiation + ExplicitCallToAndMethod + ExplicitCallToCompareToMethod + ExplicitCallToDivMethod + ExplicitCallToEqualsMethod + ExplicitCallToGetAtMethod + ExplicitCallToLeftShiftMethod + ExplicitCallToMinusMethod + ExplicitCallToMultiplyMethod + ExplicitCallToModMethod + ExplicitCallToOrMethod + ExplicitCallToPlusMethod + ExplicitCallToPowerMethod + ExplicitCallToRightShiftMethod + ExplicitCallToXorMethod + ExplicitHashMapInstantiation + ExplicitLinkedHashMapInstantiation + ExplicitHashSetInstantiation + ExplicitLinkedListInstantiation + ExplicitStackInstantiation + ExplicitTreeSetInstantiation + GetterMethodCouldBeProperty + GStringAsMapKey + GStringExpressionWithinString + CouldBeElvis + TernaryCouldBeElvis + FieldTypeRequired + MethodParameterTypeRequired + + //Misc + LongLiteralWithLowerCaseL +} diff --git a/src/test/groovy/net/fabricmc/loom/AccessWidenerTest.groovy b/src/test/groovy/net/fabricmc/loom/AccessWidenerTest.groovy index de18a6f..bb67a20 100644 --- a/src/test/groovy/net/fabricmc/loom/AccessWidenerTest.groovy +++ b/src/test/groovy/net/fabricmc/loom/AccessWidenerTest.groovy @@ -43,7 +43,7 @@ class AccessWidenerTest extends Specification implements ProjectTestTrait, Archi def result = create("build", gradle) then: result.task(":build").outcome == SUCCESS - getArchiveEntry("fabric-example-mod-1.0.0.jar", "modid.accesswidener") == expected().replaceAll('\r','') + getArchiveEntry("fabric-example-mod-1.0.0.jar", "modid.accesswidener") == expected().replaceAll('\r', '') where: gradle | _ '6.8.3' | _ diff --git a/src/test/groovy/net/fabricmc/loom/util/ProjectTestTrait.groovy b/src/test/groovy/net/fabricmc/loom/util/ProjectTestTrait.groovy index e5cfa9a..fb323b6 100644 --- a/src/test/groovy/net/fabricmc/loom/util/ProjectTestTrait.groovy +++ b/src/test/groovy/net/fabricmc/loom/util/ProjectTestTrait.groovy @@ -43,7 +43,7 @@ trait ProjectTestTrait { throw new FileNotFoundException("Failed to find project directory at:" + baseProjectDir.absolutePath) } - baseProjectDir.eachFileRecurse {file -> + baseProjectDir.eachFileRecurse { file -> if (file.isDirectory()) { return }