diff options
author | Tor Norbye <tnorbye@google.com> | 2012-02-21 12:25:09 -0800 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2012-02-21 12:31:31 -0800 |
commit | 105dc49ddd885c07b520dd343aa326c306d2c3de (patch) | |
tree | 4462bc33d2d460d3e3e8d7c229677c1c86f49591 | |
parent | 556b907792f0658a6c3f676e23469b83175e3431 (diff) | |
download | sdk-105dc49ddd885c07b520dd343aa326c306d2c3de.zip sdk-105dc49ddd885c07b520dd343aa326c306d2c3de.tar.gz sdk-105dc49ddd885c07b520dd343aa326c306d2c3de.tar.bz2 |
Fix lint library project configuration handling
A lint.xml file in a library project should be able to suppress lint
errors in that project. This changeset fixes a couple of bugs which
prevented this from working: In Eclipse, the configuration was cached,
which meant a single lint run through multiple projects would just use
the configuration of the first encountered project. And from the
command line driver, the code to handle --check handling would
override configuration severity in one scenario.
Change-Id: Ib08e2b14582ab53e5ab89244738d1bd77839610e
5 files changed, 17 insertions, 15 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java index 3289bbe..fc8d5b1 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java @@ -102,7 +102,6 @@ public class EclipseLintClient extends LintClient implements IDomParser { private final IDocument mDocument; private boolean mWasFatal; private boolean mFatalOnly; - private Configuration mConfiguration; private EclipseJavaParser mJavaParser; /** @@ -199,18 +198,14 @@ public class EclipseLintClient extends LintClient implements IDomParser { @Override public Configuration getConfiguration(Project project) { - if (mConfiguration == null) { - if (project != null) { - IProject eclipseProject = getProject(project); - if (eclipseProject != null) { - mConfiguration = ProjectLintConfiguration.get(this, eclipseProject, mFatalOnly); - return mConfiguration; - } + if (project != null) { + IProject eclipseProject = getProject(project); + if (eclipseProject != null) { + return ProjectLintConfiguration.get(this, eclipseProject, mFatalOnly); } - - mConfiguration = GlobalLintConfiguration.get(); } - return mConfiguration; + + return GlobalLintConfiguration.get(); } @Override @@ -483,6 +478,9 @@ public class EclipseLintClient extends LintClient implements IDomParser { } sb.append("Issue: "); sb.append(summary); + sb.append('\n'); + sb.append("Id: "); + sb.append(issue.getId()); sb.append('\n').append('\n'); sb.append(explanation); diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintRunner.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintRunner.java index faf29d9..36a388a 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintRunner.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintRunner.java @@ -193,8 +193,10 @@ public class EclipseLintRunner { } for (IProject project : projects) { ProjectState state = Sdk.getProjectState(project); - for (IProject library : state.getFullLibraryProjects()) { - allProjects.put(library, library); + if (state != null) { + for (IProject library : state.getFullLibraryProjects()) { + allProjects.put(library, library); + } } } for (IProject project : allProjects.keySet()) { diff --git a/lint/cli/src/com/android/tools/lint/Main.java b/lint/cli/src/com/android/tools/lint/Main.java index 1484a1d..607b882 100644 --- a/lint/cli/src/com/android/tools/lint/Main.java +++ b/lint/cli/src/com/android/tools/lint/Main.java @@ -1023,7 +1023,7 @@ public class Main extends LintClient { // Detectors shouldn't be returning ignore as a default severity, // but in case they do, force it up to warning here to ensure that // it's run - if (severity == Severity.IGNORE) { + if (severity == Severity.IGNORE && severity == issue.getDefaultSeverity()) { return Severity.WARNING; } else { return severity; diff --git a/lint/cli/src/com/android/tools/lint/TextReporter.java b/lint/cli/src/com/android/tools/lint/TextReporter.java index 4d08c0b..47202d1 100644 --- a/lint/cli/src/com/android/tools/lint/TextReporter.java +++ b/lint/cli/src/com/android/tools/lint/TextReporter.java @@ -38,8 +38,10 @@ class TextReporter extends Reporter { StringBuilder output = new StringBuilder(issues.size() * 200); if (issues.size() == 0) { + mWriter.write('\n'); mWriter.write("No issues found."); mWriter.write('\n'); + mWriter.flush(); } else { for (Warning warning : issues) { int startLength = output.length(); 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 d82ae0b..33e39e7 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,8 +19,8 @@ package com.android.tools.lint.detector.api; import com.android.annotations.NonNull; import com.android.annotations.Nullable; import com.android.tools.lint.client.api.Configuration; -import com.android.tools.lint.client.api.LintDriver; import com.android.tools.lint.client.api.LintClient; +import com.android.tools.lint.client.api.LintDriver; import com.android.tools.lint.client.api.SdkInfo; import com.google.common.annotations.Beta; |