diff options
author | Tor Norbye <tnorbye@google.com> | 2012-02-02 14:19:19 -0800 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2012-02-02 14:19:34 -0800 |
commit | 5b47997026b79aead19c799c90a50ff73f1006cb (patch) | |
tree | d3e2c7dbc9f2849e9f5c8bfdbec237b5cab42fc3 /lint | |
parent | ffa606ae9d5eac445502bdcc87443a10ec3139f7 (diff) | |
download | sdk-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.java | 15 | ||||
-rw-r--r-- | lint/cli/src/com/android/tools/lint/lint-run.png | bin | 0 -> 422 bytes | |||
-rw-r--r-- | lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java | 43 |
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(" <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 Binary files differnew file mode 100644 index 0000000..d1a074b --- /dev/null +++ b/lint/cli/src/com/android/tools/lint/lint-run.png 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); + } } |