chore(build-logic): Apply Spotless and Detekt to build-logic module (#3962)

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit is contained in:
James Rich 2025-12-10 14:30:52 -06:00 committed by GitHub
parent 14f6a46769
commit ce732203ae
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 80 additions and 7 deletions

View file

@ -21,6 +21,8 @@ plugins {
`kotlin-dsl`
alias(libs.plugins.android.lint)
alias(libs.plugins.dependency.analysis)
alias(libs.plugins.spotless)
alias(libs.plugins.detekt)
}
group = "com.geeksville.mesh.buildlogic"
@ -54,6 +56,8 @@ dependencies {
compileOnly(libs.secrets.gradlePlugin)
compileOnly(libs.spotless.gradlePlugin)
compileOnly(libs.truth)
detektPlugins(libs.detekt.formatting)
}
tasks {
@ -63,6 +67,39 @@ tasks {
}
}
spotless {
ratchetFrom("origin/main")
kotlin {
target("src/*/kotlin/**/*.kt", "src/*/java/**/*.kt")
targetExclude("**/build/**/*.kt")
ktfmt().kotlinlangStyle().configure { it.setMaxWidth(120) }
ktlint(libs.versions.ktlint.get()).setEditorConfigPath(rootProject.file("../config/spotless/.editorconfig").path)
licenseHeaderFile(rootProject.file("../config/spotless/copyright.kt"))
}
kotlinGradle {
target("**/*.gradle.kts")
ktfmt().kotlinlangStyle().configure { it.setMaxWidth(120) }
ktlint(libs.versions.ktlint.get()).setEditorConfigPath(rootProject.file("../config/spotless/.editorconfig").path)
licenseHeaderFile(
rootProject.file("../config/spotless/copyright.kts"),
"(^(?![\\/ ]\\*).*$)"
)
}
}
detekt {
toolVersion = libs.versions.detekt.get()
config.setFrom(rootProject.file("../config/detekt/detekt.yml"))
buildUponDefaultConfig = true
allRules = false
baseline = file("detekt-baseline.xml")
source.setFrom(
files(
"src/main/java",
"src/main/kotlin",
)
)
}
gradlePlugin {
plugins {

View file

@ -0,0 +1,37 @@
<?xml version="1.0" ?>
<SmellBaseline>
<ManuallySuppressedIssues/>
<CurrentIssues>
<ID>AbsentOrWrongFileLicense:DetektConventionPlugin.kt$.DetektConventionPlugin.kt</ID>
<ID>AbsentOrWrongFileLicense:SpotlessConventionPlugin.kt$.SpotlessConventionPlugin.kt</ID>
<ID>ChainWrapping:AndroidInstrumentedTests.kt$&amp;&amp;</ID>
<ID>EnumNaming:MeshtasticFlavor.kt$FlavorDimension$marketplace</ID>
<ID>EnumNaming:MeshtasticFlavor.kt$MeshtasticFlavor$fdroid : MeshtasticFlavor</ID>
<ID>EnumNaming:MeshtasticFlavor.kt$MeshtasticFlavor$google : MeshtasticFlavor</ID>
<ID>FinalNewline:ProjectExtensions.kt$com.geeksville.mesh.buildlogic.ProjectExtensions.kt</ID>
<ID>MagicNumber:AndroidApplicationConventionPlugin.kt$AndroidApplicationConventionPlugin$36</ID>
<ID>MagicNumber:AndroidLibraryConventionPlugin.kt$AndroidLibraryConventionPlugin$36</ID>
<ID>MagicNumber:KotlinAndroid.kt$21</ID>
<ID>MagicNumber:KotlinAndroid.kt$26</ID>
<ID>MagicNumber:KotlinAndroid.kt$36</ID>
<ID>MagicNumber:Spotless.kt$120</ID>
<ID>MaxLineLength:GitVersionValueSource.kt$GitVersionValueSource$throw RuntimeException("Failed to determine git commit count for versionCode. Ensure you have a full git history (not a shallow clone) and .git is present.\nOriginal error: ${e.message}", e)</ID>
<ID>NewLineAtEndOfFile:ProjectExtensions.kt$com.geeksville.mesh.buildlogic.ProjectExtensions.kt</ID>
<ID>NoBlankLineBeforeRbrace:AndroidApplicationComposeConventionPlugin.kt$AndroidApplicationComposeConventionPlugin$ </ID>
<ID>NoBlankLineBeforeRbrace:AndroidLibraryComposeConventionPlugin.kt$AndroidLibraryComposeConventionPlugin$ </ID>
<ID>NoConsecutiveBlankLines:MeshtasticFlavor.kt$ </ID>
<ID>NoUnusedImports:AndroidApplicationFlavorsConventionPlugin.kt$.AndroidApplicationFlavorsConventionPlugin.kt</ID>
<ID>NoUnusedImports:AndroidLibraryConventionPlugin.kt$.AndroidLibraryConventionPlugin.kt</ID>
<ID>SpacingAroundParens:MeshtasticFlavor.kt$MeshtasticFlavor.fdroid$)</ID>
<ID>TooGenericExceptionCaught:GitVersionValueSource.kt$GitVersionValueSource$e: Exception</ID>
<ID>TooGenericExceptionThrown:GitVersionValueSource.kt$GitVersionValueSource$throw RuntimeException("Failed to determine git commit count for versionCode. Ensure you have a full git history (not a shallow clone) and .git is present.\nOriginal error: ${e.message}", e)</ID>
<ID>UnusedImports:AndroidApplicationFlavorsConventionPlugin.kt$import com.geeksville.mesh.buildlogic.MeshtasticFlavor</ID>
<ID>UnusedImports:AndroidApplicationFlavorsConventionPlugin.kt$import com.geeksville.mesh.buildlogic.libs</ID>
<ID>UnusedImports:AndroidApplicationFlavorsConventionPlugin.kt$import org.gradle.kotlin.dsl.apply</ID>
<ID>UnusedImports:AndroidApplicationFlavorsConventionPlugin.kt$import org.gradle.kotlin.dsl.dependencies</ID>
<ID>UnusedImports:AndroidApplicationFlavorsConventionPlugin.kt$import org.gradle.kotlin.dsl.exclude</ID>
<ID>UnusedImports:AndroidLibraryConventionPlugin.kt$import com.geeksville.mesh.buildlogic.libs</ID>
<ID>UnusedImports:AndroidLibraryConventionPlugin.kt$import org.gradle.kotlin.dsl.dependencies</ID>
<ID>UnusedParameter:AndroidLintConventionPlugin.kt$project: Project</ID>
</CurrentIssues>
</SmellBaseline>

View file

@ -18,11 +18,7 @@
package com.geeksville.mesh.buildlogic
import com.diffplug.gradle.spotless.SpotlessExtension
import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.named
internal fun Project.configureSpotless(extension: SpotlessExtension) = extension.apply {
extension.apply {
@ -31,17 +27,19 @@ internal fun Project.configureSpotless(extension: SpotlessExtension) = extension
target("src/*/kotlin/**/*.kt", "src/*/java/**/*.kt")
targetExclude("**/build/**/*.kt")
ktfmt().kotlinlangStyle().configure { it.setMaxWidth(120) }
ktlint("1.7.1").setEditorConfigPath(rootProject.file("config/spotless/.editorconfig").path)
ktlint(libs.findVersion("ktlint").get().requiredVersion)
.setEditorConfigPath(rootProject.file("config/spotless/.editorconfig").path)
licenseHeaderFile(rootProject.file("config/spotless/copyright.kt"))
}
kotlinGradle {
target("**/*.gradle.kts")
ktfmt().kotlinlangStyle().configure { it.setMaxWidth(120) }
ktlint("1.7.1").setEditorConfigPath(rootProject.file("config/spotless/.editorconfig").path)
ktlint(libs.findVersion("ktlint").get().requiredVersion)
.setEditorConfigPath(rootProject.file("config/spotless/.editorconfig").path)
licenseHeaderFile(
rootProject.file("config/spotless/copyright.kts"),
"(^(?![\\/ ]\\*).*$)"
)
}
}
}
}

View file

@ -18,6 +18,7 @@ room = "2.8.4"
kotlin = "2.2.21"
kotlinx-coroutines-android = "1.10.2"
kotlinx-serialization = "1.9.0"
ktlint = "1.7.1"
# Google
hilt = "2.57.2"