【问题标题】:How to find hardcoded strings in kotlin如何在 kotlin 中找到硬编码的字符串
【发布时间】:2018-07-24 04:53:39
【问题描述】:

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

【问题讨论】:

    标签: android-studio kotlin lint


    【解决方案1】:

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

    然后选择“正则表达式?”在“在路径中查找”窗口顶部并在搜索输入中键入 \"*\"

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

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

    Screenshot of "Find in Path" search for strings example

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

    【讨论】:

      【解决方案2】:

      这些步骤对我有用

      • 下载 Android Studio 3.2(目前处于预览阶段)
      • 在项目窗口中打开查找(Mac 为 cmd + shift + F)
      • 选中正则表达式复选框(右上角)。
      • 检查文件掩码(Regex 旁边)并输入 *.kt 或从 下拉。
      • 输入这个正则表达式= \"\w+\"你现在可以看到结果了。
      • 如果代码未格式化,请使用此正则表达式 =\"\w+\" 搜索 正确。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          啊,实际上有一个更新。 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

          【讨论】:

            猜你喜欢
            • 2014-09-22
            • 2015-10-07
            • 1970-01-01
            • 1970-01-01
            • 2022-11-23
            • 1970-01-01
            • 1970-01-01
            • 2021-03-14
            • 1970-01-01
            相关资源
            最近更新 更多