如何安排`lint`错误(更新:使用剪纸)

时间:2016-07-29 15:26:51

标签: android gradle continuous-integration lint release-management

我正在寻找一种方法来暂时禁止lint错误或在特定日期或条件之后安排错误。

这里有一些背景信息:

我有一个Android应用程序,它被翻译成多种语言并且我已将其设置为lint如果缺少翻译而失败并显示错误。显然这样做是为了使未翻译的琴弦不会逃到野外。 每当有新的string资源时,它需要一段时间才能被翻译,在此期间lint失败。 这可以被抑制,或者字符串可以被标记为不可翻译,但这样做的目的就是首先进行检查。

除了上下文之外,当特定设置为"临时"时,还有更多实例。我不想记得翻转每一个开关。

构建在CI服务器上,经常发布,并且这发生在任何人都能够暂时"忽略警告。 是否有一种自动化的方法可以确保在发布时不会忽略某些内容?

更新 自从提出这个问题以来,有人开发了一个能满足我的要求的图书馆:https://github.com/Stuie/papercut

1 个答案:

答案 0 :(得分:3)

我不知道你何时去除/激活棉绒。但也许这会有所帮助:
您可以使用gradle脚本中的布尔值打开/关闭Lint:

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是任务可以做的一些很好的例子。