Android Lint: Don't check files unrelated to Android modules

#KT-21064 Fixed
This commit is contained in:
Vyacheslav Gerasimov
2017-11-02 16:21:16 +03:00
parent ba0b21d1a3
commit d6d20a5b5d
@@ -28,14 +28,19 @@ import com.intellij.openapi.keymap.Keymap;
import com.intellij.openapi.keymap.KeymapManager;
import com.intellij.openapi.keymap.KeymapUtil;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.progress.util.ProgressIndicatorUtils;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ProjectRootModificationTracker;
import com.intellij.openapi.util.*;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.profile.codeInspection.InspectionProjectProfileManager;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.util.CachedValueProvider;
import com.intellij.psi.util.CachedValuesManager;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.ui.UIUtil;
import com.intellij.xml.util.XmlStringUtil;
@@ -75,7 +80,7 @@ public class AndroidLintExternalAnnotator extends ExternalAnnotator<State, State
}
final AndroidFacet facet = AndroidFacet.getInstance(module);
if (facet == null && !IntellijLintProject.hasAndroidModule(module.getProject())) {
if (facet == null && !isDependencyOfAnyAndroidModule(module)) {
return null;
}
@@ -103,6 +108,30 @@ public class AndroidLintExternalAnnotator extends ExternalAnnotator<State, State
return new State(module, vFile, file.getText(), issues);
}
private static boolean isDependencyOfAnyAndroidModule(@NotNull Module module) {
return CachedValuesManager
.getManager(module.getProject())
.getCachedValue(module,
() -> new CachedValueProvider.Result<>(
computeIsDependencyOfAnyAndroidModule(module),
ProjectRootModificationTracker.getInstance(module.getProject())));
}
private static boolean computeIsDependencyOfAnyAndroidModule(@NotNull Module dependency) {
Module[] allModules = ModuleManager.getInstance(dependency.getProject()).getModules();
for (Module module : allModules) {
if (AndroidFacet.getInstance(module) == null) {
continue;
}
if (ModuleRootManager.getInstance(module).isDependsOn(dependency)) {
return true;
}
}
return false;
}
@Override
public State doAnnotate(final State state) {
final IntellijLintClient client = IntellijLintClient.forEditor(state);