Как определить овалы переменных ресурса в Android Studio (например: "% 1 $s" )

Аварии Android часто вызваны ресурсом, содержащим %1$ s, когда был назначен %1$s.
К моему удивлению, Android Studio не показывает эти синтаксические ошибки:

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

↑ Настоящая синтаксическая ошибка выше - это %1$ s (делает сбой приложения), а не многоточие, которое выделяет Android Studio.

Как проверить опечатки переменных ресурса в Android Studio?
Я ищу эквивалент lint --check StringFormatInvalid.

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

То, что я пробовал, не работает:

Android Studio Lint Недопустимая строка формата Инспекции уровня подсветки

Ответы

Ответ 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.