Skip to content

Commit

Permalink
Move code analysis configuration to gradle/plugins, convert to scri…
Browse files Browse the repository at this point in the history
…pt plugins (#1622)

* Move configuration of diktat, detekt and spotless into `gradle/plugins`

Continuation of #948
  • Loading branch information
petertrr authored Dec 16, 2022
1 parent 8fe3d32 commit 9c62798
Show file tree
Hide file tree
Showing 25 changed files with 135 additions and 165 deletions.
3 changes: 1 addition & 2 deletions api-gateway/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import com.saveourtool.save.buildutils.configureJacoco
import com.saveourtool.save.buildutils.configureSpotless

plugins {
id("com.saveourtool.save.buildutils.kotlin-jvm-configuration")
id("com.saveourtool.save.buildutils.spring-boot-app-configuration")
id("com.saveourtool.save.buildutils.code-quality-convention")
}

dependencies {
Expand All @@ -17,4 +17,3 @@ dependencies {
}

configureJacoco()
configureSpotless()
2 changes: 1 addition & 1 deletion authentication-service/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import com.saveourtool.save.buildutils.*
plugins {
id("com.saveourtool.save.buildutils.kotlin-jvm-configuration")
id("com.saveourtool.save.buildutils.spring-boot-configuration")
id("com.saveourtool.save.buildutils.code-quality-convention")
kotlin("plugin.allopen")
alias(libs.plugins.kotlin.plugin.jpa)
}
Expand Down Expand Up @@ -30,4 +31,3 @@ dependencies {
}

configureJacoco()
configureSpotless()
7 changes: 1 addition & 6 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import com.saveourtool.save.buildutils.*

plugins {
id("com.saveourtool.save.buildutils.versioning-configuration")
id("com.saveourtool.save.buildutils.code-quality-convention")
alias(libs.plugins.talaiot.base)
alias(libs.plugins.liquibase.gradle)
java
Expand Down Expand Up @@ -58,19 +59,13 @@ talaiot {
}

allprojects {
configureDetekt()
configurations.all {
// if SNAPSHOT dependencies are used, refresh them periodically
resolutionStrategy.cacheDynamicVersionsFor(10, TimeUnit.MINUTES)
resolutionStrategy.cacheChangingModulesFor(10, TimeUnit.MINUTES)
}
}
allprojects {
configureDiktat()
}
configureSpotless()

createStackDeployTask(profile)
configurePublishing()
createDetektTask()
installGitHooks()
3 changes: 0 additions & 3 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@ dependencies {
implementation(files(project.libs.javaClass.superclass.protectionDomain.codeSource.location))
implementation(libs.kotlin.gradle.plugin)
implementation(libs.spring.boot.gradle.plugin)
implementation(libs.diktat.gradle.plugin)
implementation(libs.detekt.gradle.plugin)
implementation(libs.kotlin.plugin.allopen)
implementation(libs.gradle.plugin.spotless)
implementation(libs.publish.gradle.plugin)
implementation(libs.download.plugin)
}
Expand Down

This file was deleted.

This file was deleted.

1 change: 1 addition & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ kotlin-plugin-jpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kot
kotlin-plugin-allopen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlin" }
liquibase-gradle = { id = "org.liquibase.gradle", version = "2.1.1" }
talaiot-base = { id = "io.github.cdsap.talaiot.plugin.base", version = "1.5.3" }
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
spotless = { id = "com.diffplug.gradle.spotless", version.ref = "spotless" }
download = { id = "de.undercouch.download", version.ref = "download" }

Expand Down
10 changes: 7 additions & 3 deletions gradle/plugins/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
`kotlin-dsl`
}

repositories {
gradlePluginPortal()
mavenCentral()
gradlePluginPortal()
}

dependencies {
Expand All @@ -13,12 +15,14 @@ dependencies {
implementation(libs.kotlin.gradle.plugin)
implementation(libs.spring.boot.gradle.plugin)
implementation(libs.kotlin.plugin.allopen)
implementation(libs.gradle.plugin.spotless)
implementation(libs.download.plugin)
implementation(libs.reckon.gradle.plugin)
implementation(libs.detekt.gradle.plugin)
implementation(libs.diktat.gradle.plugin)
implementation(libs.gradle.plugin.spotless)
}

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
tasks.withType<KotlinCompile> {
kotlinOptions {
jvmTarget = "17"
freeCompilerArgs = freeCompilerArgs + "-opt-in=kotlin.RequiresOptIn"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.saveourtool.save.buildutils

plugins {
id("com.saveourtool.save.buildutils.detekt-convention-configuration")
id("com.saveourtool.save.buildutils.diktat-convention-configuration")
id("com.saveourtool.save.buildutils.spotless-convention-configuration")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.saveourtool.save.buildutils

import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.report.ReportMergeTask

plugins {
id("io.gitlab.arturbosch.detekt")
}

detekt {
config = rootProject.files("detekt.yml")
basePath = rootDir.canonicalPath
buildUponDefaultConfig = true
}

@Suppress("RUN_IN_SCRIPT")
if (path == rootProject.path) {
tasks.register("detektAll") {
allprojects {
this@register.dependsOn(tasks.withType<Detekt>())
}
}

tasks.register("mergeDetektReports", ReportMergeTask::class) {
output.set(buildDir.resolve("detekt-sarif-reports/detekt-merged.sarif"))
}
}

@Suppress("GENERIC_VARIABLE_WRONG_DECLARATION")
val reportMerge: TaskProvider<ReportMergeTask> = rootProject.tasks.named<ReportMergeTask>("mergeDetektReports") {
input.from(
tasks.withType<Detekt>().map { it.sarifReportFile }
)
shouldRunAfter(tasks.withType<Detekt>())
}
tasks.withType<Detekt>().configureEach {
reports.sarif.required.set(true)
finalizedBy(reportMerge)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.saveourtool.save.buildutils

import Versions
import org.cqfn.diktat.plugin.gradle.DiktatJavaExecTaskBase

plugins {
id("org.cqfn.diktat.diktat-gradle-plugin")
}

diktat {
diktatConfigFile = rootProject.file("diktat-analysis.yml")
githubActions = findProperty("diktat.githubActions")?.toString()?.toBoolean() ?: false
inputs {
// using `Project#path` here, because it must be unique in gradle's project hierarchy
if (path == rootProject.path) {
include("gradle/plugins/src/**/*.kt", "*.kts", "gradle/plugins/**/*.kts")
exclude("gradle/plugins/build/**")
} else {
include("src/**/*.kt", "**/*.kts")
exclude("src/test/**/*.kt", "src/*Test/**/*.kt")
}
}
}

tasks.withType<DiktatJavaExecTaskBase>().configureEach {
javaLauncher.set(project.extensions.getByType<JavaToolchainService>().launcherFor {
languageVersion.set(JavaLanguageVersion.of(Versions.jdk))
})
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.saveourtool.save.buildutils

import org.gradle.accessors.dm.LibrariesForLibs

plugins {
id("com.diffplug.spotless")
}

@Suppress("GENERIC_VARIABLE_WRONG_DECLARATION")
val libs = the<LibrariesForLibs>()
val diktatVersion: String = libs.versions.diktat.get()
spotless {
kotlin {
diktat(diktatVersion).configFile(rootProject.file("diktat-analysis.yml"))
target("src/**/*.kt")
targetExclude("src/test/**/*.kt", "src/*Test/**/*.kt")
if (path == rootProject.path) {
target("gradle/plugins/src/**/*.kt")
}
}
kotlinGradle {
diktat(diktatVersion).configFile(rootProject.file("diktat-analysis.yml"))

// using `Project#path` here, because it must be unique in gradle's project hierarchy
if (path == rootProject.path) {
target("$rootDir/*.kts", "$rootDir/gradle/plugins/**/*.kts")
targetExclude(
"$rootDir/build/**/*.kts",
"$rootDir/gradle/plugins/build/**/*.kts",
)
} else {
target("**/*.kts")
targetExclude("build/**/*.kts")
}
}
}
3 changes: 1 addition & 2 deletions save-agent/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import com.saveourtool.save.buildutils.configureSpotless
import org.gradle.api.tasks.TaskProvider
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeLink

plugins {
kotlin("multiplatform")
alias(libs.plugins.kotlin.plugin.serialization)
id("com.saveourtool.save.buildutils.code-quality-convention")
}

kotlin {
Expand Down Expand Up @@ -129,7 +129,6 @@ kotlin {
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinTest> {
testLogging.showStandardStreams = true
}
configureSpotless()

/*
* On Windows, it's impossible to link a Linux executable against
Expand Down
1 change: 1 addition & 0 deletions save-api-cli/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
plugins {
application
id("com.saveourtool.save.buildutils.kotlin-jvm-configuration")
id("com.saveourtool.save.buildutils.code-quality-convention")
alias(libs.plugins.kotlin.plugin.serialization)
}

Expand Down
1 change: 1 addition & 0 deletions save-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL

plugins {
id("com.saveourtool.save.buildutils.kotlin-jvm-configuration")
id("com.saveourtool.save.buildutils.code-quality-convention")
alias(libs.plugins.kotlin.plugin.serialization)
`maven-publish`
}
Expand Down
Loading

0 comments on commit 9c62798

Please sign in to comment.