如何安排 `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 是任务可以做什么的一些很好的例子。