利用jdt快速实现pmd的功能
生活随笔
收集整理的這篇文章主要介紹了
利用jdt快速实现pmd的功能
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
jdt可以做語法樹分析,并且支持visitor模式對(duì)代碼進(jìn)行分析。跟pmd的分析方式一樣,我們只要實(shí)現(xiàn) visitor接口即可實(shí)現(xiàn)一個(gè)插件。
@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); //設(shè)置Java語言規(guī)范版本
static {
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setCompilerOptions(null);
parser.setResolveBindings(true);
Map<String, String> compilerOptions = JavaCore.getOptions();
//設(shè)置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);
//設(shè)置編譯選項(xiàng)
parser.setCompilerOptions(compilerOptions);
}
private void jdtPrase(byte[] fileContent, String giturl) {
parser.setSource(new String(fileContent).toCharArray());
//下個(gè)斷點(diǎn)可以看看cu的types成員就是整個(gè)語法樹
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
//RequestMappingVisitor是個(gè)ASTVisitor的實(shí)現(xiàn)類 ,相當(dāng)于一個(gè)插件 RequestMappingVisitor requestMappingVisitor = new RequestMappingVisitor();
cu.accept(requestMappingVisitor); //利用這個(gè)插件visit所有的語法樹節(jié)點(diǎn)
}
}
轉(zhuǎn)載于:https://www.cnblogs.com/SEC-fsq/p/8607561.html
總結(jié)
以上是生活随笔為你收集整理的利用jdt快速实现pmd的功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 风之青鸟神器,100分
- 下一篇: github的删除