FINERACT-1072: Implementing Spotless for Gradle files

This commit is contained in:
Petri Tuomola
2020-07-04 11:25:23 +01:00
committed by Awasum Yannick
parent 1102d5b58a
commit 3f444e2710
2 changed files with 144 additions and 103 deletions
+135 -94
View File
@@ -37,9 +37,9 @@ buildscript {
dependencies {
classpath 'io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE'
classpath 'com.bmuschko:gradle-cargo-plugin:2.7.1',
'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0',
'org.zeroturnaround:gradle-jrebel-plugin:1.1.10',
'org.springframework.boot:spring-boot-gradle-plugin:2.2.7.RELEASE'
'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0',
'org.zeroturnaround:gradle-jrebel-plugin:1.1.10',
'org.springframework.boot:spring-boot-gradle-plugin:2.2.7.RELEASE'
// below
classpath 'org.apache.openjpa:openjpa:3.1.1' // when upgrading, also change OpenJPA version repeated below in dependencyManagement!
classpath 'com.radcortez.gradle:openjpa-gradle-plugin:3.1.0'
@@ -184,7 +184,10 @@ eclipse
System.setProperty("openjpa.Log", "commons")
openjpa {
includes = ['**/AbstractPersistableCustom.class', '**/domain/*.class']
includes = [
'**/AbstractPersistableCustom.class',
'**/domain/*.class'
]
enhance {
enforcePropertyRestrictions true
}
@@ -218,24 +221,32 @@ jacocoTestReport{
}
spotless {
format 'misc', {
target '**/*.md', '**/*.properties', '**/*.gradle', '**/.gitignore', '**/*.yml', '**/*.xml', '**/**.json', '**/*.sql'
targetExclude '**/build/**', '**/bin/**', '**/.settings/**','**/.idea/**'
indentWithSpaces(4)
endWithNewline()
trimTrailingWhitespace()
}
format 'misc', {
target '**/*.md', '**/*.properties', '**/.gitignore', '**/*.yml', '**/*.xml', '**/**.json', '**/*.sql'
targetExclude '**/build/**', '**/bin/**', '**/.settings/**','**/.idea/**'
indentWithSpaces(4)
endWithNewline()
trimTrailingWhitespace()
}
java {
importOrder() //sort imports alphabetically
removeUnusedImports()
eclipse().configFile '../config/fineractdev-formatter.xml'
endWithNewline()
trimTrailingWhitespace()
groovyGradle {
target '*.gradle', '**/*.gradle'
greclipse()
indentWithSpaces(4)
endWithNewline()
trimTrailingWhitespace()
}
// Enforce style modifier order
custom 'Modifier ordering', {
def modifierRanking = [
java {
importOrder() //sort imports alphabetically
removeUnusedImports()
eclipse().configFile '../config/fineractdev-formatter.xml'
endWithNewline()
trimTrailingWhitespace()
// Enforce style modifier order
custom 'Modifier ordering', {
def modifierRanking = [
public : 1,
protected : 2,
private : 3,
@@ -248,20 +259,20 @@ spotless {
synchronized: 10,
native : 11,
strictfp : 12]
// Find any instance of multiple modifiers. Lead with a non-word character to avoid
// accidental matching against for instance, "an alternative default value"
it.replaceAll(/\W(?:public |protected |private |abstract |default |static |final |transient |volatile |synchronized |native |strictfp ){2,}/, {
// Do not replace the leading non-word character. Identify the modifiers
it.replaceAll(/(?:public |protected |private |abstract |default |static |final |transient |volatile |synchronized |native |strictfp ){2,}/, {
// Sort the modifiers according to the ranking above
it.split().sort({ modifierRanking[it] }).join(' ') + ' '
}
)
// Find any instance of multiple modifiers. Lead with a non-word character to avoid
// accidental matching against for instance, "an alternative default value"
it.replaceAll(/\W(?:public |protected |private |abstract |default |static |final |transient |volatile |synchronized |native |strictfp ){2,}/, {
// Do not replace the leading non-word character. Identify the modifiers
it.replaceAll(/(?:public |protected |private |abstract |default |static |final |transient |volatile |synchronized |native |strictfp ){2,}/, {
// Sort the modifiers according to the ranking above
it.split().sort({ modifierRanking[it] }).join(' ') + ' '
}
)
}
)
}
)
}
}
}
lineEndings 'UNIX'
}
@@ -309,7 +320,6 @@ rat {
'**/native/**',
'**/wrapper/**',
'**/build/**',
//Api Docs
'**/api-docs/*.*',
'**/docs/system-architecture/.htaccess',
@@ -318,14 +328,11 @@ rat {
'**/docs/system-architecture/**/*.xml',
'**/bootstrap-3.0.0/assets/application.js',
'**/system-architecture/js/plugins.js',
//Apache License
'**/bootstrap-3.0.0/assets/less.js',
'**/css/bootstrap-3.0.0/**/*.*',
//Public Domain See http://www.JSON.org/js.html
'**/bootstrap-3.0.0/assets/json2.js.htm',
// MIT License
'**/modernizr-2.6.2.min.js',
'**/css/normalize.css',
@@ -340,12 +347,10 @@ rat {
'**/system-architecture/js/vendor/toc-0.1.2/jquery.toc.min.js',
'**/assets/respond.min.js',
'**/assets/html5shiv.js',
//BSD License
'**/assets/uglify.js',
//Ignore out folder
'**/out/**',
// Git build info
"**/git.properties",
]
@@ -374,13 +379,34 @@ configurations {
}
tasks.withType(JavaCompile) {
options.compilerArgs += ["-Xlint:unchecked","-Xlint:cast","-Xlint:auxiliaryclass","-Xlint:deprecation",
"-Xlint:dep-ann","-Xlint:divzero","-Xlint:empty","-Xlint:exports","-Xlint:fallthrough",
"-Xlint:finally","-Xlint:module","-Xlint:opens","-Xlint:options","-Xlint:overloads",
"-Xlint:overrides","-Xlint:path","-Xlint:processing","-Xlint:removal",
"-Xlint:requires-automatic","-Xlint:requires-transitive-automatic","-Xlint:try",
"-Xlint:varargs","-Xlint:preview","-Xlint:static","-Werror"]
// TODO FINERACT-959 (gradually) enable -Xlint:all (see "javac -help -X")
options.compilerArgs += [
"-Xlint:unchecked",
"-Xlint:cast",
"-Xlint:auxiliaryclass",
"-Xlint:deprecation",
"-Xlint:dep-ann",
"-Xlint:divzero",
"-Xlint:empty",
"-Xlint:exports",
"-Xlint:fallthrough",
"-Xlint:finally",
"-Xlint:module",
"-Xlint:opens",
"-Xlint:options",
"-Xlint:overloads",
"-Xlint:overrides",
"-Xlint:path",
"-Xlint:processing",
"-Xlint:removal",
"-Xlint:requires-automatic",
"-Xlint:requires-transitive-automatic",
"-Xlint:try",
"-Xlint:varargs",
"-Xlint:preview",
"-Xlint:static",
"-Werror"
]
// TODO FINERACT-959 (gradually) enable -Xlint:all (see "javac -help -X")
options.deprecation = true
options.errorprone {
@@ -396,7 +422,7 @@ tasks.withType(JavaCompile) {
"ReturnFromVoid",
"AlmostJavadoc",
"InvalidBlockTag",
)
)
//TODO gradually enable these checks
error(
"DefaultCharset",
@@ -468,28 +494,33 @@ tasks.withType(JavaCompile) {
"ModifiedButNotUsed",
"InconsistentCapitalization",
"MissingOverride",
// "InvalidBlockTag",
// "InconsistentOverloads",
// "MethodCanBeStatic",
// "Var",
// "ConstantField",
// "UnnecessaryDefaultInEnumSwitch",
// "FieldCanBeFinal"
)
// "InvalidBlockTag",
// "InconsistentOverloads",
// "MethodCanBeStatic",
// "Var",
// "ConstantField",
// "UnnecessaryDefaultInEnumSwitch",
// "FieldCanBeFinal"
)
}
options.compilerArgs +=["-Xmaxwarns",1500,"-Xmaxerrs",1500]
options.compilerArgs +=[
"-Xmaxwarns",
1500,
"-Xmaxerrs",
1500
]
}
apply from: 'dependencies.gradle'
/* TODO https://issues.apache.org/jira/browse/FINERACT-939 (dev-dependencies.gradle has been removed, as totally broken)
// Pick up dependencies based on the environment, defaults to production
if (project.hasProperty('env') && project.getProperty('env') == 'dev') {
apply from: 'dev-dependencies.gradle'
} else {
apply from: 'dependencies.gradle'
}
*/
// Pick up dependencies based on the environment, defaults to production
if (project.hasProperty('env') && project.getProperty('env') == 'dev') {
apply from: 'dev-dependencies.gradle'
} else {
apply from: 'dependencies.gradle'
}
*/
/* Enable Oauth2 authentication based on environment, default to HTTP basic auth */
if (project.hasProperty('security') && project.getProperty('security') == 'oauth') {
@@ -539,7 +570,7 @@ modernizer {
exclusions = []
exclusionPatterns = [
// To be removed when https://issues.apache.org/jira/browse/FINERACT-826 is fixed
// To be removed when https://issues.apache.org/jira/browse/FINERACT-826 is fixed
'org/joda/time/.*'
]
}
@@ -550,25 +581,29 @@ compileJava{
finalizedBy resolve
}
/*
pmd {
sourceSets = [sourceSets.main]
}
*/
pmd {
sourceSets = [sourceSets.main]
}
*/
war {
from('../licenses/binary/') { // notice the parens
from('../licenses/binary/') {
// notice the parens
into "WEB-INF/licenses/binary/" // no leading slash
}
from('../LICENSE_RELEASE') { // notice the parens
from('../LICENSE_RELEASE') {
// notice the parens
into "WEB-INF/" // no leading slash
}
from('../NOTICE_RELEASE') { // notice the parens
from('../NOTICE_RELEASE') {
// notice the parens
into "WEB-INF/" // no leading slash
}
rename ('LICENSE_RELEASE', 'LICENSE')
rename ('NOTICE_RELEASE', 'NOTICE')
from('../DISCLAIMER') { // notice the parens
from('../DISCLAIMER') {
// notice the parens
into "WEB-INF/" // no leading slash
}
war.finalizedBy(bootWar)
@@ -589,42 +624,46 @@ license {
}
task licenseFormatBuildScripts (type:nl.javadude.gradle.plugins.license.License) {
source = fileTree(dir: '../', includes: ['**/*.bat', '**/*.sh', '**/*.sql'])
source = fileTree(dir: '../', includes: [
'**/*.bat',
'**/*.sh',
'**/*.sql'
])
}
licenseFormat.dependsOn licenseFormatBuildScripts
configurations
{
tomcat
tomcat
}
dependencies {
tomcat "org.apache.tomcat:tomcat:9.0.36@zip"
tomcat "org.apache.tomcat:tomcat:9.0.36@zip"
}
dependencies {
errorprone "com.google.errorprone:error_prone_core:2.4.0"
}
cargo {
containerId "tomcat9x"
containerId "tomcat9x"
local {
installer {
installConfiguration = configurations.tomcat
downloadDir = file("$buildDir/download")
extractDir = file("$buildDir/tomcat")
local {
installer {
installConfiguration = configurations.tomcat
downloadDir = file("$buildDir/download")
extractDir = file("$buildDir/tomcat")
}
startStopTimeout = 240000
containerProperties {
property 'cargo.tomcat.connector.keystoreFile', file('src/main/resources/keystore.jks')
property 'cargo.tomcat.connector.keystorePass', 'openmf'
property 'cargo.tomcat.httpSecure', true
property 'cargo.tomcat.connector.sslProtocol', 'TLS'
property 'cargo.tomcat.connector.clientAuth', false
property 'cargo.protocol', 'https'
property 'cargo.servlet.port', 8443
}
}
startStopTimeout = 240000
containerProperties {
property 'cargo.tomcat.connector.keystoreFile', file('src/main/resources/keystore.jks')
property 'cargo.tomcat.connector.keystorePass', 'openmf'
property 'cargo.tomcat.httpSecure', true
property 'cargo.tomcat.connector.sslProtocol', 'TLS'
property 'cargo.tomcat.connector.clientAuth', false
property 'cargo.protocol', 'https'
property 'cargo.servlet.port', 8443
}
}
}
cargoRunLocal.dependsOn bootWar
@@ -655,7 +694,7 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
sourceSets {
integrationTest {
integrationTest {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
}
@@ -677,7 +716,8 @@ task integrationTest(type:Test) {
integrationTest {
useJUnitPlatform()
testLogging { // FINERACT-927
testLogging {
// FINERACT-927
events "skipped", "failed"
showStandardStreams = false
exceptionFormat "full"
@@ -685,7 +725,8 @@ integrationTest {
}
test {
useJUnitPlatform()
testLogging { // FINERACT-927
testLogging {
// FINERACT-927
events "skipped", "failed"
showStandardStreams = false
exceptionFormat "full"
+9 -9
View File
@@ -71,16 +71,16 @@ dependencies {
'com.github.spullara.mustache.java:compiler',
'com.jayway.jsonpath:json-path',
// JAX-B dependencies for JDK 9+
'jakarta.xml.bind:jakarta.xml.bind-api',
// JAX-B dependencies for JDK 9+
'jakarta.xml.bind:jakarta.xml.bind-api',
'org.dom4j:dom4j',
'org.dom4j:dom4j',
'javax.cache:cache-api',
'javax.cache:cache-api',
'com.github.spotbugs:spotbugs-annotations',
'io.swagger.core.v3:swagger-annotations'
)
'com.github.spotbugs:spotbugs-annotations',
'io.swagger.core.v3:swagger-annotations'
)
implementation ('org.apache.activemq:activemq-broker') {
exclude group: 'org.apache.geronimo.specs'
}
@@ -114,7 +114,7 @@ dependencies {
// Although fineract (at the time of writing) doesn't have any compile time dep. on httpclient,
// it's useful to have this for the Spring Boot TestRestTemplate http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-rest-templates-test-utility
'org.apache.httpcomponents:httpclient',
)
)
// testCompile dependencies are ONLY used in src/test and/or src/integrationTest, not src/main.
// Do NOT repeat dependencies which are ALREADY in implementation or runtimeOnly!
@@ -124,7 +124,7 @@ dependencies {
'org.junit.platform:junit-platform-runner', // required to be able to run tests directly under Eclipse, see FINERACT-943 & FINERACT-1021
'io.github.classgraph:classgraph',
'org.awaitility:awaitility'
)
)
testImplementation('org.mock-server:mockserver-junit-jupiter') {
exclude group: 'com.sun.mail', module: 'mailapi'
exclude group: 'javax.servlet', module: 'javax.servlet-api'