Android - 设置所有 Lint 警告为错误,除了特定的警告

13

我正在尝试使我的持续集成在引入未在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检查时,我就必须更新列表。

3个回答

7

如果您不使用Gradle的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>

在我的测试中,这似乎很好地运行了,并且除了在lint.xml顶部列出的警告之外,所有警告都被视为错误。不过,我还没有与lint-baseline.xml结合测试过,但我认为它也应该能够正常工作。

3

对我来说,这个配置起作用:

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

看起来选项是按照“正确的顺序”(也就是我需要的顺序)进行评估的,即首先将所有警告提升为错误,然后再针对单个问题ID再次覆盖此设置。使用warning而不是disableignore可以确保在报告或IDE中仍然可以看到这些问题。


2

这份文档来看,似乎信息选项不是一个真正的选项,我建议:

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', ...
    }     
}

问题在于我希望警告仍然可以在IDE和最好能够在Android Studio检查结果中被标记。寻找一种方法,使得持续集成构建在引入新的lint警告时失败,同时还能够指定某些不应该失败构建的警告。但我不想完全忽略或禁用这些警告。 - starkej2
忽略(Ignore)似乎是禁用(Disable)的弱化版本 - 它会运行但不会使构建失败,因此仍应记录日志。如果开启了“记录所有测试”选项,这样做是否还不够好?或者我对忽略的含义理解错误了吗? - Nick Cardoso
我认为 ignore 命令可以防止 lint 检查运行。在 Android Studio 或者 lint 结果中,我看不到被忽略的 lint 警告。 - starkej2
android { lintOptions { // 设置为 true 以关闭 Lint 的分析进度报告 quiet true // 如果为 true,则在发现错误时停止 Gradle 构建 abortOnError false // 如果为 true,则仅报告错误 ignoreWarnings true } } - Jigar Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接