diff --git a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/KotlinCommonPlugin.kt b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/KotlinCommonPlugin.kt index 21a53292..65c74c60 100644 --- a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/KotlinCommonPlugin.kt +++ b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/KotlinCommonPlugin.kt @@ -21,6 +21,11 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile class KotlinCommonPlugin : Plugin { override fun apply(project: Project) { + if (project.rootProject == project) { + LintConfig.configureRootProject(project) + } else if (project.name != "benchmark") { + LintConfig.configureSubProject(project) + } project.tasks.run { withType().configureEach { sourceCompatibility = JavaVersion.VERSION_11.toString() diff --git a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/LintConfig.kt b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/LintConfig.kt index 66285a83..c6979a6b 100644 --- a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/LintConfig.kt +++ b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/LintConfig.kt @@ -8,6 +8,9 @@ package dev.msfjarvis.claw.gradle import com.android.build.api.dsl.Lint import org.gradle.api.Project +import org.gradle.api.tasks.Copy +import org.gradle.kotlin.dsl.named +import org.gradle.kotlin.dsl.register object LintConfig { fun Lint.configureLint(project: Project, isJVM: Boolean = false) { @@ -30,4 +33,25 @@ object LintConfig { } baseline = project.file("lint-baseline.xml") } + + fun configureRootProject(project: Project) { + project.tasks.register("collectLintReports") { + into(project.layout.buildDirectory.dir("lint-reports")) + } + } + + fun configureSubProject(project: Project) { + val collectorTask = project.rootProject.tasks.named("collectLintReports") + val lintTask = project.tasks.named("lint") + val name = project.name + + collectorTask.configure { + from(project.layout.buildDirectory.file("reports")) { + include("*.sarif") + rename { it.replace("-results", "-results-$name") } + } + dependsOn(":$name:lint") + } + lintTask.configure { finalizedBy(collectorTask) } + } }