我正在为我的项目设置自定义棉绒规则,并且在特定情况下无法显示错误。
我的自定义规则应查找字符串文件,并检查每个字符串值是否以特定字符结尾。
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 上的错误?