Android Lint - 忽略noinspection AndroidLintDefaultLocale

时间:2015-06-04 15:49:21

标签: android

在我的代码的一部分中,我需要强制一个字符串为小写 - 这个字符串来自一个常量,因此总是英语。

String table = DirectoryTableModule.DirectoryContract.TABLE_NAME.toLowerCase();

这当然会引发皮棉警告:

  

隐式使用默认语言环境是常见的错误来源:使用toLowerCase(Locale)代替

     

调用String#toLowerCase()#toUpperCase() 而不指定显式区域设置是错误的常见来源。原因是这些方法将使用用户设备上的当前区域设置,即使代码在开发应用程序时似乎正常工作,它也会在某些区域设置中失败。例如,在土耳其语区域设置中,i的大写替换为 I。如果您希望方法只执行ASCII替换,例如转换枚举名称,请改为调用String#toUpperCase(Locale.US)。如果您确实想使用当前的区域设置,请改为呼叫String#toUpperCase(Locale.getDefault())

很自然地,我在这行代码上面添加了适当的忽略注释:

//noinspection AndroidLintDefaultLocale
String table = DirectoryTableModule.DirectoryContract.TABLE_NAME.toLowerCase();

这似乎满足了IDE(Android Studio 1.2.1.1),但在我们的CI服务器(Jenkins)上运行的lint仍然显示为警告。

如果有帮助,Jenkins会显示它有Android SDK附带的lint二进制版本24.3。

如何在CI服务器上运行lint以接受此无检测注释?

1 个答案:

答案 0 :(得分:0)

一种选择就是给它一个Locale

您可以使用@SuppressLint("DefaultLocale")注释docs here