private XmlVisitor getVisitor(ResourceFolderType type, List<ResourceXmlDetector> checks) { if (type != mCurrentFolderType) { mCurrentFolderType = type; // Determine which XML resource detectors apply to the given folder type List<ResourceXmlDetector> applicableChecks = new ArrayList<ResourceXmlDetector>(checks.size()); for (ResourceXmlDetector check : checks) { if (check.appliesTo(type)) { applicableChecks.add(check); } } // If the list of detectors hasn't changed, then just use the current visitor! if (mCurrentXmlDetectors != null && mCurrentXmlDetectors.equals(applicableChecks)) { return mCurrentVisitor; } if (applicableChecks.size() == 0) { mCurrentVisitor = null; return null; } mCurrentVisitor = new XmlVisitor(mClient.getParser(), applicableChecks); } return mCurrentVisitor; }
@Override public void afterCheckProject(@NonNull Context context) { if (mPendingFields != null) { for (List<Pair<String, Location>> list : mPendingFields.values()) { for (Pair<String, Location> pair : list) { String message = pair.getFirst(); Location location = pair.getSecond(); context.report(INLINED, location, message); } } } super.afterCheckProject(context); }
@Override public void visitAttribute(@NonNull XmlContext context, @NonNull Attr attribute) { super.visitAttribute(context, attribute); context.report(ISSUE, attribute, context.getLocation(attribute), ""); } }
@Override public boolean appliesTo(@NonNull Context context, @NonNull File file) { if (LintUtils.endsWith(file.getName(), DOT_JAVA)) { return mFormatStrings != null; } return super.appliesTo(context, file); }
new ArrayList<>(checks.size()); for (ResourceXmlDetector check : checks) { if (check.appliesTo(type)) { applicableXmlChecks.add(check);