如何使用 Lint Option StopShip 使 Grade 发布构建失败?

How to make Grade release build fail using Lint Option StopShip?

我阅读了很多关于 StopShip Android Lint 检查和 Gradle 支持的文章

我想使用 SO 中的一些人已经提到的,而不是 TODO 或 FIXME 注释,使用它来确保用于 development/debugging/testing 的代码块不会进入生产。

为此,我想做两件事: - 启用 StopShip 检查,因为默认情况下它是禁用的 - 将严重性从警告(默认)更改为错误

(假设我们在 gradle 配置中使用 abortOnError true)。

我没能做到!无论我尝试什么,如果我在代码中添加 // STOPSHIP 注释,android 构建都不会失败。这很奇怪,因为在文本编辑器中它突出显示为一个错误,如果我 运行 一个 Lint 检查(分析 > 检查代码...)它被列为问题之一。

这是我在 build.gradle

中尝试过的
lintOptions {
    checkReleaseBuilds true
    // Or, if you prefer, you can continue to check for errors in release builds,
    // but continue the build even when errors are found:
    abortOnError true
    enable 'StopShip'
    error 'StopShip'
}

我还尝试在文件 > 设置 > 项目设置 > 检查中更改我的 Android Studio 首选项(或 Android Studio > 首选项 > Mac 检查)。在这里,我检查了 Code contains STOPSHIP marker 并将严重性更改为错误,但仍然没有。

这是我的 lint.xml 的样子:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <issue id="BackButton" severity="warning" />
    <issue id="EasterEgg" severity="warning" />
    <issue id="FieldGetter" severity="warning" />
    <issue id="IconExpectedSize" severity="warning" />
    <issue id="RtlCompat" severity="error" />
    <issue id="RtlEnabled" severity="warning" />
    <issue id="RtlHardcoded" severity="warning" />
    <issue id="SelectableText" severity="warning" />
    <issue id="StopShip" severity="error" />
    <issue id="TypographyQuotes" severity="warning" />
    <issue id="UnusedIds" severity="warning" />
</lint>

我终于破解了! fatal 'StopShip'。终于做到了!留下我的发现以防它对任何人有帮助。

在我的 build.gradle 配置中用 fatal 'StopShip' 替换 error 'StopShip' 解决了问题。

我不完全理解为什么我之前使用 error 'StopShip' 的尝试没有奏效,因为 abortOnError docs 明确指出:

Whether lint should set the exit code of the process if errors are found

并且我将 StopShip 检查严重性标记为错误。看起来 abortOnError 只会使 Gradle 构建因致命错误而中止。谁能确认一下?

当然,如果有人提供更好的solution/explanation,请分享。