summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2014-10-16 14:33:13 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-10-16 14:33:14 +0000
commitc0cca6215fce17d69f56afb1965f7e341f3aa906 (patch)
treee15298168e712222132e1e264d7951352775269c
parent24d3797a11c567b32b665095dee2b12908630d0f (diff)
parent50d1fab4882c9295f5553963032465a0513edcd0 (diff)
downloadbase-c0cca6215fce17d69f56afb1965f7e341f3aa906.tar.gz
Merge "Extract the API version from error message lookup into lint detector" into studio-1.0-dev
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/ApiDetectorTest.java20
-rwxr-xr-xlint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/ApiDetector.java19
2 files changed, 39 insertions, 0 deletions
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/ApiDetectorTest.java b/lint/cli/src/test/java/com/android/tools/lint/checks/ApiDetectorTest.java
index ca92f5813c..60a201106f 100644
--- a/lint/cli/src/test/java/com/android/tools/lint/checks/ApiDetectorTest.java
+++ b/lint/cli/src/test/java/com/android/tools/lint/checks/ApiDetectorTest.java
@@ -16,9 +16,19 @@
package com.android.tools.lint.checks;
+import static com.android.tools.lint.checks.ApiDetector.INLINED;
+import static com.android.tools.lint.checks.ApiDetector.UNSUPPORTED;
+import static com.android.tools.lint.detector.api.TextFormat.TEXT;
+
import com.android.annotations.NonNull;
+import com.android.annotations.Nullable;
+import com.android.sdklib.SdkVersionInfo;
+import com.android.tools.lint.detector.api.Context;
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.android.tools.lint.detector.api.Severity;
import java.io.File;
@@ -1220,4 +1230,14 @@ public class ApiDetectorTest extends AbstractCheckTest {
}
return super.ignoreSystemErrors();
}
+
+ @Override
+ protected void checkReportedError(@NonNull Context context, @NonNull Issue issue,
+ @NonNull Severity severity, @Nullable Location location, @NonNull String message) {
+ if (issue == UNSUPPORTED || issue == INLINED) {
+ int requiredVersion = ApiDetector.getRequiredVersion(issue, message, TEXT);
+ assertTrue("Could not extract message tokens from " + message,
+ requiredVersion >= 1 && requiredVersion <= SdkVersionInfo.HIGHEST_KNOWN_API);
+ }
+ }
}
diff --git a/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/ApiDetector.java b/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/ApiDetector.java
index ef63ebf839..69322b358a 100755
--- a/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/ApiDetector.java
+++ b/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/ApiDetector.java
@@ -74,6 +74,7 @@ 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.Speed;
+import com.android.tools.lint.detector.api.TextFormat;
import com.android.tools.lint.detector.api.XmlContext;
import com.android.utils.Pair;
import com.google.common.collect.Lists;
@@ -106,6 +107,8 @@ import java.util.EnumSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import lombok.ast.Annotation;
import lombok.ast.AnnotationElement;
@@ -1937,4 +1940,20 @@ public class ApiDetector extends ResourceXmlDetector
return -1;
}
+
+ @Nullable
+ public static int getRequiredVersion(@NonNull Issue issue, @NonNull String errorMessage,
+ @NonNull TextFormat format) {
+ errorMessage = format.toText(errorMessage);
+
+ if (issue == UNSUPPORTED || issue == INLINED) {
+ Pattern pattern = Pattern.compile("\\s(\\d+)\\s"); //$NON-NLS-1$
+ Matcher matcher = pattern.matcher(errorMessage);
+ if (matcher.find()) {
+ return Integer.parseInt(matcher.group(1));
+ }
+ }
+
+ return -1;
+ }
}