如何安排 `lint` 错误(更新:使用 papercut)
How to schedule a `lint` error (update: use papercut)
我正在寻找一种方法来暂时抑制 lint
错误或在特定日期或条件之后安排错误。
这是一些背景信息:
我有一个 android 应用程序已翻译成多种语言,我已将其设置为 lint
在缺少翻译时失败并显示错误。显然,这样做是为了防止未翻译的字符串泄露到野外。
每当有新的 string
资源时,它需要一段时间才能被翻译,在此期间 lint
会失败。
这可以被抑制,或者字符串可以被标记为不可翻译,但这超出了首先进行检查的目的。
除了该上下文之外,还有很多特定设置为 "temporary" 的情况。我不喜欢每次都要记得按回拨开关。
构建在 CI 服务器上,发布通常发生在团队中,任何人都可以 "temporarily" 忽略警告。
有没有一种自动的方法来确保发布时不会忽略事情?
更新:
自从问了这个问题,有人开发了一个库,它可以满足我的要求,甚至更多:https://github.com/Stuie/papercut
我不知道您如何确定何时 de/activate lint。但这也许有帮助:
您可以在 gradle 脚本中使用布尔值切换 Lint on/off:
android {
lintOptions {
if (lintOn){
checkReleaseBuilds true
abortOnError true
} else {
checkReleaseBuilds false
abortOnError false
}
}
}
将 lintOn=false
添加到您的 gradle.properties,否则 gradle 将无法将其识别为变量。
现在你可以添加一个任务并在构建任务之前使其成为 运行:
task preBuild << {
// do stuff to determin if lint should run
lintOn = true
}
build.dependsOn preBuild
在此 preBuild 任务中,您现在可以执行一些代码来检查是否应该 运行 lint。
Here 是任务可以做什么的一些很好的例子。
我正在寻找一种方法来暂时抑制 lint
错误或在特定日期或条件之后安排错误。
这是一些背景信息:
我有一个 android 应用程序已翻译成多种语言,我已将其设置为 lint
在缺少翻译时失败并显示错误。显然,这样做是为了防止未翻译的字符串泄露到野外。
每当有新的 string
资源时,它需要一段时间才能被翻译,在此期间 lint
会失败。
这可以被抑制,或者字符串可以被标记为不可翻译,但这超出了首先进行检查的目的。
除了该上下文之外,还有很多特定设置为 "temporary" 的情况。我不喜欢每次都要记得按回拨开关。
构建在 CI 服务器上,发布通常发生在团队中,任何人都可以 "temporarily" 忽略警告。 有没有一种自动的方法来确保发布时不会忽略事情?
更新: 自从问了这个问题,有人开发了一个库,它可以满足我的要求,甚至更多:https://github.com/Stuie/papercut
我不知道您如何确定何时 de/activate lint。但这也许有帮助:
您可以在 gradle 脚本中使用布尔值切换 Lint on/off:
android {
lintOptions {
if (lintOn){
checkReleaseBuilds true
abortOnError true
} else {
checkReleaseBuilds false
abortOnError false
}
}
}
将 lintOn=false
添加到您的 gradle.properties,否则 gradle 将无法将其识别为变量。
现在你可以添加一个任务并在构建任务之前使其成为 运行:
task preBuild << {
// do stuff to determin if lint should run
lintOn = true
}
build.dependsOn preBuild
在此 preBuild 任务中,您现在可以执行一些代码来检查是否应该 运行 lint。
Here 是任务可以做什么的一些很好的例子。