【问题标题】:How can I find all hard coded strings in my project in Android Studio如何在 Android Studio 的项目中找到所有硬编码字符串
【发布时间】:2014-09-22 12:10:34
【问题描述】:

我需要在 Android Studio (beta) 0.84 的项目中查找并提取所有硬编码字符串。 我需要一个像 Find Bugs 这样的静态分析工具一次性为我完成这项工作,并允许我逐步浏览每条消息并将字符串提取到资源文件中。如果整个过程是自动化的,那就更好了。

在 Android Studio(测试版)0.84 中,文件/设置/FindBugs-IDEA 将 I18N 显示为报告选项卡下的一个选项。 但我就是不知道如何让它发挥作用。

感谢您的任何建议。

【问题讨论】:

    标签: android internationalization android-studio


    【解决方案1】:

    转到“分析 > 按名称运行检查...”,然后键入“硬编码文本”。对你的整个项目运行那个,你应该会得到一个检查结果面板,它将显示硬编码的文本实例。

    您还可以转到 Android Studio > 首选项 > 检查 > 硬编码文本并准确指定其运行方式,以及哪些(如果有)特殊情况被排除在检查之外。

    【讨论】:

    • 这很棒!谢谢。顺便说一句,是否有任何工具可以使用基于文本生成的资源 ID 自动将字符串提取到 values.xml 文件中?那将是一个很大的帮助。然后可以将资源 id 名称重构为更短的名称。
    • 我不知道自动,但我相信如果您突出显示其中一个字符串并按 Option-Enter,您将获得自动提取该字符串的选项,但您必须手动输入名称。
    • +1 Android Studio 的一个非常酷的功能。有没有人找到从结果中排除 android.util.Log 消息的方法? (大约 95% 的结果!)
    • 有关信息:Android Studio 1.2.2 在“按名称运行检查”=>“硬编码字符串”中添加了一个新选项。当前版本似乎比“硬编码文本”更可靠。在这里看到link
    • @PAD 你应该把它写成答案。硬编码文本仅返回 xml 文件。 ty :)
    【解决方案2】:

    如果您只想在所有布局文件中查找所有硬编码字符串,您可以通过运行 -

    快速完成
    vinayak@vinayak-osx:layout $ grep -n "android:text=\"" * | grep -v "@string"
    

    注意事项 -
    1.grep不能在windows上使用
    2.首先cd到项目的layout目录
    3. kcoppock 答案很好,但是太费时间了

    【讨论】:

    • grep 命令效果很好,但是还要在命令中添加如何忽略数据绑定
    【解决方案3】:

    正如@Maor Hadad 和其他支持者向我建议的那样:我将我的评论转换为答案,所以:

    从 Android Studio 1.2.2 开始,有一个新选项

    "Analyse > Run inspection By Name" => "Hardcoded strings".

    我使用了它,当前版本似乎比“硬编码文本”(仅检查 xml 文件)更可靠。

    在这里看到link

    【讨论】:

    • 请注意,Hardcoded Text 检查返回 .XML 文件中的硬编码文本,而 Hardcoded Strings 检查返回 .java 文件中的硬编码文本。
    • 请在此处查看我对类似问题的回答stackoverflow.com/a/56121083/3904109
    • 我有一个类似的任务,但我的 Flutter 项目。上面提到的检查没有带来预期的结果,所以我尝试了一个正则表达式。 ".+\Q\E 如果你用单引号代替双引号,你会得到单引号内的所有字符串。
    【解决方案4】:

    使用 Ctrl + Shift + F 组合对 Windows 进行搜索,它也显示预览。

    Windows 使用 Ctrl + F 组合搜索当前文件。

    Windows 使用 Shift + Shift (Double Shift) 组合搜索 Project 的 Project File。

    可能不适用于旧版本。

    【讨论】:

      【解决方案5】:

      对于 Windows 平台,我发现最好的方法是:

      您可以使用此快捷方式Ctrl Alt Shift I 并搜索,

      硬编码文本

      在搜索栏中。

      您可以选择要在其中搜索硬编码字符串的适当模块,它会为您提供所有字符串的列表。

      【讨论】:

        【解决方案6】:

        对我来说很好的是使用正则表达式搜索整个项目:

        android:text="[a-z]

        在这些 kotlin/java 类中查找:

        [.]text = "[a-z]

        [.]setText("

        别忘了点击上图最后的 .* 蓝色按钮

        【讨论】:

          猜你喜欢
          • 2015-10-07
          • 2015-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-24
          • 1970-01-01
          • 1970-01-01
          • 2016-06-04
          相关资源
          最近更新 更多