因此,我正在开发一个带有一些自定义规则的SonarQube Java插件。
其中一个需要分析Java文件以获取特定的注释,如果它缺失,它应报告一个问题,除非注释在其超类上。
问题是我无法在当前分析中(在课堂上)分析另一个文件(超类)。
有办法做到这一点吗?
Obs:我正在使用SonarQube Server 5.6.3和Sonar Java Plugin 4.9。
答案 0 :(得分:3)
您可以使用语义模型来获取有关项目中定义的符号(类,方法,...)的信息。分析类时,您可以访问ClassTree
,因此您可以测试其超类中是否存在注释
ClassTree classTree = (ClassTree) tree;
Symbol.TypeSymbol classSymbol = classTree.symbol();
Type superClass = classSymbol.superClass();
SymbolMetadata superClassMetadata = superClass.symbol().metadata();
if (superClassMetadata.isAnnotatedWith("org.acme.MyAnnotation")) {
//...
}
例如,请参阅此检查implementation,它使用API