diff options
Diffstat (limited to 'lint/libs')
33 files changed, 138 insertions, 134 deletions
diff --git a/lint/libs/lint_api/.classpath b/lint/libs/lint_api/.classpath index 12d1046..742729e 100644 --- a/lint/libs/lint_api/.classpath +++ b/lint/libs/lint_api/.classpath @@ -5,5 +5,6 @@ <classpathentry combineaccessrules="false" kind="src" path="/common"/> <classpathentry kind="var" path="ANDROID_SRC/prebuilts/tools/common/asm-tools/asm-4.0.jar" sourcepath="/ANDROID_SRC/prebuilts/tools/common/asm-tools/src.zip"/> <classpathentry kind="var" path="ANDROID_SRC/prebuilts/tools/common/asm-tools/asm-tree-4.0.jar" sourcepath="/ANDROID_SRC/prebuilts/tools/common/asm-tools/src.zip"/> + <classpathentry kind="var" path="ANDROID_SRC/prebuilts/tools/common/guava-tools/guava-10.0.1.jar" sourcepath="/ANDROID_SRC/prebuilts/tools/common/guava-tools/src.zip"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/lint/libs/lint_api/Android.mk b/lint/libs/lint_api/Android.mk index b089ef1..0d3d7e9 100644 --- a/lint/libs/lint_api/Android.mk +++ b/lint/libs/lint_api/Android.mk @@ -23,7 +23,8 @@ LOCAL_JAVA_LIBRARIES := \ common LOCAL_STATIC_JAVA_LIBRARIES := \ asm-tools \ - asm-tree-tools + asm-tree-tools \ + guava-tools LOCAL_MODULE := lint_api LOCAL_MODULE_TAGS := optional diff --git a/lint/libs/lint_api/src/com/android/tools/lint/client/api/Configuration.java b/lint/libs/lint_api/src/com/android/tools/lint/client/api/Configuration.java index 2cf7598..461c438 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/client/api/Configuration.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/client/api/Configuration.java @@ -20,6 +20,7 @@ import com.android.tools.lint.detector.api.Context; import com.android.tools.lint.detector.api.Issue; import com.android.tools.lint.detector.api.Location; import com.android.tools.lint.detector.api.Severity; +import com.google.common.annotations.Beta; /** * Lint configuration for an Android project such as which specific rules to include, @@ -28,6 +29,7 @@ import com.android.tools.lint.detector.api.Severity; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public abstract class Configuration { /** * Checks whether this issue should be ignored because the user has already diff --git a/lint/libs/lint_api/src/com/android/tools/lint/client/api/DefaultConfiguration.java b/lint/libs/lint_api/src/com/android/tools/lint/client/api/DefaultConfiguration.java index 168e759..1f3d9e9 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/client/api/DefaultConfiguration.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/client/api/DefaultConfiguration.java @@ -21,6 +21,7 @@ import com.android.tools.lint.detector.api.Issue; import com.android.tools.lint.detector.api.Location; import com.android.tools.lint.detector.api.Project; import com.android.tools.lint.detector.api.Severity; +import com.google.common.annotations.Beta; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -50,11 +51,11 @@ import javax.xml.parsers.DocumentBuilderFactory; /** * Default implementation of a {@link Configuration} which reads and writes * configuration data into {@code lint.xml} in the project directory. - * * <p/> * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public class DefaultConfiguration extends Configuration { private final LintClient mClient; private static final String CONFIG_FILE_NAME = "lint.xml"; //$NON-NLS-1$ diff --git a/lint/libs/lint_api/src/com/android/tools/lint/client/api/DefaultSdkInfo.java b/lint/libs/lint_api/src/com/android/tools/lint/client/api/DefaultSdkInfo.java index 3274ee0..7ca3fab 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/client/api/DefaultSdkInfo.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/client/api/DefaultSdkInfo.java @@ -56,10 +56,18 @@ import static com.android.tools.lint.detector.api.LintConstants.VIEW_STUB; import static com.android.tools.lint.detector.api.LintConstants.VIEW_SWITCHER; import static com.android.tools.lint.detector.api.LintConstants.WIDGET_PKG_PREFIX; +import com.google.common.annotations.Beta; + import java.util.HashMap; import java.util.Map; -/** Default simple implementation of an {@link SdkInfo} */ +/** + * Default simple implementation of an {@link SdkInfo} + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> + */ +@Beta class DefaultSdkInfo extends SdkInfo { @Override public String getParentViewName(String name) { diff --git a/lint/libs/lint_api/src/com/android/tools/lint/client/api/IDomParser.java b/lint/libs/lint_api/src/com/android/tools/lint/client/api/IDomParser.java index 9c40bd8..743e0c5 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/client/api/IDomParser.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/client/api/IDomParser.java @@ -19,6 +19,7 @@ package com.android.tools.lint.client.api; import com.android.tools.lint.detector.api.Context; import com.android.tools.lint.detector.api.Location; import com.android.tools.lint.detector.api.XmlContext; +import com.google.common.annotations.Beta; import org.w3c.dom.Document; import org.w3c.dom.Node; @@ -30,6 +31,7 @@ import org.w3c.dom.Node; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public interface IDomParser { /** * Parse the file pointed to by the given context and return as a Document diff --git a/lint/libs/lint_api/src/com/android/tools/lint/client/api/IssueRegistry.java b/lint/libs/lint_api/src/com/android/tools/lint/client/api/IssueRegistry.java index 0c11ba9..3616b5e 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/client/api/IssueRegistry.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/client/api/IssueRegistry.java @@ -21,6 +21,7 @@ import com.android.tools.lint.detector.api.Detector; import com.android.tools.lint.detector.api.Issue; import com.android.tools.lint.detector.api.Scope; import com.android.tools.lint.detector.api.Severity; +import com.google.common.annotations.Beta; import java.util.ArrayList; import java.util.Collections; @@ -31,7 +32,12 @@ import java.util.List; import java.util.Map; import java.util.Set; -/** Registry which provides a list of checks to be performed on an Android project */ +/** Registry which provides a list of checks to be performed on an Android project + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> + */ +@Beta public abstract class IssueRegistry { private static List<Category> sCategories; private static Map<String, Issue> sIdToIssue; diff --git a/lint/libs/lint_api/src/com/android/tools/lint/client/api/Lint.java b/lint/libs/lint_api/src/com/android/tools/lint/client/api/Lint.java index 2a1d587..ec962b8 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/client/api/Lint.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/client/api/Lint.java @@ -33,6 +33,8 @@ import com.android.tools.lint.detector.api.ResourceXmlDetector; import com.android.tools.lint.detector.api.Scope; import com.android.tools.lint.detector.api.Severity; import com.android.tools.lint.detector.api.XmlContext; +import com.google.common.annotations.Beta; +import com.google.common.io.Files; import org.objectweb.asm.ClassReader; import org.objectweb.asm.tree.ClassNode; @@ -50,7 +52,13 @@ import java.util.List; import java.util.Map; import java.util.Set; -/** Analyzes Android projects and files */ +/** + * Analyzes Android projects and files + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> + */ +@Beta public class Lint { private static final String PROGUARD_CFG = "proguard.cfg"; //$NON-NLS-1$ private static final String ANDROID_MANIFEST_XML = "AndroidManifest.xml"; //$NON-NLS-1$ @@ -457,7 +465,7 @@ public class Lint { for (File file : classFiles) { try { - byte[] bytes = LintUtils.readBytes(file); + byte[] bytes = Files.toByteArray(file); if (bytes != null) { ClassReader reader = new ClassReader(bytes); ClassNode classNode = new ClassNode(); diff --git a/lint/libs/lint_api/src/com/android/tools/lint/client/api/LintClient.java b/lint/libs/lint_api/src/com/android/tools/lint/client/api/LintClient.java index db138c2..1f37553 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/client/api/LintClient.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/client/api/LintClient.java @@ -21,6 +21,7 @@ import com.android.tools.lint.detector.api.Detector; import com.android.tools.lint.detector.api.Issue; import com.android.tools.lint.detector.api.Location; import com.android.tools.lint.detector.api.Project; +import com.google.common.annotations.Beta; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -43,6 +44,7 @@ import javax.xml.parsers.DocumentBuilderFactory; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public abstract class LintClient { /** * Returns a configuration for use by the given project. The configuration diff --git a/lint/libs/lint_api/src/com/android/tools/lint/client/api/LintListener.java b/lint/libs/lint_api/src/com/android/tools/lint/client/api/LintListener.java index 6c5c049..cb5d6c9 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/client/api/LintListener.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/client/api/LintListener.java @@ -17,8 +17,15 @@ package com.android.tools.lint.client.api; import com.android.tools.lint.detector.api.Context; +import com.google.common.annotations.Beta; -/** Interface implemented by listeners to be notified of lint events */ +/** + * Interface implemented by listeners to be notified of lint events + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> + */ +@Beta public interface LintListener { /** The various types of events provided to lint listeners */ public enum EventType { diff --git a/lint/libs/lint_api/src/com/android/tools/lint/client/api/SdkInfo.java b/lint/libs/lint_api/src/com/android/tools/lint/client/api/SdkInfo.java index 6974f22..9da87a8 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/client/api/SdkInfo.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/client/api/SdkInfo.java @@ -16,7 +16,15 @@ package com.android.tools.lint.client.api; -/** Information about SDKs */ +import com.google.common.annotations.Beta; + +/** + * Information about SDKs + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> + */ +@Beta public abstract class SdkInfo { /** * Returns true if the given child view is the same class or a sub class of diff --git a/lint/libs/lint_api/src/com/android/tools/lint/client/api/XmlVisitor.java b/lint/libs/lint_api/src/com/android/tools/lint/client/api/XmlVisitor.java index ce0a03e..15fd123 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/client/api/XmlVisitor.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/client/api/XmlVisitor.java @@ -20,6 +20,7 @@ import com.android.tools.lint.detector.api.Detector; import com.android.tools.lint.detector.api.Detector.XmlScanner; import com.android.tools.lint.detector.api.LintUtils; import com.android.tools.lint.detector.api.XmlContext; +import com.google.common.annotations.Beta; import org.w3c.dom.Attr; import org.w3c.dom.Element; @@ -49,7 +50,11 @@ import java.util.RandomAccess; * </ol> * It also notifies all the detectors before and after the document is processed * such that they can do pre- and post-processing. + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> */ +@Beta class XmlVisitor { private final Map<String, List<Detector.XmlScanner>> mElementToCheck = new HashMap<String, List<Detector.XmlScanner>>(); diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Category.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Category.java index 88df665..6713a7f 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Category.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Category.java @@ -16,12 +16,15 @@ package com.android.tools.lint.detector.api; +import com.google.common.annotations.Beta; + /** * A category is a container for related issues. * <p/> * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public final class Category implements Comparable<Category> { private final String mName; private final String mExplanation; diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/ClassContext.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/ClassContext.java index f35889c..0fbb96c 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/ClassContext.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/ClassContext.java @@ -20,6 +20,7 @@ import static com.android.tools.lint.detector.api.LintConstants.DOT_CLASS; import static com.android.tools.lint.detector.api.LintConstants.DOT_JAVA; import com.android.tools.lint.client.api.LintClient; +import com.google.common.annotations.Beta; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.tree.ClassNode; @@ -34,6 +35,7 @@ import java.util.List; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public class ClassContext extends Context { private final File mBinDir; private ClassNode mClassNode; diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Context.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Context.java index 9bf9a79..d25dca2 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Context.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Context.java @@ -19,6 +19,7 @@ package com.android.tools.lint.detector.api; import com.android.tools.lint.client.api.Configuration; import com.android.tools.lint.client.api.LintClient; import com.android.tools.lint.client.api.SdkInfo; +import com.google.common.annotations.Beta; import java.io.File; import java.util.EnumSet; @@ -34,6 +35,7 @@ import java.util.concurrent.atomic.AtomicBoolean; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public class Context { /** * The file being checked. Note that this may not always be to a concrete diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/DefaultPosition.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/DefaultPosition.java index 6d7c6f3..fe5ada8 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/DefaultPosition.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/DefaultPosition.java @@ -16,7 +16,15 @@ package com.android.tools.lint.detector.api; -/** A simple offset-based position */ +import com.google.common.annotations.Beta; + +/** + * A simple offset-based position * + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> + */ +@Beta public class DefaultPosition extends Position { /** The line number (0-based where the first line is line 0) */ private final int mLine; diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Detector.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Detector.java index c502e11..2d86dce 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Detector.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Detector.java @@ -16,6 +16,8 @@ package com.android.tools.lint.detector.api; +import com.google.common.annotations.Beta; + import org.objectweb.asm.tree.ClassNode; import org.w3c.dom.Attr; import org.w3c.dom.Document; @@ -42,6 +44,7 @@ import java.util.List; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public abstract class Detector { /** Specialized interface for detectors that scan Java source file parse trees */ public interface JavaScanner { diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Issue.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Issue.java index de5cde3..5c1dd48 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Issue.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Issue.java @@ -17,6 +17,7 @@ package com.android.tools.lint.detector.api; import com.android.tools.lint.client.api.Configuration; +import com.google.common.annotations.Beta; import java.util.EnumSet; @@ -33,6 +34,7 @@ import java.util.EnumSet; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public final class Issue implements Comparable<Issue> { private final String mId; private final String mDescription; diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LayoutDetector.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LayoutDetector.java index c18c762..c74b92a 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LayoutDetector.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LayoutDetector.java @@ -28,6 +28,7 @@ import static com.android.tools.lint.detector.api.LintConstants.VALUE_FILL_PAREN import static com.android.tools.lint.detector.api.LintConstants.VALUE_MATCH_PARENT; import com.android.resources.ResourceFolderType; +import com.google.common.annotations.Beta; import org.w3c.dom.Element; @@ -38,6 +39,7 @@ import org.w3c.dom.Element; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public abstract class LayoutDetector extends ResourceXmlDetector { @Override public boolean appliesTo(ResourceFolderType folderType) { diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LintConstants.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LintConstants.java index 268fd18..b0fbef6 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LintConstants.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LintConstants.java @@ -16,9 +16,15 @@ package com.android.tools.lint.detector.api; +import com.google.common.annotations.Beta; + /** * Constants used by the various detectors, defined in one place - */ + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> +*/ +@Beta @SuppressWarnings("javadoc") // Not documenting each and every obvious constant public class LintConstants { /** Namespace used in XML files for Android attributes */ diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LintUtils.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LintUtils.java index b7a97fc..55d1cf6 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LintUtils.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/LintUtils.java @@ -21,28 +21,24 @@ import static com.android.tools.lint.detector.api.LintConstants.DOT_XML; import com.android.resources.FolderTypeRelationship; import com.android.resources.ResourceFolderType; import com.android.resources.ResourceType; +import com.google.common.annotations.Beta; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; /** * Useful utility methods related to lint. + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> */ +@Beta public class LintUtils { /** * Format a list of strings, and cut of the list at {@code maxItems} if the @@ -71,45 +67,6 @@ public class LintUtils { } /** - * Computes the set difference {@code a - b} - * - * @param a the set to subtract from - * @param b the set to subtract - * @return the elements that are in {@code a} but not in {@code b} - */ - public static Set<String> difference(Set<String> a, Set<String> b) { - HashSet<String> copy = new HashSet<String>(a); - copy.removeAll(b); - return copy; - } - - /** - * Computes the set intersection {@code a intersect b} - * - * @param a the first set to intersect - * @param b the second set to intersect - * @return the elements that are in {@code a} and in {@code b} - */ - public static Set<String> intersection(Set<String> a, Set<String> b) { - HashSet<String> intersection = new HashSet<String>(a); - intersection.retainAll(b); - return intersection; - } - - /** - * Computes the set union {@code a union b} - * - * @param a the first set to add - * @param b the second set to add - * @return the elements that are in {@code a} or in {@code b} - */ - public static Set<String> union(Set<String> a, Set<String> b) { - HashSet<String> union = new HashSet<String>(a); - union.addAll(b); - return union; - } - - /** * Determine if the given type corresponds to a resource that has a unique * file * @@ -192,68 +149,4 @@ public class LintUtils { return childCount; } - - /** - * Copies a file - * - * @param src the file to copy - * @param target the filename to write the file into - * @throws IOException if an I/O problem occurs - */ - public static void copyFile(File src, File target) throws IOException { - InputStream input = null; - OutputStream output = null; - try { - input = new BufferedInputStream(new FileInputStream(src)); - output = new BufferedOutputStream(new FileOutputStream(target)); - byte[] buffer = new byte[1024]; - while (true) { - int bytesRead = input.read(buffer); - if (bytesRead == -1) { - break; - } - output.write(buffer, 0, bytesRead); - } - } finally { - if (input != null) { - input.close(); - } - if (output != null) { - output.close(); - } - } - } - - /** - * Reads the file contents of the given file and returns it as a byte array. - * - * @param src the file to be read - * @return the contents of the file, or null - * @throws IOException if an I/O error occurs - */ - public static byte[] readBytes(File src) throws IOException { - InputStream input = null; - try { - int length = (int) src.length(); - if (length <= 0) { - return null; - } - byte[] buffer = new byte[length]; - input = new BufferedInputStream(new FileInputStream(src)); - int offset = 0; - while (offset < length) { - int n = input.read(buffer, offset, length - offset); - if (n == -1) { - break; - } - offset += n; - } - - return buffer; - } finally { - if (input != null) { - input.close(); - } - } - } } diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Location.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Location.java index 68e7c23..c49e2ac 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Location.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Location.java @@ -16,6 +16,8 @@ package com.android.tools.lint.detector.api; +import com.google.common.annotations.Beta; + import java.io.File; /** @@ -24,6 +26,7 @@ import java.io.File; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public class Location { private final File mFile; private final Position mStart; diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Position.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Position.java index e5c1a9a..6407cc9 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Position.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Position.java @@ -16,12 +16,15 @@ package com.android.tools.lint.detector.api; +import com.google.common.annotations.Beta; + /** * Information about a position in a file/document. * <p/> * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public abstract class Position { /** * Returns the line number (0-based where the first line is line 0) diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Project.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Project.java index 7bf2c2b..b5fab29 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Project.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Project.java @@ -17,13 +17,14 @@ package com.android.tools.lint.detector.api; import static com.android.tools.lint.detector.api.LintConstants.ANDROID_URI; -import static com.android.tools.lint.detector.api.LintConstants.ATTR_PACKAGE; import static com.android.tools.lint.detector.api.LintConstants.ATTR_MIN_SDK_VERSION; +import static com.android.tools.lint.detector.api.LintConstants.ATTR_PACKAGE; import static com.android.tools.lint.detector.api.LintConstants.ATTR_TARGET_SDK_VERSION; import static com.android.tools.lint.detector.api.LintConstants.TAG_USES_SDK; import com.android.tools.lint.client.api.Configuration; import com.android.tools.lint.client.api.LintClient; +import com.google.common.annotations.Beta; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -37,9 +38,10 @@ import java.util.List; * A project contains information about an Android project being scanned for * Lint errors. * <p> - * TODO: Accumulate more project info here, such as the project package name, - * the minimum and target SDK API levels, etc. + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> */ +@Beta public class Project { /** The associated tool */ private final LintClient mTool; diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/ResourceXmlDetector.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/ResourceXmlDetector.java index ca18fc3..0c941dd 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/ResourceXmlDetector.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/ResourceXmlDetector.java @@ -17,6 +17,7 @@ package com.android.tools.lint.detector.api; import com.android.resources.ResourceFolderType; +import com.google.common.annotations.Beta; import java.io.File; @@ -28,6 +29,7 @@ import java.io.File; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public abstract class ResourceXmlDetector extends Detector implements Detector.XmlScanner { @Override public boolean appliesTo(Context context, File file) { diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Scope.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Scope.java index 18a369c..e7198c5 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Scope.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Scope.java @@ -16,13 +16,19 @@ package com.android.tools.lint.detector.api; +import com.google.common.annotations.Beta; + import java.util.EnumSet; /** * The scope of a detector is the set of files a detector must consider when * performing its analysis. This can be used to determine when issues are * potentially obsolete, whether a detector should re-run on a file save, etc. + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> */ +@Beta public enum Scope { /** * The analysis only considers a single XML resource file at a time. diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Severity.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Severity.java index 3161cd2..27840de 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Severity.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Severity.java @@ -16,12 +16,15 @@ package com.android.tools.lint.detector.api; +import com.google.common.annotations.Beta; + /** * Severity of an issue found by lint * <p/> * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public enum Severity { /** * Errors: Use sparingly because a warning marked as an error will be diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Speed.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Speed.java index 2f7f17a..79de400 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Speed.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/Speed.java @@ -16,7 +16,15 @@ package com.android.tools.lint.detector.api; -/** Enum which describes the different computation speeds of various detectors */ +import com.google.common.annotations.Beta; + +/** + * Enum which describes the different computation speeds of various detectors + * <p> + * <b>NOTE: This is not a public or final API; if you rely on this be prepared + * to adjust your code for the next tools release.</b> + */ +@Beta public enum Speed { /** The detector can run very quickly */ FAST("Fast"), diff --git a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/XmlContext.java b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/XmlContext.java index 2c282ed..f456a63 100644 --- a/lint/libs/lint_api/src/com/android/tools/lint/detector/api/XmlContext.java +++ b/lint/libs/lint_api/src/com/android/tools/lint/detector/api/XmlContext.java @@ -18,6 +18,7 @@ package com.android.tools.lint.detector.api; import com.android.tools.lint.client.api.IDomParser; import com.android.tools.lint.client.api.LintClient; +import com.google.common.annotations.Beta; import org.w3c.dom.Document; import org.w3c.dom.Node; @@ -31,6 +32,7 @@ import java.util.EnumSet; * <b>NOTE: This is not a public or final API; if you rely on this be prepared * to adjust your code for the next tools release.</b> */ +@Beta public class XmlContext extends Context { /** The XML parser */ public IDomParser parser; diff --git a/lint/libs/lint_checks/.classpath b/lint/libs/lint_checks/.classpath index eab475b..7ccda94 100644 --- a/lint/libs/lint_checks/.classpath +++ b/lint/libs/lint_checks/.classpath @@ -7,5 +7,6 @@ <classpathentry combineaccessrules="false" kind="src" path="/AndroidPrefs"/> <classpathentry kind="var" path="ANDROID_SRC/prebuilts/tools/common/asm-tools/asm-4.0.jar" sourcepath="/ANDROID_SRC/prebuilts/tools/common/asm-tools/src.zip"/> <classpathentry kind="var" path="ANDROID_SRC/prebuilts/tools/common/asm-tools/asm-tree-4.0.jar" sourcepath="/ANDROID_SRC/prebuilts/tools/common/asm-tools/src.zip"/> + <classpathentry kind="var" path="ANDROID_SRC/prebuilts/tools/common/guava-tools/guava-10.0.1.jar" sourcepath="/ANDROID_SRC/prebuilts/tools/common/guava-tools/src.zip"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/lint/libs/lint_checks/Android.mk b/lint/libs/lint_checks/Android.mk index d51d3c8..9038199 100644 --- a/lint/libs/lint_checks/Android.mk +++ b/lint/libs/lint_checks/Android.mk @@ -16,7 +16,8 @@ LOCAL_JAVA_LIBRARIES := \ lint_api LOCAL_STATIC_JAVA_LIBRARIES := \ asm-tools \ - asm-tree-tools + asm-tree-tools \ + guava-tools LOCAL_MODULE := lint_checks LOCAL_MODULE_TAGS := optional diff --git a/lint/libs/lint_checks/src/com/android/tools/lint/checks/IconDetector.java b/lint/libs/lint_checks/src/com/android/tools/lint/checks/IconDetector.java index 1717225..5f7adcb 100644 --- a/lint/libs/lint_checks/src/com/android/tools/lint/checks/IconDetector.java +++ b/lint/libs/lint_checks/src/com/android/tools/lint/checks/IconDetector.java @@ -32,9 +32,7 @@ import static com.android.tools.lint.detector.api.LintConstants.DRAWABLE_RESOURC import static com.android.tools.lint.detector.api.LintConstants.DRAWABLE_XHDPI; import static com.android.tools.lint.detector.api.LintConstants.RES_FOLDER; import static com.android.tools.lint.detector.api.LintConstants.TAG_APPLICATION; -import static com.android.tools.lint.detector.api.LintUtils.difference; import static com.android.tools.lint.detector.api.LintUtils.endsWith; -import static com.android.tools.lint.detector.api.LintUtils.intersection; import com.android.tools.lint.detector.api.Category; import com.android.tools.lint.detector.api.Context; @@ -46,6 +44,8 @@ import com.android.tools.lint.detector.api.Scope; import com.android.tools.lint.detector.api.Severity; import com.android.tools.lint.detector.api.Speed; import com.android.tools.lint.detector.api.XmlContext; +import com.google.common.collect.Sets; +import com.google.common.io.Files; import org.w3c.dom.Element; @@ -413,7 +413,7 @@ public class IconDetector extends Detector implements Detector.XmlScanner { byte[] bits = fileContents.get(file); if (bits == null) { try { - bits = LintUtils.readBytes(file); + bits = Files.toByteArray(file); fileContents.put(file, bits); } catch (IOException e) { context.log(e, null); @@ -764,7 +764,7 @@ public class IconDetector extends Detector implements Detector.XmlScanner { String folderName = folder.getName(); if (!isNoDpiFolder(folder)) { assert DENSITY_PATTERN.matcher(folderName).matches(); - Set<String> overlap = intersection(noDpiNames, entry.getValue()); + Set<String> overlap = Sets.intersection(noDpiNames, entry.getValue()); inBoth.addAll(overlap); for (String name : overlap) { files.add(new File(folder, name)); @@ -812,7 +812,7 @@ public class IconDetector extends Detector implements Detector.XmlScanner { Set<String> names = entry.getValue(); if (names.size() != allNames.size()) { List<String> delta = - new ArrayList<String>(difference(allNames, names)); + new ArrayList<String>(Sets.difference(allNames, names)); Collections.sort(delta); String foundIn = ""; if (delta.size() == 1) { diff --git a/lint/libs/lint_checks/src/com/android/tools/lint/checks/TranslationDetector.java b/lint/libs/lint_checks/src/com/android/tools/lint/checks/TranslationDetector.java index 24fb653..b07039f 100644 --- a/lint/libs/lint_checks/src/com/android/tools/lint/checks/TranslationDetector.java +++ b/lint/libs/lint_checks/src/com/android/tools/lint/checks/TranslationDetector.java @@ -36,6 +36,7 @@ import com.android.tools.lint.detector.api.Scope; import com.android.tools.lint.detector.api.Severity; import com.android.tools.lint.detector.api.Speed; import com.android.tools.lint.detector.api.XmlContext; +import com.google.common.collect.Sets; import org.w3c.dom.Attr; import org.w3c.dom.Element; @@ -308,7 +309,7 @@ public class TranslationDetector extends ResourceXmlDetector { // defined in other languages, so there's no problem. if (stringCount != strings.size()) { if (reportMissing) { - Set<String> difference = LintUtils.difference(defaultStrings, strings); + Set<String> difference = Sets.difference(defaultStrings, strings); if (difference.size() > 0) { List<String> sorted = new ArrayList<String>(difference); Collections.sort(sorted); @@ -320,7 +321,7 @@ public class TranslationDetector extends ResourceXmlDetector { } if (reportExtra) { - Set<String> difference = LintUtils.difference(strings, defaultStrings); + Set<String> difference = Sets.difference(strings, defaultStrings); if (difference.size() > 0) { List<String> sorted = new ArrayList<String>(difference); Collections.sort(sorted); |