1+ import com.github.spotbugs.snom.SpotBugsTask
2+
13val gradleScriptDir by extra(" ${rootProject.projectDir} /gradle" )
24val qualityConfigsDir by extra(" $gradleScriptDir /quality-configs" )
35val spotlessDtr by extra(" $qualityConfigsDir /spotless" )
46
57val libs = subprojects.filterNot { it.name in " allure-bom" }
68
79tasks.withType(Wrapper ::class ) {
8- gradleVersion = " 7.5.1 "
10+ gradleVersion = " 8.5 "
911}
1012
1113plugins {
1214 java
1315 `java- library`
1416 `maven- publish`
1517 signing
18+ checkstyle
19+ pmd
20+ id(" com.github.spotbugs" )
1621 id(" com.diffplug.spotless" )
1722 id(" io.github.gradle-nexus.publish-plugin" )
1823 id(" io.qameta.allure-adapter" ) apply false
1924 id(" io.qameta.allure-report" )
2025 id(" io.spring.dependency-management" )
21- id(" ru.vyarus.quality" )
2226}
2327
2428java {
@@ -125,13 +129,15 @@ configure(subprojects) {
125129
126130configure(libs) {
127131 val project = this
132+ apply (plugin = " checkstyle" )
133+ apply (plugin = " pmd" )
134+ apply (plugin = " com.github.spotbugs" )
128135 apply (plugin = " com.diffplug.spotless" )
129136 apply (plugin = " io.qameta.allure-report" )
130137 apply (plugin = " io.qameta.allure-adapter" )
131138 apply (plugin = " io.spring.dependency-management" )
132139 apply (plugin = " java" )
133140 apply (plugin = " java-library" )
134- apply (plugin = " ru.vyarus.quality" )
135141
136142 val orgSlf4jVersion = " 1.7.36"
137143 val assertJVersion = " 1.9.9.1"
@@ -142,17 +148,17 @@ configure(libs) {
142148 mavenBom(" org.junit:junit-bom:5.9.2" )
143149 }
144150 dependencies {
145- dependency(" com.github.spotbugs:spotbugs:4.7 .3" )
151+ dependency(" com.github.spotbugs:spotbugs:4.8 .3" )
146152 dependency(" com.github.tomakehurst:wiremock:2.27.2" )
147153 dependency(" com.google.inject:guice:5.1.0" )
148154 dependency(" com.google.testing.compile:compile-testing:0.19" )
149- dependency(" com.puppycrawl.tools:checkstyle:9.3 " )
155+ dependency(" com.puppycrawl.tools:checkstyle:10.13.0 " )
150156 dependency(" com.squareup.retrofit2:retrofit:2.9.0" )
151157 dependency(" commons-io:commons-io:2.11.0" )
152158 dependency(" io.github.benas:random-beans:3.9.0" )
153159 dependency(" io.github.glytching:junit-extensions:2.6.0" )
154160 dependency(" javax.annotation:javax.annotation-api:1.3.2" )
155- dependency(" net.sourceforge.pmd:pmd-java:6.46 .0" )
161+ dependency(" net.sourceforge.pmd:pmd-java:6.55 .0" )
156162 dependency(" org.apache.commons:commons-lang3:3.12.0" )
157163 dependency(" org.apache.httpcomponents:httpclient:4.5.13" )
158164 dependency(" org.apache.httpcomponents.client5:httpclient5:5.2.1" )
@@ -260,16 +266,24 @@ configure(libs) {
260266 }
261267 }
262268
263- quality {
264- configDir = qualityConfigsDir
265- checkstyleVersion = dependencyManagement.managedVersions[" com.puppycrawl.tools:checkstyle" ]
266- pmdVersion = dependencyManagement.managedVersions[" net.sourceforge.pmd:pmd-java" ]
267- spotbugsVersion = dependencyManagement.managedVersions[" com.github.spotbugs:spotbugs" ]
268- spotbugs = true
269- pmd = true
270- checkstyle = true
271- htmlReports = false
272- enabled = ! project.hasProperty(" disableQuality" )
269+ val enableQuality = true
270+ fun excludeGeneratedSources (source : FileTree ): FileTree = (source - fileTree(" build/generated-sources" )).asFileTree
271+
272+ checkstyle {
273+ toolVersion = dependencyManagement.managedVersions[" com.puppycrawl.tools:checkstyle" ]!!
274+ configDirectory = rootProject.layout.projectDirectory.dir(" gradle/quality-configs/checkstyle" )
275+ }
276+
277+ pmd {
278+ toolVersion = dependencyManagement.managedVersions[" net.sourceforge.pmd:pmd-java" ]!!
279+ ruleSets = listOf ()
280+ ruleSetFiles = rootProject.files(" gradle/quality-configs/pmd/pmd.xml" )
281+ }
282+
283+ spotbugs {
284+ toolVersion = dependencyManagement.managedVersions[" com.github.spotbugs:spotbugs" ]!!
285+ excludeFilter = rootProject.file(" gradle/quality-configs/spotbugs/exclude.xml" )
286+
273287 afterEvaluate {
274288 val spotbugs = configurations.findByName(" spotbugs" )
275289 if (spotbugs != null ) {
@@ -281,27 +295,50 @@ configure(libs) {
281295 }
282296 }
283297
298+ tasks.withType(Checkstyle ::class ) {
299+ source = excludeGeneratedSources(source)
300+ enabled = enableQuality
301+ }
302+
303+ tasks.withType(Pmd ::class ) {
304+ source = excludeGeneratedSources(source)
305+ enabled = enableQuality
306+ }
307+
308+ tasks.withType(SpotBugsTask ::class ) {
309+ enabled = enableQuality
310+ }
311+
312+ tasks.checkstyleTest {
313+ enabled = false
314+ }
315+
316+ tasks.pmdTest {
317+ enabled = false
318+ }
319+
320+ tasks.spotbugsTest {
321+ enabled = false
322+ }
323+
284324 spotless {
285325 java {
286326 target(" src/**/*.java" )
287327 removeUnusedImports()
288- @Suppress(" INACCESSIBLE_TYPE" )
289328 licenseHeaderFile(" $spotlessDtr /header.java" , " (package|import|open|module|//startfile)" )
290329 endWithNewline()
291330 replaceRegex(" one blank line after package line" , " (package .+;)\n +import" , " $1\n\n import" )
292331 replaceRegex(" one blank line after import lists" , " (import .+;\n\n )\n +" , " $1" )
293332 }
294333 scala {
295334 target(" src/**/*.scala" )
296- @Suppress(" INACCESSIBLE_TYPE" )
297335 licenseHeaderFile(" $spotlessDtr /header.java" , " (package|//startfile)" )
298336 endWithNewline()
299337 replaceRegex(" one blank line after package line" , " (package .+;)\n +import" , " $1\n\n import" )
300338 replaceRegex(" one blank line after import lists" , " (import .+;\n\n )\n +" , " $1" )
301339 }
302340 groovy {
303341 target(" src/**/*.groovy" )
304- @Suppress(" INACCESSIBLE_TYPE" )
305342 licenseHeaderFile(" $spotlessDtr /header.java" , " (package|//startfile) " )
306343 endWithNewline()
307344 replaceRegex(" one blank line after package line" , " (package .+;)\n +import" , " $1\n\n import" )
0 commit comments