如何使用Lint Option StopShip使Grade发布版本失败?

时间:2015-11-03 16:25:16

标签: android gradle android-gradle build.gradle android-lint

我已经阅读了很多关于StopShip Android Lint Check和Gradle支持的内容

我想使用SO中的一些已经提到的,而不是TODO或FIXME注释,使用它来确保用于开发/调试/测试的代码块无法达到生产。

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

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

我未能实现这一目标!无论我尝试什么,如果我在代码中添加// STOPSHIP注释,android构建都不会失败。这很奇怪,因为在textEditor中它突出显示为错误,如果我运行Lint检查(Analyze> Inspect Code ...),它将被列为问题之一。

以下是我在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'
}

我还试图在File>中更改我的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>

1 个答案:

答案 0 :(得分:11)

我终于搞砸了! fatal 'StopShip'。这才是最终做到的!留下我的发现以防万一。

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

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

  

如果发现错误,lint是否应设置进程的退出代码

我将StopShip检查严重性标记为错误。看起来abortOnError只会使Gradle构建中止FATAL错误。任何人都可以确认吗?

当然,如果有人提供更好的解决方案/解释,请分享。