Android绒毛-自定义规则不适用于某些情况

时间:2019-10-01 13:50:25

标签: android lint

我正在为我的项目设置自定义棉绒规则,并且在特定情况下无法显示错误。

我的自定义规则应查找字符串文件,并检查每个字符串值是否以特定字符结尾。

strings.xml

<resources>
<string name="app_name">My Application %</string>

InvalidStringResourceDetector:

public class InvalidStringResourceDetector extends ResourceXmlDetector {

@Override
public boolean appliesTo(ResourceFolderType folderType) {
    return folderType == ResourceFolderType.VALUES;
}

@Nullable
@Override
public Collection<String> getApplicableElements() {
    return Collections.singletonList(TAG_STRING);
}


@Override
public void visitElement(XmlContext context, Element element) {
    final String text = element.getTextContent();
    final String matchChar = "%";
    int index = text.indexOf(matchChar);

    if (index == text.length() - 1) {
        context.report(InvalidStringResourceIssue.ISSUE, element, context.getLocation(element), InvalidStringResourceIssue.EXPLANATION);
    }
}
}

使用此检测器,在 strings.xml 文件上没有任何错误。只有运行./gradlew lintDebug,我才会得到预期的错误。 如果更改检测器的if条件,则按预期方式工作-> strings.xml显示红线,突出显示错误:

if (text.contains(matchChar)) {
        context.report(InvalidStringResourceIssue.ISSUE, element, context.getLocation(element), InvalidStringResourceIssue.EXPLANATION);
}

matchChar是最后一个字符时,如何突出显示 strings.xml 上的错误?

0 个答案:

没有答案