Как найти все жестко закодированные строки в моем проекте в Android Studio

89

Мне нужно найти и извлечь все жестко закодированные строки в моем проекте в Android Studio (бета) 0.84. Мне нужен инструмент статического анализа, такой как Find Bugs, который делает это за меня одним выстрелом и позволяет мне просматривать каждое сообщение и извлекать строку в файлы ресурсов. Еще лучше было бы, если бы весь процесс был автоматизирован.

В Android Studio (бета) 0.84 File / Setting / FindBugs-IDEA показывает I18N в качестве опции на вкладке Reporting. Но я просто не могу понять, как заставить его работать.

Спасибо за любые предложения.

Фаррух Наджми
источник

Ответы:

125

Как подсказал мне @Maor Hadad и другие участники голосования: я конвертирую свой комментарий в ответ, поэтому:

Начиная с Android Studio 1.2.2, в

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

Я использовал его, и с текущей версией он кажется более надежным, чем «жестко закодированный текст» (который проверяет только файлы xml).

Здесь ссылка

PAD
источник
32
Имейте в виду, что Hardcoded Textпроверка возвращает жестко закодированные тексты в .XMLфайлах, тогда как Hardcoded Stringsпроверка возвращает жестко закодированные тексты в .javaфайлах.
Loyalar
Пожалуйста , смотрите мой ответ на аналогичную проблему здесь stackoverflow.com/a/56121083/3904109
DragonFire
У меня была аналогичная задача, но для моего проекта Flutter. Упомянутая выше проверка не принесла ожидаемых результатов, поэтому я попробовал Regex. ".+\Q\Eесли вы замените двойные кавычки одиночными, вы получите все строки в одинарных кавычках.
pbertsch
115

Перейдите к «Анализировать> Выполнить проверку по имени ...» и введите «Жестко заданный текст». Запустите его для всего проекта, и вы должны получить панель результатов проверки, которая будет отображать жестко закодированные текстовые экземпляры.

Вы также можете перейти в Android Studio> Preferences> Inspections> Hardcoded text и указать, как именно он работает, и какие (если есть) особые случаи исключены из проверки.

Кевин Коппок
источник
2
Это сработало потрясающе! Спасибо. Кстати, есть ли какие-либо инструменты, которые автоматически извлекают строки в файл values.xml, используя сгенерированный идентификатор ресурса на основе текста? Это было бы большим подспорьем. Затем можно просто перейти и изменить имена идентификаторов ресурсов на что-то более короткое.
Фаррух Наджми
Я не знаю об автоматическом режиме, но я считаю, что если вы выделите одну из строк и нажмете Option-Enter, вы получите возможность автоматически извлечь эту строку, но вам придется вводить имя вручную.
Кевин Коппок
3
+1 очень крутая функция Android Studio. Кто-нибудь нашел способ исключить сообщения android.util.Log из результатов? (около 95% моих результатов!)
Бен Клейтон
6
Для информации: Android Studio 1.2.2 добавила новую опцию в «Выполнить проверку по имени» => «Жестко запрограммированные строки». С текущей версией это кажется более надежным, чем «жестко закодированный текст». См. Здесь ссылка
PAD
@PAD вы должны написать это как ответ. Жестко закодированный текст возвращает только файлы xml. ty :)
Maor Hadad
11

Для платформы Windows лучший способ, который я нашел, это:

Вы можете использовать этот ярлык Ctrl Alt Shift Iи искать,

Жестко закодированный текст

в строке поиска.

Вы можете выбрать соответствующий модуль, в котором вы хотите искать жестко заданные строки, и он предоставит вам список всех строк вместе.

Варианты выбора модулей

TapanHP
источник
1

Если вы просто хотите найти все жестко закодированные строки только во всех файлах макета, вы можете сделать это очень быстро, запустив -

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

Примечания -
1. grepне могут быть использованы на окнах
2. Во- первых , cdчтобы проекта layoutреж
3. kcoppock ответ велик, но это занимает слишком много времени

Винаяк Гарг
источник
Команда grep работает хорошо, но добавьте, как игнорировать привязку данных в команде
kashyap
1

Используйте Ctrl+ Shift+F комбинацию для поиска в Windows везде, он также показывает предварительный просмотр.

Используйте Ctrl+F комбинацию для Windows для поиска в текущем файле.

Используйте Shift+Shift комбинацию (двойной Shift) для Windows для поиска файла проекта проекта.

Может быть недоступен для более старых версий.

Джитеш Праджапати
источник
0

То, что сработало для меня, было поиском по всему проекту с использованием регулярного выражения:

android: text = "[аз]

инструменты: text = "[az]

введите описание изображения здесь

в этом случае только для файлов xml (ищем android: text = "....)

не забудьте нажать на синюю кнопку. * в самом конце изображения выше

Игорь Майя Ромси
источник