aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/LintJob.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/LintJob.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/LintJob.java201
1 files changed, 0 insertions, 201 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/LintJob.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/LintJob.java
deleted file mode 100644
index 51fa2d145..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/LintJob.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2012 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 static com.android.SdkConstants.DOT_CLASS;
-import static com.android.SdkConstants.DOT_JAVA;
-import static com.android.SdkConstants.DOT_XML;
-
-import com.android.SdkConstants;
-import com.android.annotations.NonNull;
-import com.android.annotations.Nullable;
-import com.android.ide.eclipse.adt.AdtPlugin;
-import com.android.ide.eclipse.adt.AdtUtils;
-import com.android.tools.lint.client.api.IssueRegistry;
-import com.android.tools.lint.client.api.LintDriver;
-import com.android.tools.lint.client.api.LintRequest;
-import com.android.tools.lint.detector.api.Issue;
-import com.android.tools.lint.detector.api.Scope;
-import com.android.utils.SdkUtils;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobManager;
-import org.eclipse.core.runtime.jobs.Job;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.List;
-
-/** Job to check lint on a set of resources */
-public final class LintJob extends Job {
- /** Job family */
- private static final Object FAMILY_RUN_LINT = new Object();
- private final EclipseLintClient mClient;
- private final List<? extends IResource> mResources;
- private final IResource mSource;
- private final IssueRegistry mRegistry;
- private LintDriver mLint;
- private boolean mFatal;
-
- public LintJob(
- @NonNull EclipseLintClient client,
- @NonNull List<? extends IResource> resources,
- @Nullable IResource source,
- @NonNull IssueRegistry registry) {
- super("Running Android Lint");
- mClient = client;
- mResources = resources;
- mSource = source;
- mRegistry = registry;
- }
-
- public LintJob(
- @NonNull EclipseLintClient client,
- @NonNull List<? extends IResource> resources,
- @Nullable IResource source) {
- this(client, resources, source, EclipseLintClient.getRegistry());
- }
-
- @Override
- public boolean belongsTo(Object family) {
- return family == FAMILY_RUN_LINT;
- }
-
- @Override
- protected void canceling() {
- super.canceling();
- if (mLint != null) {
- mLint.cancel();
- }
- }
-
- @Override
- @NonNull
- protected IStatus run(IProgressMonitor monitor) {
- try {
- monitor.beginTask("Looking for errors", IProgressMonitor.UNKNOWN);
- EnumSet<Scope> scope = null;
- List<File> files = new ArrayList<File>(mResources.size());
- for (IResource resource : mResources) {
- File file = AdtUtils.getAbsolutePath(resource).toFile();
- files.add(file);
-
- if (resource instanceof IProject && mSource == null) {
- scope = Scope.ALL;
- } else {
- String name = resource.getName();
- if (SdkUtils.endsWithIgnoreCase(name, DOT_XML)) {
- if (name.equals(SdkConstants.FN_ANDROID_MANIFEST_XML)) {
- scope = EnumSet.of(Scope.MANIFEST);
- } else {
- scope = Scope.RESOURCE_FILE_SCOPE;
- }
- } else if (name.endsWith(DOT_JAVA) && resource instanceof IFile) {
- if (scope != null) {
- if (!scope.contains(Scope.JAVA_FILE)) {
- scope = EnumSet.copyOf(scope);
- scope.add(Scope.JAVA_FILE);
- }
- } else {
- scope = Scope.JAVA_FILE_SCOPE;
- }
- } else if (name.endsWith(DOT_CLASS) && resource instanceof IFile) {
- if (scope != null) {
- if (!scope.contains(Scope.CLASS_FILE)) {
- scope = EnumSet.copyOf(scope);
- scope.add(Scope.CLASS_FILE);
- }
- } else {
- scope = Scope.CLASS_FILE_SCOPE;
- }
- } else {
- return new Status(Status.ERROR, AdtPlugin.PLUGIN_ID, Status.ERROR,
- "Only XML & Java files are supported for single file lint", null); //$NON-NLS-1$
- }
- }
- }
- if (scope == null) {
- scope = Scope.ALL;
- }
- if (mSource == null) {
- assert !Scope.checkSingleFile(scope) : scope + " with " + mResources;
- }
- // Check single file?
- if (mSource != null) {
- // Delete specific markers
- IMarker[] markers = EclipseLintClient.getMarkers(mSource);
- for (IMarker marker : markers) {
- String id = marker.getAttribute(EclipseLintRunner.MARKER_CHECKID_PROPERTY, "");
- Issue issue = mRegistry.getIssue(id);
- if (issue == null) {
- continue;
- }
- if (issue.getImplementation().isAdequate(scope)) {
- marker.delete();
- }
- }
- mClient.setSearchForSuperClasses(true);
- } else {
- EclipseLintClient.clearMarkers(mResources);
- }
-
- mLint = new LintDriver(mRegistry, mClient);
- mLint.analyze(new LintRequest(mClient, files).setScope(scope));
- mFatal = mClient.hasFatalErrors();
- return Status.OK_STATUS;
- } catch (Exception e) {
- return new Status(Status.ERROR, AdtPlugin.PLUGIN_ID, Status.ERROR,
- "Failed", e); //$NON-NLS-1$
- } finally {
- if (monitor != null) {
- monitor.done();
- }
- }
- }
-
- /**
- * Returns true if a fatal error was encountered
- *
- * @return true if a fatal error was encountered
- */
- public boolean isFatal() {
- return mFatal;
- }
-
- /**
- * Returns the associated lint client
- *
- * @return the associated lint client
- */
- @NonNull
- public EclipseLintClient getLintClient() {
- return mClient;
- }
-
- /** Returns the current lint jobs, if any (never returns null but array may be empty) */
- @NonNull
- static Job[] getCurrentJobs() {
- IJobManager jobManager = Job.getJobManager();
- return jobManager.find(LintJob.FAMILY_RUN_LINT);
- }
-}