Error Prone支持通过插件机制进行自定义检查。使用java.util.ServiceLoader从注解处理器路径动态加载插件检查。
建议使用AutoService指定服务描述符。
插件检查的执行方式与内置检查完全相同,但@AutoService(BugChecker.class)
注解除外:
@AutoService(BugChecker.class) // the service descriptor
@BugPattern(
name = "MyCustomCheck",
// ...
)
public class MyCustomCheck extends BugChecker implements MethodInvocationTreeMatcher {
@Override
public Description matchMethodInvocation(MethodInvocationTree tree, VisitorState state) {
// TODO:
}
}
插件检查允许与设置注解处理器类路径的任何构建系统一起使用
Bazel允许使用java_plugin规则配置注解处理器:
java_plugin(
name = "MyCustomCheckPlugin",
srcs = ["MyCustomCheck.java"],
deps = [
"//third_party/java/auto_service",
"@error_prone//jar",
"@guava//jar",
],
)
有关完整的示例,请参阅:examples/plugin/bazel
从版本3.5开始,maven-compiler-plugin
允许使用annotationProcessorPaths参数配置处理器路径。
有关完整的示例,请参阅:examples/plugin/maven
Gradle还没有(内置)支持设置处理器路径,但是它的灵活性使得手动配置也很容易:
configurations {
annotationProcessor
}
dependencies {
annotationProcessor project(':custom-checks')
}
tasks.withType(JavaCompile) {
options.compilerArgs += [ '-processorpath', configurations.annotationProcessor.asPath ]
}
存在提供这种可配置性的Gradle插件: net.ltgt.apt用于标准Java项目,android-apt或
experimental new Android toolchain用于Android项目。
有关使用net.ltgt.apt
插件的完整示例,请参阅:examples/plugin/gradle
参考链接: plugin checks