Error-Prone Plugin checks
来源:互联网 发布:linux vim怎样退出 编辑:程序博客网 时间:2024/05/22 09:38
插件检查
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
0 0
- Error-Prone Plugin checks
- Error-Prone Criteria for new checks
- Error Prone Installation
- Error-Prone Patching
- Error-Prone Refaster templates
- Contribute checker for error-prone
- Error-Prone Command-line flags
- Managing Dynamic Memory Is Error-prone
- Plugin Error
- Error-prone,Google出品的Java和Android Bug分析利器
- Error-prone,Google出品的Java和Android Bug分析利器
- Eclipse SVN Plugin Error
- AndroidStudio2.0:plugin error
- Vulnerability checks
- ERROR: bootstrap checks failed max file descriptors [4096] for elasticsearch process likely too low,
- 解决tomcat plugin 404 error
- Openfire Monitoring/jinglenodes plugin error
- MAVEN ERROR maven-resources-plugin
- 图的遍历和创建
- Python中NumPy的使用
- CentOS6.5安装Kafka
- 修改sln和project工程名
- MyEclipse安装JS代码提示(Spket插件)
- Error-Prone Plugin checks
- studio2.1 pull仓库refusing to merge unrelated histories
- SpringMVC中使用Interceptor拦截器
- 并发性能优化 – 降低锁粒度
- 在TX1上配置TLD算法环境遇到的问题(一)
- Linux下安装Laravel遇到的问题
- 实验:c++实验4-项目6
- 技术管理系列2 -- 如何在一个团队塑造自己的影响力?
- 实验:C++实验4-项目6