Merge pull request #759 from SimonMarquis/lint/sarif

Android Lint improvements
pull/918/head
Milosz Moczkowski 1 year ago committed by GitHub
commit c57fb78fa7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -37,9 +37,6 @@ jobs:
- name: Check spotless - name: Check spotless
run: ./gradlew spotlessCheck --init-script gradle/init.gradle.kts --no-configuration-cache run: ./gradlew spotlessCheck --init-script gradle/init.gradle.kts --no-configuration-cache
- name: Check lint
run: ./gradlew lintDemoDebug
- name: Build all build type and flavor permutations - name: Build all build type and flavor permutations
run: ./gradlew assemble run: ./gradlew assemble
@ -49,12 +46,8 @@ jobs:
name: APKs name: APKs
path: '**/build/outputs/apk/**/*.apk' path: '**/build/outputs/apk/**/*.apk'
- name: Upload lint reports (HTML) - name: Run local tests
if: always() run: ./gradlew testDemoDebug testProdDebug
uses: actions/upload-artifact@v3
with:
name: lint-reports
path: '**/build/reports/lint-results-*.html'
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -122,6 +115,16 @@ jobs:
name: test-results name: test-results
path: '**/build/test-results/test*UnitTest/**.xml' path: '**/build/test-results/test*UnitTest/**.xml'
- name: Check lint
run: ./gradlew :app:lintProdRelease :app-nia-catalog:lintRelease :lint:lint
- name: Upload lint reports (HTML)
if: always()
uses: actions/upload-artifact@v3
with:
name: lint-reports
path: '**/build/reports/lint-results-*.html'
androidTest: androidTest:
needs: build needs: build
runs-on: macOS-latest # enables hardware acceleration in the virtual machine runs-on: macOS-latest # enables hardware acceleration in the virtual machine

@ -92,6 +92,10 @@ gradlePlugin {
id = "nowinandroid.android.application.flavors" id = "nowinandroid.android.application.flavors"
implementationClass = "AndroidApplicationFlavorsConventionPlugin" implementationClass = "AndroidApplicationFlavorsConventionPlugin"
} }
register("androidLint") {
id = "nowinandroid.android.lint"
implementationClass = "AndroidLintConventionPlugin"
}
register("jvmLibrary") { register("jvmLibrary") {
id = "nowinandroid.jvm.library" id = "nowinandroid.jvm.library"
implementationClass = "JvmLibraryConventionPlugin" implementationClass = "JvmLibraryConventionPlugin"

@ -29,6 +29,7 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {
with(pluginManager) { with(pluginManager) {
apply("com.android.application") apply("com.android.application")
apply("org.jetbrains.kotlin.android") apply("org.jetbrains.kotlin.android")
apply("nowinandroid.android.lint")
} }
extensions.configure<ApplicationExtension> { extensions.configure<ApplicationExtension> {

@ -33,6 +33,7 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
with(pluginManager) { with(pluginManager) {
apply("com.android.library") apply("com.android.library")
apply("org.jetbrains.kotlin.android") apply("org.jetbrains.kotlin.android")
apply("nowinandroid.android.lint")
} }
extensions.configure<LibraryExtension> { extensions.configure<LibraryExtension> {

@ -0,0 +1,46 @@
/*
* Copyright 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.dsl.LibraryExtension
import com.android.build.api.dsl.Lint
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
class AndroidLintConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
when {
pluginManager.hasPlugin("com.android.application") ->
configure<ApplicationExtension> { lint(Lint::configure) }
pluginManager.hasPlugin("com.android.library") ->
configure<LibraryExtension> { lint(Lint::configure) }
else -> {
pluginManager.apply("com.android.lint")
configure<Lint>(Lint::configure)
}
}
}
}
}
private fun Lint.configure() {
xmlReport = true
checkDependencies = true
}

@ -23,6 +23,7 @@ class JvmLibraryConventionPlugin : Plugin<Project> {
with(target) { with(target) {
with(pluginManager) { with(pluginManager) {
apply("org.jetbrains.kotlin.jvm") apply("org.jetbrains.kotlin.jvm")
apply("nowinandroid.android.lint")
} }
configureKotlinJvm() configureKotlinJvm()
} }

@ -23,9 +23,6 @@ android {
defaultConfig { defaultConfig {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
} }
lint {
checkDependencies = true
}
namespace = "com.google.samples.apps.nowinandroid.core.designsystem" namespace = "com.google.samples.apps.nowinandroid.core.designsystem"
} }

@ -19,7 +19,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins { plugins {
`java-library` `java-library`
kotlin("jvm") kotlin("jvm")
id("com.android.lint") id("nowinandroid.android.lint")
} }
java { java {

Loading…
Cancel
Save