Skip to content

Commit d04f194

Browse files
authored
Lint: Support Android Gradle Plugin 9.0.0 (#382)
1 parent 73b7640 commit d04f194

3 files changed

Lines changed: 26 additions & 24 deletions

File tree

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ dependencies {
7777
api gradleApi()
7878
api 'de.aaschmid:gradle-cpd-plugin:3.5'
7979

80-
compileOnly "com.android.tools.build:gradle:$androidGradlePluginVersion"
80+
compileOnly "com.android.tools.build:gradle-api:$androidGradlePluginVersion"
8181
compileOnly "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
8282

8383
testImplementation "com.android.tools.build:gradle:$androidGradlePluginVersion"
@@ -102,7 +102,7 @@ kotlin {
102102
}
103103
}
104104

105-
tasks.withType(Test) {
105+
tasks.withType(Test).configureEach {
106106
testLogging {
107107
testLogging.exceptionFormat = 'full'
108108
}

src/main/kotlin/com/vanniktech/code/quality/tools/CodeQualityToolsPlugin.kt

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.vanniktech.code.quality.tools
22

3-
import com.android.build.gradle.BaseExtension
3+
import com.android.build.api.dsl.ApplicationExtension
4+
import com.android.build.api.dsl.LibraryExtension
5+
import com.android.build.api.dsl.Lint
6+
import com.android.build.api.dsl.TestExtension
47
import com.android.build.gradle.LintPlugin
5-
import com.android.build.gradle.internal.dsl.LintOptions
68
import de.aaschmid.gradle.plugins.cpd.Cpd
79
import de.aaschmid.gradle.plugins.cpd.CpdExtension
810
import de.aaschmid.gradle.plugins.cpd.CpdPlugin
@@ -143,54 +145,56 @@ fun Project.addCheckstyle(rootProject: Project, extension: CodeQualityToolsPlugi
143145
fun Project.addLint(extension: CodeQualityToolsPluginExtension): Boolean {
144146
val isNotIgnored = !shouldIgnore(extension)
145147
val isEnabled = extension.lint.enabled
146-
val isAndroidProject = isAndroidProject()
147148
val isJavaProject = isJavaProject()
148149

149150
if (isNotIgnored && isEnabled) {
150-
val lintOptions = if (isAndroidProject) {
151-
extensions.getByType(BaseExtension::class.java).lintOptions
152-
} else if (isJavaProject && hasLintPlugin()) {
153-
plugins.apply(LintPlugin::class.java)
154-
extensions.getByType(LintOptions::class.java)
155-
} else {
156-
null
151+
val lintOptions = when {
152+
plugins.hasPlugin("com.android.application") -> extensions.getByType(ApplicationExtension::class.java).lint
153+
plugins.hasPlugin("com.android.library") -> extensions.getByType(LibraryExtension::class.java).lint
154+
plugins.hasPlugin("com.android.test") -> extensions.getByType(TestExtension::class.java).lint
155+
isJavaProject && hasLintPlugin() -> {
156+
plugins.apply(LintPlugin::class.java)
157+
extensions.getByType(Lint::class.java)
158+
}
159+
else -> {
160+
null
161+
}
157162
}
158163

159164
if (lintOptions != null) {
160-
lintOptions.isWarningsAsErrors = extension.lint.warningsAsErrors ?: extension.failEarly
161-
lintOptions.isAbortOnError = extension.lint.abortOnError ?: extension.failEarly
165+
lintOptions.warningsAsErrors = extension.lint.warningsAsErrors ?: extension.failEarly
166+
lintOptions.abortOnError = extension.lint.abortOnError ?: extension.failEarly
162167

163168
extension.lint.checkAllWarnings?.let {
164-
lintOptions.isCheckAllWarnings = it
169+
lintOptions.checkAllWarnings = it
165170
}
166171

167172
extension.lint.absolutePaths?.let {
168-
lintOptions.isAbsolutePaths = it
173+
lintOptions.absolutePaths = it
169174
}
170175

171176
extension.lint.baselineFileName?.let {
172-
lintOptions.baselineFile = file(it)
177+
lintOptions.baseline = file(it)
173178
}
174179

175180
extension.lint.lintConfig?.let {
176181
lintOptions.lintConfig = it
177182
}
178183

179184
extension.lint.checkReleaseBuilds?.let {
180-
lintOptions.isCheckReleaseBuilds = it
185+
lintOptions.checkReleaseBuilds = it
181186
}
182187

183188
extension.lint.checkTestSources?.let {
184-
lintOptions.isCheckTestSources = it
189+
lintOptions.checkTestSources = it
185190
}
186191

187192
extension.lint.checkDependencies?.let {
188-
lintOptions.isCheckDependencies = it
193+
lintOptions.checkDependencies = it
189194
}
190195

191196
extension.lint.textReport?.let {
192197
lintOptions.textReport = it
193-
lintOptions.textOutput(extension.lint.textOutput)
194198
}
195199

196200
tasks.named(CHECK_TASK_NAME).configure { it.dependsOn("lint") }
@@ -231,7 +235,6 @@ fun Project.addKtlint(rootProject: Project, extension: CodeQualityToolsPluginExt
231235
}
232236

233237
configuration.isCanBeConsumed = false
234-
configuration.isVisible = false
235238

236239
configuration.defaultDependencies {
237240
it.add(dependencies.create("com.pinterest.ktlint:ktlint-cli:${extension.ktlint.toolVersion}"))

src/test/kotlin/com/vanniktech/code/quality/tools/CodeQualityToolsPluginLintTest.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.vanniktech.code.quality.tools
33
import org.gradle.api.Project
44
import org.junit.Assert.assertEquals
55
import org.junit.Test
6-
import java.io.File
76

87
class CodeQualityToolsPluginLintTest : CommonCodeQualityToolsTest() {
98
@Test fun empty() {
@@ -36,7 +35,7 @@ class CodeQualityToolsPluginLintTest : CommonCodeQualityToolsTest() {
3635
assertEquals(true, project.lintOptions.isWarningsAsErrors)
3736
assertEquals(true, project.lintOptions.isAbortOnError)
3837
assertEquals(true, project.lintOptions.textReport)
39-
assertEquals(File("stdout"), project.lintOptions.textOutput)
38+
assertEquals(null, project.lintOptions.textOutput)
4039
assertEquals(false, project.lintOptions.isCheckAllWarnings)
4140
assertEquals(null, project.lintOptions.baselineFile)
4241

0 commit comments

Comments
 (0)