Как определить овалы переменных ресурса в Android Studio (например: "% 1 $s" )
Аварии Android часто вызваны ресурсом, содержащим %1$ s
, когда был назначен %1$s
.
К моему удивлению, Android Studio не показывает эти синтаксические ошибки:
![введите описание изображения здесь]()
↑ Настоящая синтаксическая ошибка выше - это %1$ s
(делает сбой приложения), а не многоточие, которое выделяет Android Studio.
Как проверить опечатки переменных ресурса в Android Studio?
Я ищу эквивалент lint --check StringFormatInvalid
.
Контекст: многие полуавтоматические инструменты перевода языка прерывают переменные, что приводит к сбою приложений.
То, что я пробовал, не работает:
![Инспекции уровня подсветки]()
Ответы
Ответ 1
в Intellij можно создавать собственные проверки. Я не уверен, что это возможно в Android Studio.
Следуйте по ссылке:
https://www.jetbrains.com/idea/help/creating-custom-inspections.html
изменить:
следуйте инструкциям в ссылке, которую вы видите на следующем изображении моей созданной инспекции:
![введите описание изображения здесь]()
На следующем изображении вы увидите основную конфигурацию проверки:
![введите описание изображения здесь]()
В следующих двух изображениях вы увидите настройку переменных.
Только используемое регулярное выражение не готово. Вы должны написать его для общей переменной, используя (между $и. Is пробел):
![введите описание изображения здесь]()
Ответ 2
Каждая вещь в strings.xml
между <string>
и </string>
является просто строкой для студии Android и lint. Он не будет идентифицировать опечатки синтаксиса. Синтаксические ошибки/опечатки означают ошибку с кодом, а не с строками. Вам нужно убедиться, что они написаны сами по себе или создайте свой собственный script, чтобы выполнить эти проверки в файле string.xml
. Нет встроенного механизма для идентификации кода в строках, а затем проверки на наличие синтаксических ошибок в них.
Выбранная вещь с эллипсами существует, потому что это грамматическая (оптимизационная) ошибка. Если вы выполните орфографическую/грамматическую ошибку в strings.xml
, она будет выделена. Пример ниже:
![введите описание изображения здесь]()
Но если вы намерены вставлять в формат/код в виде строк, его нужно обрабатывать самостоятельно или использовать какой-то пользовательский script, который вам нужно будет написать самостоятельно. Или, как упоминалось в @Rüdiger в своем комментарии к вопросу, вы можете написать unit test случаи, чтобы проверить правильность и целостность ваших строк в strings.xml
.