diff options
author | Tor Norbye <tnorbye@google.com> | 2014-10-16 14:33:13 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-10-16 14:33:14 +0000 |
commit | c0cca6215fce17d69f56afb1965f7e341f3aa906 (patch) | |
tree | e15298168e712222132e1e264d7951352775269c | |
parent | 24d3797a11c567b32b665095dee2b12908630d0f (diff) | |
parent | 50d1fab4882c9295f5553963032465a0513edcd0 (diff) | |
download | base-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.java | 20 | ||||
-rwxr-xr-x | lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/ApiDetector.java | 19 |
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; + } } |