如何使用 Lint Option StopShip 使 Grade 发布构建失败?
How to make Grade release build fail using Lint Option StopShip?
我阅读了很多关于 StopShip
Android Lint 检查和 Gradle 支持的文章
- http://tools.android.com/tips/lint-checks
- http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Lint-support
- http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.LintOptions.html#com.android.build.gradle.internal.dsl.LintOptions:checkReleaseBuilds
- gradle build fails on lint task
- http://developer.android.com/tools/help/lint.html
- http://developer.android.com/tools/debugging/improving-w-lint.html
我想使用 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,请分享。
我阅读了很多关于 StopShip
Android Lint 检查和 Gradle 支持的文章
- http://tools.android.com/tips/lint-checks
- http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Lint-support
- http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.LintOptions.html#com.android.build.gradle.internal.dsl.LintOptions:checkReleaseBuilds
- gradle build fails on lint task
- http://developer.android.com/tools/help/lint.html
- http://developer.android.com/tools/debugging/improving-w-lint.html
我想使用 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,请分享。