Android - 将所有 lint 警告设置为错误,某些警告除外

Android - set all lint warnings as errors except for certain ones

当引入 lint-baseline.xml 文件中没有的新 lint 警告时,我试图让我的持续集成失败。我想将所有 lint 警告都视为错误(因此构建被中止),但我想要一种方法来指定某些 lint 检查被视为信息或警告级别,以便它们仍然出现在 lint 结果中,但不要'导致构建中止。

下面是我想做的基本操作的示例(除非这不起作用,如果存在任何未忽略的警告,构建将失败):

lintOptions {
    lintConfig file("lint.xml")
    baseline file("lint-baseline.xml")
    checkAllWarnings true
    warningsAsErrors true
    abortOnError true
    informational 'MissingTranslation, ...' // don't fail the build for these
}

有没有一种简单的方法可以将所有 lint 检查都视为错误,但不包括某些检查?我考虑过将所有 200 多个 lint 检查手动设置为错误级别,但这不是未来的证明,因为每次添加新的 lint 检查时我都必须更新列表。

this doc 中的信息似乎不是一个真正的选择,我建议:

android {
    lintOptions {
        checkAllWarnings true
        warningsAsErrors true
        // use this line to check all rules except those listed
        disable 'MissingTranslation', ...
        //OR this line to check but not worry about result (i think this is what you want)
        ignore 'MissingTranslation', ...
    }     
}

如果不使用GradlelintOptionscheckAllWarningswarningsAsErrors等)配置哪些警告应该可以达到你想要的效果应该被视为错误。请改用 lint.xml。您可以在那里执行以下操作:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
   <issue id="MissingTranslation" severity="warning" />

   <!-- The following must be at the bottom of your file!
        All lint issues (not listed above) will be treated as errors. -->
   <issue id="all" severity="error" />
</lint>

在我的测试中,这似乎工作正常,所有警告都被视为错误,但 lint.xml 顶部列出的警告除外。 但是,我没有将它与 lint-baseline.xml 结合使用进行测试,但我看不出为什么它不能在那里工作。

对我来说,这个配置有效:

android {
    lintOptions {
        warningsAsErrors true
        warning 'MissingTranslation', ...
    }
}

这些选项似乎在 "correct order"(又名 "as I need it")中进行了评估,即首先将所有警告提升为错误,然后针对单个问题 ID 再次覆盖此设置。使用 warning 而不是 disableignore 可确保问题在报告或 IDE.

中仍然可见