利用jdt快速实现pmd的功能
2024-08-27 08:47:37
jdt可以做语法树分析,并且支持visitor模式对代码进行分析。跟pmd的分析方式一样,我们只要实现 visitor接口即可实现一个插件。
@Service("requestMappingInfoService")
public class RequestMappingInfoServiceImpl implements RequestMappingInfoService { int c = 0; private static OkHttpClient httpClient = new OkHttpClient();
private static GitlabAPI gla = GitlabAPI.connect("https://git.xxx.com", "mytoken");
private static ASTParser parser = ASTParser.newParser(AST.JLS8); //设置Java语言规范版本 static {
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setCompilerOptions(null);
parser.setResolveBindings(true); Map<String, String> compilerOptions = JavaCore.getOptions();
//设置Java语言版本
compilerOptions.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_8);
compilerOptions.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_8);
compilerOptions.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_8);
//设置编译选项
parser.setCompilerOptions(compilerOptions); } private void jdtPrase(byte[] fileContent, String giturl) { parser.setSource(new String(fileContent).toCharArray()); //下个断点可以看看cu的types成员就是整个语法树
CompilationUnit cu = (CompilationUnit) parser.createAST(null); //RequestMappingVisitor是个ASTVisitor的实现类 ,相当于一个插件
RequestMappingVisitor requestMappingVisitor = new RequestMappingVisitor();
cu.accept(requestMappingVisitor); //利用这个插件visit所有的语法树节点 }
}
最新文章
- 找不到方法:";!!0[] System.Array.Empty()";.
- swap的应用两个数的交换
- C语言学习014:结构化数据类型
- Linux里startup.sh 和 shutdown.sh
- Kanzi入门
- [STL]set/multiset用法详解[自从VS2010开始,set的iterator类型自动就是const的引用类型]
- String 方法
- This function or variable may be unsafe. Consider using scanf_s instead.
- httpd sshd firewalld 服务后面的d的意思
- Install Nagios (Agent) nrpe client and plugins in Ubuntu/Debian
- Android定制:修改开机启动画面
- vs widows服务的开发
- Linux设备驱动Hello World程序介绍
- statik golang 静态资源嵌入二进制文件工具使用(docker 构建)
- javascript Function类型
- sql 字符串操作
- centos6.8上安装paramiko
- java 基础 --集合--013
- 利用xcopy在复制文件或文件夹的时候保留其权限
- 北京Uber优步司机奖励政策(12月22日)