Replace UastConverter with UastLanguagePlugin, allow additional checkers
This commit is contained in:
+13
-2
@@ -16,12 +16,23 @@
|
||||
|
||||
package com.android.tools.klint.client.api;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.uast.UastAdditionalChecker;
|
||||
import org.jetbrains.uast.UastConverter;
|
||||
import org.jetbrains.uast.java.JavaConverter;
|
||||
import org.jetbrains.uast.java.JavaUastLanguagePlugin;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class JavaLintLanguageExtension extends LintLanguageExtension {
|
||||
@NotNull
|
||||
@Override
|
||||
public UastConverter getConverter() {
|
||||
return JavaConverter.INSTANCE;
|
||||
return JavaUastLanguagePlugin.INSTANCE.getConverter();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<UastAdditionalChecker> getAdditionalCheckers() {
|
||||
return JavaUastLanguagePlugin.INSTANCE.getAdditionalCheckers();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.common.io.Files;
|
||||
import org.jetbrains.uast.UastConverter;
|
||||
import org.jetbrains.uast.UastLanguagePlugin;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
@@ -386,7 +386,7 @@ public abstract class LintClient {
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<UastConverter> getConverters() {
|
||||
public List<UastLanguagePlugin> getLanguagePlugins() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
|
||||
@@ -1445,7 +1445,7 @@ public class LintDriver {
|
||||
if (ideaProject == null) {
|
||||
return;
|
||||
}
|
||||
List<UastConverter> converters = mClient.getConverters();
|
||||
List<UastLanguagePlugin> plugins = mClient.getLanguagePlugins();
|
||||
|
||||
for (JavaContext context : contexts) {
|
||||
fireEvent(LintListener.EventType.SCANNING_FILE, context);
|
||||
@@ -1456,10 +1456,10 @@ public class LintDriver {
|
||||
UastVisitor customVisitor = scanner.createUastVisitor(context);
|
||||
if (customVisitor != null) {
|
||||
UastChecker.INSTANCE.checkWithCustomHandler(
|
||||
ideaProject, context.file, converters, customVisitor);
|
||||
ideaProject, context.file, plugins, customVisitor);
|
||||
} else {
|
||||
UastChecker.INSTANCE.check(
|
||||
ideaProject, context.file, (UastScanner)check, converters, context);
|
||||
ideaProject, context.file, (UastScanner)check, plugins, context);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1498,7 +1498,7 @@ public class LintDriver {
|
||||
}
|
||||
|
||||
UastChecker checker = UastChecker.INSTANCE;
|
||||
List<UastConverter> converters = project.getClient().getConverters();
|
||||
List<UastLanguagePlugin> plugins = project.getClient().getLanguagePlugins();
|
||||
|
||||
for (File file : files) {
|
||||
if (!file.isFile()) {
|
||||
@@ -1506,7 +1506,7 @@ public class LintDriver {
|
||||
}
|
||||
|
||||
String path = file.getPath();
|
||||
if (!path.endsWith(DOT_JAVA) && !UastConverterUtils.isFileSupported(converters, path)) {
|
||||
if (!path.endsWith(DOT_JAVA) && !UastConverterUtils.isFileSupported(plugins, path)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1516,9 +1516,9 @@ public class LintDriver {
|
||||
for (UastScanner detector : detectors) {
|
||||
UastVisitor customHandler = detector.createUastVisitor(context);
|
||||
if (customHandler != null) {
|
||||
checker.checkWithCustomHandler(intellijProject, file, converters, customHandler);
|
||||
checker.checkWithCustomHandler(intellijProject, file, plugins, customHandler);
|
||||
} else {
|
||||
checker.check(intellijProject, file, detector, converters, context);
|
||||
checker.check(intellijProject, file, detector, plugins, context);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2043,9 +2043,8 @@ public class LintDriver {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UastConverter> getConverters() {
|
||||
return mDelegate.getConverters();
|
||||
|
||||
public List<UastLanguagePlugin> getLanguagePlugins() {
|
||||
return mDelegate.getLanguagePlugins();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-12
@@ -16,22 +16,18 @@
|
||||
|
||||
package com.android.tools.klint.client.api;
|
||||
|
||||
import com.android.annotations.NonNull;
|
||||
import com.android.annotations.Nullable;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.uast.UastConverter;
|
||||
import org.jetbrains.uast.UastLanguagePlugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class LintLanguageExtension {
|
||||
public abstract class LintLanguageExtension implements UastLanguagePlugin {
|
||||
public static final ExtensionPointName<LintLanguageExtension> EP_NAME =
|
||||
ExtensionPointName.create("com.android.tools.lint.client.api.lintLanguageExtension");
|
||||
|
||||
@NonNull
|
||||
public abstract UastConverter getConverter();
|
||||
ExtensionPointName.create("com.android.tools.klint.client.api.lintLanguageExtension");
|
||||
|
||||
public static boolean isFileSupported(@Nullable Project project, String path) {
|
||||
LintLanguageExtension[] extensions = getExtensions(project);
|
||||
@@ -44,16 +40,14 @@ public abstract class LintLanguageExtension {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static List<UastConverter> getConverters(@Nullable Project project) {
|
||||
public static List<UastLanguagePlugin> getPlugins(@Nullable Project project) {
|
||||
if (project == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
LintLanguageExtension[] languageExtensions = project.getExtensions(EP_NAME);
|
||||
List<UastConverter> converters = new ArrayList<UastConverter>(languageExtensions.length);
|
||||
for (LintLanguageExtension extension : languageExtensions) {
|
||||
converters.add(extension.getConverter());
|
||||
}
|
||||
List<UastLanguagePlugin> converters = new ArrayList<UastLanguagePlugin>(languageExtensions.length);
|
||||
Collections.addAll(converters, languageExtensions);
|
||||
return converters;
|
||||
}
|
||||
|
||||
|
||||
@@ -155,8 +155,8 @@ public class JavaContext extends Context implements UastAndroidContext {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<UastConverter> getConverters() {
|
||||
return getClient().getConverters();
|
||||
public List<UastLanguagePlugin> getLanguagePlugins() {
|
||||
return getClient().getLanguagePlugins();
|
||||
}
|
||||
|
||||
@org.jetbrains.annotations.Nullable
|
||||
|
||||
@@ -203,7 +203,7 @@ public enum Scope {
|
||||
scope.add(BINARY_RESOURCE_FILE);
|
||||
scope.add(RESOURCE_FOLDER);
|
||||
} else if (UastConverterUtils.isFileSupported(
|
||||
project.getClient().getConverters(), name)) {
|
||||
project.getClient().getLanguagePlugins(), name)) {
|
||||
scope.add(SOURCE_FILE);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user