From 281ef8750a3eb146c9518d556450d36def818417 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Fri, 8 May 2026 21:23:42 +0900 Subject: [PATCH] Apply lint dedicated module. Change-Id: I654a8663af53819d08cd3d7d82c839536904b1bb --- app/build.gradle.kts | 1 + .../kotlin/AndroidLibraryConventionPlugin.kt | 6 +++-- .../kotlin/AndroidLintConventionPlugin.kt | 1 - core/designsystem/build.gradle.kts | 2 -- core/designsystem/lint.xml | 23 +++++++++++++++++ .../domain/GetFollowableTopicsUseCaseTest.kt | 4 +-- lint/build.gradle.kts | 25 +++---------------- .../TestMethodNameDetectorTest.kt | 14 +++++------ 8 files changed, 41 insertions(+), 35 deletions(-) create mode 100644 core/designsystem/lint.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2f0253943..64555f53f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -86,6 +86,7 @@ dependencies { implementation(projects.core.data) implementation(projects.core.model) implementation(projects.core.analytics) + implementation(projects.lint) implementation(projects.sync.work) implementation(libs.androidx.activity.compose) diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt index d5aaa131d..3657ef450 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt @@ -55,11 +55,13 @@ abstract class AndroidLibraryConventionPlugin : Plugin { } configureSpotlessForAndroid() dependencies { - "androidTestImplementation"(libs.findLibrary("kotlin.test").get()) + if (project.name != "lint") "implementation"(project(":lint")) + "implementation"(libs.findLibrary("androidx.tracing.ktx").get()) + "testImplementation"(libs.findLibrary("kotlin.test").get()) "testImplementation"(libs.findLibrary("junit").get()) - "implementation"(libs.findLibrary("androidx.tracing.ktx").get()) + "androidTestImplementation"(libs.findLibrary("kotlin.test").get()) } } } diff --git a/build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt index c701983b1..13127cf61 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt @@ -44,6 +44,5 @@ class AndroidLintConventionPlugin : Plugin { private fun Lint.configure() { xmlReport = true sarifReport = true - checkDependencies = true disable += "GradleDependency" } diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts index 8a138082b..b02b968b4 100644 --- a/core/designsystem/build.gradle.kts +++ b/core/designsystem/build.gradle.kts @@ -26,8 +26,6 @@ android { } dependencies { - lintPublish(projects.lint) - api(libs.androidx.compose.foundation) api(libs.androidx.compose.foundation.layout) api(libs.androidx.compose.material.iconsExtended) diff --git a/core/designsystem/lint.xml b/core/designsystem/lint.xml new file mode 100644 index 000000000..ad995a7d4 --- /dev/null +++ b/core/designsystem/lint.xml @@ -0,0 +1,23 @@ + + + + + + diff --git a/core/domain/src/test/kotlin/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsUseCaseTest.kt b/core/domain/src/test/kotlin/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsUseCaseTest.kt index 7f4096f2a..42a31f858 100644 --- a/core/domain/src/test/kotlin/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsUseCaseTest.kt +++ b/core/domain/src/test/kotlin/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsUseCaseTest.kt @@ -42,7 +42,7 @@ class GetFollowableTopicsUseCaseTest { ) @Test - fun test_whenNoParams_followableTopicsAreReturnedWithNoSorting() = runTest { + fun whenNoParams_followableTopicsAreReturnedWithNoSorting() = runTest { // Obtain a stream of followable topics. val followableTopics = useCase() @@ -62,7 +62,7 @@ class GetFollowableTopicsUseCaseTest { } @Test - fun test_whenSortOrderIsByName_topicsSortedByNameAreReturned() = runTest { + fun whenSortOrderIsByName_topicsSortedByNameAreReturned() = runTest { // Obtain a stream of followable topics, sorted by name. val followableTopics = useCase( sortBy = NAME, diff --git a/lint/build.gradle.kts b/lint/build.gradle.kts index f1722fa78..15a648717 100644 --- a/lint/build.gradle.kts +++ b/lint/build.gradle.kts @@ -14,31 +14,14 @@ * limitations under the License. */ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { - `java-library` - kotlin("jvm") - alias(libs.plugins.nowinandroid.android.lint) -} - -java { - // Up to Java 11 APIs are available through desugaring - // https://developer.android.com/studio/write/java11-minimal-support-table - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + alias(libs.plugins.nowinandroid.android.library) } -kotlin { - compilerOptions { - jvmTarget = JvmTarget.JVM_11 - } +android { + namespace = "com.google.samples.apps.nowinandroid.lint" } dependencies { - compileOnly(libs.kotlin.stdlib) - compileOnly(libs.lint.api) - testImplementation(libs.kotlin.test) - testImplementation(libs.lint.checks) - testImplementation(libs.lint.tests) + lintPublish(projects.lint.impl) } diff --git a/lint/impl/src/test/kotlin/com/google/samples/apps/nowinandroid/lint/impl/designsystem/TestMethodNameDetectorTest.kt b/lint/impl/src/test/kotlin/com/google/samples/apps/nowinandroid/lint/impl/designsystem/TestMethodNameDetectorTest.kt index dfde7859f..acdd97a14 100644 --- a/lint/impl/src/test/kotlin/com/google/samples/apps/nowinandroid/lint/impl/designsystem/TestMethodNameDetectorTest.kt +++ b/lint/impl/src/test/kotlin/com/google/samples/apps/nowinandroid/lint/impl/designsystem/TestMethodNameDetectorTest.kt @@ -17,8 +17,8 @@ package com.google.samples.apps.nowinandroid.lint.impl.designsystem import com.android.tools.lint.checks.infrastructure.TestFile -import com.android.tools.lint.checks.infrastructure.TestFiles -import com.android.tools.lint.checks.infrastructure.TestLintTask +import com.android.tools.lint.checks.infrastructure.TestFiles.kotlin +import com.android.tools.lint.checks.infrastructure.TestLintTask.lint import com.google.samples.apps.nowinandroid.lint.impl.TestMethodNameDetector.Companion.FORMAT import com.google.samples.apps.nowinandroid.lint.impl.TestMethodNameDetector.Companion.PREFIX import org.junit.Test @@ -27,10 +27,10 @@ class TestMethodNameDetectorTest { @Test fun `detect prefix`() { - TestLintTask.lint().issues(PREFIX) + lint().issues(PREFIX) .files( JUNIT_TEST_STUB, - TestFiles.kotlin( + kotlin( """ import org.junit.Test class Test { @@ -72,10 +72,10 @@ class TestMethodNameDetectorTest { @Test fun `detect format`() { - TestLintTask.lint().issues(FORMAT) + lint().issues(FORMAT) .files( JUNIT_TEST_STUB, - TestFiles.kotlin( + kotlin( "src/androidTest/com/example/Test.kt", """ import org.junit.Test @@ -113,7 +113,7 @@ class TestMethodNameDetectorTest { } private companion object { - private val JUNIT_TEST_STUB: TestFile = TestFiles.kotlin( + private val JUNIT_TEST_STUB: TestFile = kotlin( """ package org.junit annotation class Test