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

sta*_*ej2 11 android lint android-lint android-studio android-gradle-plugin

当我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
}
Run Code Online (Sandbox Code Playgroud)

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

小智 7

您应该能够达到你想要什么,如果你不使用的摇篮lintOptionscheckAllWarningswarningsAsErrors,等)来配置哪些警告应被视为错误。请改用 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>
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

android {
    lintOptions {
        warningsAsErrors true
        warning 'MissingTranslation', ...
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎这些选项是按照“正确的顺序”(又名“我需要的”)进行评估的,即首先所有警告都提升为错误,然后针对单个问题 ID 再次覆盖此设置。使用warning代替disableignore可确保问题在报告或 IDE 中仍然可见。