如何在Android Studio中的项目中找到所有硬编码的字符串


89

我需要在Android Studio(测试版)0.84中找到并提取项目中的所有硬编码字符串。我需要一个静态分析工具,例如“查找错误”,一口气为我做到这一点,并让我逐步浏览每条消息并将字符串提取到资源文件中。如果整个过程是自动化的,那就更好了。

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

感谢您的任何建议。

Answers:


124

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

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

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

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

在这里看到链接


32
请注意,Hardcoded Text检查会返回.XML文件中的硬编码文本,而Hardcoded Strings检查会返回.java文件中的硬编码文本。
Loyalar

请在这里查看我对类似问题的答案stackoverflow.com/a/56121083/3904109
DragonFire

我有类似的任务,但我的Flutter Project却是如此。上述检查没有带来预期的结果,所以我尝试了一个正则表达式。".+\Q\E如果将双引号替换为单引号,则将所有字符串都包含在单引号中。
pbertsch

115

转到“分析>按名称运行检查...”,然后键入“硬编码文本”。在整个项目中运行该代码,您将获得一个检查结果面板,其中将显示硬编码的文本实例。

您还可以转到Android Studio>“偏好设置”>“检查”>“硬编码文本”,并确切指定其运行方式,以及哪些特殊情况(如果有)不包括在检查范围内。


2
这很棒!谢谢。顺便说一句,是否有任何工具可以使用基于文本的生成的资源ID将字符串自动提取到values.xml文件?那将是很大的帮助。这样一来,您就可以将资源ID名称重新命名为较短的名称。
Farrukh Najmi 2014年

我不了解自动,但我相信如果您突出显示其中一个字符串并按Option-Enter,您将获得自动提取该字符串的选项,但您必须手动键入名称。
凯文·科波克

3
+1了Android Studio的一项非常酷的功能。有没有人找到一种从结果中排除android.util.Log消息的方法?(约占我结果的95%!)
Ben Clayton 2014年

6
有关信息:Android Studio 1.2.2在“按名称运行检查” =>“硬编码字符串”中添加了新选项。当前版本似乎比“硬编码文本”更可靠。看到这里的链接
PAD

@PAD,您应该将其写为答案。硬编码的文本仅返回xml文件。ty :)
Maor Hadad

11

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

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

硬编码文本

在搜索栏中。

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

选择模块的选项


1

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

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

注意事项-1
.grep不能在Windows上使用
2.首先cd进入项目的layout目录
3. kcoppock的答案很好,但是需要太多时间


grep命令效果很好,但是在命令中也添加了如何忽略数据绑定的方法
kashyap

1

使用Windows的Ctrl+ Shift+F组合可以在任何地方搜索,并且还显示预览。

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

使用Windows的Shift+ Shift(双移位)组合搜索Project的Project File。

可能不适用于旧版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.