diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt')
3 files changed, 71 insertions, 6 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 c91661664..94a7da17a 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 @@ -903,7 +903,7 @@ public class EclipseLintClient extends LintClient { * @return the issue registry to use to access detectors and issues */ public static IssueRegistry getRegistry() { - return new BuiltinIssueRegistry(); + return new EclipseLintIssueRegistry(); } @Override diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintIssueRegistry.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintIssueRegistry.java new file mode 100644 index 000000000..3abbdeb84 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/EclipseLintIssueRegistry.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Eclipse Public License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.eclipse.org/org/documents/epl-v10.php + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.ide.eclipse.adt.internal.lint; + +import com.android.annotations.NonNull; +import com.android.tools.lint.checks.*; +import com.android.tools.lint.detector.api.Issue; + +import java.util.ArrayList; +import java.util.List; + +public class EclipseLintIssueRegistry extends BuiltinIssueRegistry { + private static List<Issue> sFilteredIssues; + + public EclipseLintIssueRegistry() { + } + + @NonNull + @Override + public List<Issue> getIssues() { + if (sFilteredIssues == null) { + // Remove issues that do not work properly in Eclipse + List<Issue> sIssues = super.getIssues(); + List<Issue> result = new ArrayList<Issue>(sIssues.size()); + for (Issue issue : sIssues) { + if (issue == MissingClassDetector.INSTANTIATABLE) { + // Apparently violated by + // android.support.v7.internal.widget.ActionBarView.HomeView + // See issue 72760 + continue; + } else if (issue == DuplicateIdDetector.WITHIN_LAYOUT) { + // Apparently violated by + // sdk/extras/android/support/v7/appcompat/abc_activity_chooser_view_include.xml + // See issue 72760 + continue; + } else if (issue == AppCompatResourceDetector.ISSUE + || issue == AppCompatCallDetector.ISSUE) { + // Apparently has some false positives in Eclipse; see issue + // 72824 + continue; + } else if (issue.getImplementation().getDetectorClass() == RtlDetector.class) { + // False positives in Eclipse; see issue 78780 + continue; + } + result.add(issue); + } + sFilteredIssues = result; + } + + return sFilteredIssues; + } +} diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/Sdk.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/Sdk.java index 8e40f1c64..7ff06fc40 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/Sdk.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/Sdk.java @@ -744,11 +744,11 @@ public final class Sdk { } AdtPlugin.log(t, "Exception in checkAndLoadTargetData."); //$NON-NLS-1$ - return new Status(IStatus.ERROR, AdtPlugin.PLUGIN_ID, - String.format( - "Parsing Data for %1$s failed", //$NON-NLS-1$ - target.hashString()), - t); + String message = String.format("Parsing Data for %1$s failed", target.hashString()); + if (t instanceof UnsupportedClassVersionError) { + message = "To use this platform, run Eclipse with JDK 7 or later. (" + message + ")"; + } + return new Status(IStatus.ERROR, AdtPlugin.PLUGIN_ID, message, t); } } }; |