当前位置: 首页 > 工具软件 > error-prone > 使用案例 >

Error-Prone Plugin checks

燕禄
2023-12-01

插件检查

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

Bazel允许使用java_plugin规则配置注解处理器:

java_plugin(
    name = "MyCustomCheckPlugin",
    srcs = ["MyCustomCheck.java"],
    deps = [
        "//third_party/java/auto_service",
        "@error_prone//jar",
        "@guava//jar",
    ],
)

有关完整的示例,请参阅:examples/plugin/bazel

Maven

从版本3.5开始,maven-compiler-plugin允许使用annotationProcessorPaths参数配置处理器路径。

有关完整的示例,请参阅:examples/plugin/maven

Gradle

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

 类似资料: