如何在kotlin中找到硬编码的字符串

时间:2018-02-13 18:23:48

标签: android-studio kotlin lint

Android studio lint不适用于kotlin项目。 我找不到硬编码的字符串。 什么可以解决这个问题?

4 个答案:

答案 0 :(得分:0)

使用“编辑/查找” /“在路径中查找”(在Mac上,快捷键为Cmd + Shift + F)。

然后选择“ Regex?”上的复选框在“查找路径”窗口的顶部,然后在搜索输入中键入\"*\"

然后选择在目录中搜索,然后选择包含kotlin文件的目录。在/activities/fragments(以及可能包含kotlin代码的任何其他目录)中分别进行搜索。

(要搜索原始字符串,请使用\"\"\"*\"。)

Screenshot of "Find in Path" search for strings example

我不确定这是否是100%可靠的解决方案,但是它对我有用。 “分析->按名称运行检查”,然后键入“硬编码字符串” 对我不起作用。

答案 1 :(得分:0)

执行这些对我有用的步骤

  • 下载Android Studio 3.2(立即预览)
  • 在项目窗口中打开查找(对于Mac,为cmd + shift + F)
  • 选中Regex复选框(右上角)。
  • 检查文件掩码(Regex旁边),然后输入Dim i(0 To 1) As Integer 'Using negatives to prove things aren't longs, because of the sign bit i(0) = -2 ^ 15 + (2 ^ 0) '10000000 00000001 i(1) = -2 ^ 15 + (2 ^ 1) '10000000 00000010 Dim bytes(0 To 3) As Byte CopyMemory VarPtr(bytes(0)), VarPtr(i(0)), 4 Dim l As Long For l = 3 To 0 Step -1 Debug.Print ToBits(bytes(l)) & " "; 'Prints 10000000 00000010 10000000 00000001 Next 'Now, let's write something back bytes(0) = &HFF '0xFFFF = signed -1 bytes(1) = &HFF CopyMemory VarPtr(i(0)), VarPtr(bytes(0)), 2 Debug.Print i(0) '-1 或从菜单中选择*.kt 下拉。
  • 键入此正则表达式kt,您现在可以看到结果。
  • 如果未格式化代码,则使用此正则表达式= \"\w+\"搜索 正确。

答案 2 :(得分:0)

我建议在Kotlin中使用Detekt进行静态分析,特别是string literal duplication

答案 3 :(得分:0)

嗯,大概有一个更新。 Kotlin IDE确实了解org.jetbrains.annotations.PropertyKey 11,但它并不总是有效。 如果捆绑包包含多种语言,我会遇到问题。

示例:

fun message(@PropertyKey(resourceBundle = "Messages") id: String) =
        ResourceBundle.getBundle("Messages").getString(sid) ?: "###$id###"

更多访问:https://developer.android.com/studio/write/lint#src