Как использовать исправление в xml и kotlin с android lint api? - PullRequest
0 голосов
/ 09 июля 2020

Я пишу собственное правило lint, чтобы убедиться, что все строки ресурса имеют одинаковый суффикс. В противном случае мы получим предупреждение в IDE. И в то же время хотелось бы реализовать в этом детекторе quickfix. Однако я не знаю, как переименовать строковые ресурсы в kotlin файлах / макете, которые используют этот строковый ресурс

Я нашел несколько подсказок в этом видео (https://youtu.be/p8yX5-lPS6o?t=1170) но я не могу найти соответствующий пример для моей проблемы.

class StringResourceNamingDetector : ResourceXmlDetector() {

    override fun appliesTo(folderType: ResourceFolderType) =
        EnumSet.of(ResourceFolderType.VALUES).contains(folderType)

    override fun getApplicableElements() = listOf(SdkConstants.TAG_STRING)

    override fun visitElement(context: XmlContext, element: Element) {
        val child = element.children().firstOrNull()
        val stringResValue = child?.nodeValue ?: ""
        val stringResName = element.getAttributeNode("name").value
        val namingSuffix = "mysuffix"

        if (!stringResName.endsWith(namingSuffix)) {
            context.report(ISSUE_STRING_RESOURCE_NAMING, element, context.getValueLocation(element.getAttributeNode("name")), "String should contains $namingSuffix as suffix")
        }
    }
}
...