/** * Determine if the given type corresponds to a resource that has a unique * file * * @param type the resource type to check * @return true if the given type corresponds to a file-type resource */ public static boolean isFileBasedResourceType(ResourceType type) { List<ResourceFolderType> folderTypes = FolderTypeRelationship.getRelatedFolders(type); for (ResourceFolderType folderType : folderTypes) { if (folderType != ResourceFolderType.VALUES) { if (type == ResourceType.ID) { return false; } return true; } } return false; }
@Override public boolean appliesTo(@NonNull ResourceFolderType folderType) { return FolderTypeRelationship.isIdGeneratingFolderType(folderType); }
@Nullable private Resource getResourceByJarPath(String path) { // Jars use forward slash paths, not File.separator if (path.startsWith("res/")) { int folderStart = 4; // "res/".length int folderEnd = path.indexOf('/', folderStart); if (folderEnd != -1) { String folderName = path.substring(folderStart, folderEnd); ResourceFolderType folderType = ResourceFolderType.getFolderType(folderName); if (folderType != null) { int nameStart = folderEnd + 1; int nameEnd = path.indexOf('.', nameStart); if (nameEnd != -1) { String name = path.substring(nameStart, nameEnd); List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes(folderType); for (ResourceType type : types) { if (type != ResourceType.ID) { Resource resource = getResource(type, name); if (resource != null) { return resource; } } } } } } } return null; }
String name = path.substring(nameStart, nameEnd); List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes(folderType); for (ResourceType type : types) { if (type != ResourceType.ID) {
ResourceFolderType folderType = ResourceFolderType.getFolderType(folderName); if (folderType != null) { List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes( folderType); if (!types.isEmpty()) {
/** * Determine if the given type corresponds to a resource that has a unique * file * * @param type the resource type to check * @return true if the given type corresponds to a file-type resource */ public static boolean isFileBasedResourceType(@NonNull ResourceType type) { List<ResourceFolderType> folderTypes = FolderTypeRelationship.getRelatedFolders(type); for (ResourceFolderType folderType : folderTypes) { if (folderType != ResourceFolderType.VALUES) { return type != ResourceType.ID; } } return false; }
ResourceFolderType folderType = ResourceFolderType.getFolderType(folderName); if (folderType != null) { List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes( folderType); if (!types.isEmpty()) {
if (mManifestLocations.containsKey(name)) { List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes(folderType); for (ResourceType type : types) { reportIfFound(context, qualifiers, name, type, document.getDocumentElement());
@Override public void beforeCheckFile(@NonNull Context context) { File file = context.file; boolean isXmlFile = LintUtils.isXmlFile(file); if (!isXmlFile && !LintUtils.isBitmapFile(file)) { return; } String parentName = file.getParentFile().getName(); int dash = parentName.indexOf('-'); if (dash != -1 || FD_RES_VALUES.equals(parentName)) { return; } ResourceFolderType folderType = ResourceFolderType.getFolderType(parentName); if (folderType == null) { return; } List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes(folderType); if (types.isEmpty()) { return; } ResourceType type = types.get(0); String resourceName = getResourceFieldName(getBaseName(file.getName())); if (isPrivate(context, type, resourceName)) { String message = createOverrideErrorMessage(context, type, resourceName); Location location = Location.create(file); context.report(ISSUE, location, message); } }
@Override public void beforeCheckFile(@NonNull Context context) { File file = context.file; boolean isXmlFile = LintUtils.isXmlFile(file); if (!isXmlFile && !LintUtils.isBitmapFile(file)) { return; } String parentName = file.getParentFile().getName(); int dash = parentName.indexOf('-'); if (dash != -1 || FD_RES_VALUES.equals(parentName)) { return; } ResourceFolderType folderType = ResourceFolderType.getFolderType(parentName); if (folderType == null) { return; } List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes(folderType); if (types.isEmpty()) { return; } ResourceType type = types.get(0); String resourceName = getResourceFieldName(getBaseName(file.getName())); if (isPrivate(context, type, resourceName)) { String message = createOverrideErrorMessage(context, type, resourceName); Location location = Location.create(file); context.report(ISSUE, location, message); } }
public void visitXmlDocument( @NonNull File file, @Nullable ResourceFolderType folderType, @NonNull Document document) { if (folderType == null) { // Manifest file recordManifestUsages(document.getDocumentElement()); return; } Resource from = null; if (folderType != ResourceFolderType.VALUES) { // Record resource for the whole file List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes( folderType); ResourceType type = types.get(0); assert type != ResourceType.ID : folderType; String name = LintUtils.getBaseName(file.getName()); from = declareResource(type, name, document.getDocumentElement()); } else if (isAnalyticsFile(file)) { return; } nextInlinedResourceSuffix = 1; // For value files, and drawables and colors etc also pull in resource // references inside the context.file recordResourceReferences(folderType, document.getDocumentElement(), from); if (folderType == ResourceFolderType.XML) { tokenizeUnknownText(readText(file)); } }
|| endsWith(path, DOT_GIF) || endsWith(path, DOT_JPEG))) { List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes( folderType); ResourceType type = types.get(0);
public void visitBinaryResource( @Nullable ResourceFolderType folderType, @NonNull File file) { Resource from = null; if (folderType != ResourceFolderType.VALUES) { // Record resource for the whole file List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes( folderType); ResourceType type = types.get(0); assert type != ResourceType.ID : folderType; String name = LintUtils.getBaseName(file.getName()); from = declareResource(type, name, null); } if (folderType == ResourceFolderType.RAW) { // Is this an HTML, CSS or JavaScript document bundled with the app? // If so tokenize and look for resource references. String path = file.getPath(); if (endsWithIgnoreCase(path, ".html") || endsWithIgnoreCase(path, ".htm")) { tokenizeHtml(from, readText(file)); } else if (endsWithIgnoreCase(path, ".css")) { tokenizeCss(from, readText(file)); } else if (endsWithIgnoreCase(path, ".js")) { tokenizeJs(from, readText(file)); } else if (file.isFile() && !LintUtils.isBitmapFile(file)) { tokenizeUnknownBinary(from, file); } } }