如何在 Android Lint 基线中强制使用相对路径

kar*_*arl 5 android android-lint

我正在尝试为我的 Android 项目创建基线 lint 文件。我在主模块的 build.gradle 中设置了一个块:

lintOptions {
    <some includes/excludes>

    baseline file("lint-baseline.xml")

    checkAllWarnings true
    warningsAsErrors true
    abortOnError false
}
Run Code Online (Sandbox Code Playgroud)

然后,我使用 lint 创建基线./gradlew lint<flavor/variant>并将单元测试任务设置为依赖于 lint。

然而,这给出了包含一些绝对路径的基线文件。罪魁祸首似乎是 a) 子模块中(但只有一些子模块,不是全部),或 b) 我的本地 gradle 缓存中。当我将基线推送到 CI 时,它会出现一堆新警告,因为路径不完全匹配。

一些例子包括:

<location
        file="/Users/.../android/<submodule>/src/main/res/values/strings.xml"
        line="4"
        column="13"/>

<location
        file="/Users/.../.gradle/caches/modules-2/files-2.1/com.google.auto.value/auto-value/1.3/4961194f62915eb45e21940537d60ac53912c57d/auto-value-1.3.jar"/>
Run Code Online (Sandbox Code Playgroud)

如何强制 lint 使用相对路径创建基线?

Rom*_*lov 4

每个模块使用自己的baseline.xml。路径将相对于模块根目录。

更新 尝试仅使用一个baseline.xml,将其放入模块上方的根gradle项目中,如下所示

project/app/build.gradle
project/module1/build.gradle
project/build.gradle
project/lint-baseline.xml
Run Code Online (Sandbox Code Playgroud)

在模块的 build.gradle 中使用这样的代码片段

lintOptions {
    baselineFile = rootProject.file('lint-baseline.xml')
}
Run Code Online (Sandbox Code Playgroud)

UPDATE 2 对每个模块使用自己的baseline.xml。路径将相对于模块根目录。在模块的 build.gradle 中使用这样的代码片段

lintOptions {
    baselineFile = project.file('lint-baseline.xml')
    checkDependencies = false
}
Run Code Online (Sandbox Code Playgroud)