aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2012-02-21 12:25:09 -0800
committerTor Norbye <tnorbye@google.com>2012-02-21 12:31:31 -0800
commit105dc49ddd885c07b520dd343aa326c306d2c3de (patch)
tree4462bc33d2d460d3e3e8d7c229677c1c86f49591
parent556b907792f0658a6c3f676e23469b83175e3431 (diff)
downloadsdk-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
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintClient.java20
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintRunner.java6
-rw-r--r--lint/cli/src/com/android/tools/lint/Main.java2
-rw-r--r--lint/cli/src/com/android/tools/lint/TextReporter.java2
-rw-r--r--lint/libs/lint_api/src/com/android/tools/lint/detector/api/Context.java2
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;