aboutsummaryrefslogtreecommitdiffstats
path: root/lint
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2012-02-02 14:19:19 -0800
committerTor Norbye <tnorbye@google.com>2012-02-02 14:19:34 -0800
commit5b47997026b79aead19c799c90a50ff73f1006cb (patch)
treed3e2c7dbc9f2849e9f5c8bfdbec237b5cab42fc3 /lint
parentffa606ae9d5eac445502bdcc87443a10ec3139f7 (diff)
downloadsdk-5b47997026b79aead19c799c90a50ff73f1006cb.zip
sdk-5b47997026b79aead19c799c90a50ff73f1006cb.tar.gz
sdk-5b47997026b79aead19c799c90a50ff73f1006cb.tar.bz2
Add has-autofix info to HTML report
Change-Id: I14e997d4fb7a38a15b764d195c001506c6b73c6c
Diffstat (limited to 'lint')
-rw-r--r--lint/cli/src/com/android/tools/lint/HtmlReporter.java15
-rw-r--r--lint/cli/src/com/android/tools/lint/lint-run.pngbin0 -> 422 bytes
-rw-r--r--lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java43
3 files changed, 57 insertions, 1 deletions
diff --git a/lint/cli/src/com/android/tools/lint/HtmlReporter.java b/lint/cli/src/com/android/tools/lint/HtmlReporter.java
index 43d9b9e..18e316f 100644
--- a/lint/cli/src/com/android/tools/lint/HtmlReporter.java
+++ b/lint/cli/src/com/android/tools/lint/HtmlReporter.java
@@ -21,6 +21,7 @@ import static com.android.tools.lint.detector.api.LintConstants.DOT_JPG;
import static com.android.tools.lint.detector.api.LintConstants.DOT_PNG;
import static com.android.tools.lint.detector.api.LintUtils.endsWith;
+import com.android.tools.lint.checks.BuiltinIssueRegistry;
import com.android.tools.lint.client.api.Configuration;
import com.android.tools.lint.detector.api.Category;
import com.android.tools.lint.detector.api.Issue;
@@ -70,6 +71,7 @@ class HtmlReporter extends Reporter {
protected final Writer mWriter;
private String mStripPrefix;
+ private String mFixUrl;
HtmlReporter(Main client, File output) throws IOException {
super(client, output);
@@ -288,6 +290,18 @@ class HtmlReporter extends Reporter {
throws IOException {
mWriter.write("<div class=\"metadata\">"); //$NON-NLS-1$
+ if (mClient.getRegistry() instanceof BuiltinIssueRegistry &&
+ ((BuiltinIssueRegistry) mClient.getRegistry()).hasAutoFix("adt", issue)) { //$NON-NLS-1$
+ mWriter.write("Note: This issue has an associated quickfix operation in Eclipse/ADT");
+ if (mFixUrl != null) {
+ mWriter.write("&nbsp;<img border=\"0\" align=\"top\" src=\""); //$NON-NLS-1$
+ mWriter.write(mFixUrl);
+ mWriter.write("\" />\n"); //$NON-NLS-1$
+ }
+
+ mWriter.write("<br>\n");
+ }
+
if (disabledBy != null) {
mWriter.write(String.format("Disabled By: %1$s<br/>\n", disabledBy));
}
@@ -452,6 +466,7 @@ class HtmlReporter extends Reporter {
if (!mSimpleFormat) {
errorUrl = addLocalResources(getErrorIconUrl());
warningUrl = addLocalResources(getWarningIconUrl());
+ mFixUrl = addLocalResources(HtmlReporter.class.getResource("lint-run.png")); //$NON-NLS-1$)
}
Category previousCategory = null;
diff --git a/lint/cli/src/com/android/tools/lint/lint-run.png b/lint/cli/src/com/android/tools/lint/lint-run.png
new file mode 100644
index 0000000..d1a074b
--- /dev/null
+++ b/lint/cli/src/com/android/tools/lint/lint-run.png
Binary files differ
diff --git a/lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java b/lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java
index f9bbd2c..28dbef2 100644
--- a/lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java
+++ b/lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java
@@ -21,9 +21,9 @@ import static com.android.tools.lint.detector.api.LintUtils.endsWith;
import com.android.prefs.AndroidLocation;
import com.android.prefs.AndroidLocation.AndroidLocationException;
-import com.android.tools.lint.checks.ApiDetector;
import com.android.tools.lint.client.api.IssueRegistry;
import com.android.tools.lint.detector.api.Issue;
+import com.google.common.annotations.Beta;
import java.io.File;
import java.io.IOException;
@@ -229,4 +229,45 @@ public class BuiltinIssueRegistry extends IssueRegistry {
// wrong.
e.printStackTrace();
}
+
+ private static Set<Issue> sAdtFixes;
+
+ /**
+ * Returns true if the given issue has an automatic IDE fix.
+ *
+ * @param tool the name of the tool to be checked
+ * @param issue the issue to be checked
+ * @return true if the given tool is known to have an automatic fix for the
+ * given issue
+ */
+ @Beta
+ public boolean hasAutoFix(String tool, Issue issue) {
+ assert tool.equals("adt"); // This is not yet a generic facility;
+ // the primary purpose right now is to allow for example the HTML report
+ // to give a hint to the user that some fixes don't require manual work
+
+ if (sAdtFixes == null) {
+ sAdtFixes = new HashSet<Issue>(20);
+ sAdtFixes.add(InefficientWeightDetector.INEFFICIENT_WEIGHT);
+ sAdtFixes.add(AccessibilityDetector.ISSUE);
+ sAdtFixes.add(InefficientWeightDetector.BASELINE_WEIGHTS);
+ sAdtFixes.add(HardcodedValuesDetector.ISSUE);
+ sAdtFixes.add(UselessViewDetector.USELESS_LEAF);
+ sAdtFixes.add(UselessViewDetector.USELESS_PARENT);
+ sAdtFixes.add(PxUsageDetector.ISSUE);
+ sAdtFixes.add(TextFieldDetector.ISSUE);
+ sAdtFixes.add(SecurityDetector.EXPORTED_SERVICE);
+ sAdtFixes.add(DetectMissingPrefix.MISSING_NAMESPACE);
+ sAdtFixes.add(ScrollViewChildDetector.ISSUE);
+ sAdtFixes.add(ObsoleteLayoutParamsDetector.ISSUE);
+ sAdtFixes.add(TypographyDetector.DASHES);
+ sAdtFixes.add(TypographyDetector.ELLIPSIS);
+ sAdtFixes.add(TypographyDetector.FRACTIONS);
+ sAdtFixes.add(TypographyDetector.OTHER);
+ sAdtFixes.add(TypographyDetector.QUOTES);
+ sAdtFixes.add(UseCompoundDrawableDetector.ISSUE);
+ }
+
+ return sAdtFixes.contains(issue);
+ }
}