Java 在SonarQube分析期间分析另一个文件(自定义规则)

Java 在SonarQube分析期间分析另一个文件(自定义规则),java,sonarqube,Java,Sonarqube,因此,我目前正在开发一个SonarQube Java插件,其中包含一些自定义规则 其中一个需要分析Java文件中的特定注释,如果缺少该注释,则应报告问题,除非该注释位于其超类中 问题是,在当前分析期间(在类上),我无法分析另一个文件(超类) 有办法做到这一点吗 Obs:我正在使用SonarQube服务器5.6.3和SonarJava插件4.9。您可以使用语义模型获取项目中定义的符号(类、方法等)的信息。当您分析类时,您可以访问类树,所以您可以测试注释是否出现在它的超类上,如下所示 ClassTr

因此,我目前正在开发一个SonarQube Java插件,其中包含一些自定义规则

其中一个需要分析Java文件中的特定注释,如果缺少该注释,则应报告问题,除非该注释位于其超类中

问题是,在当前分析期间(在类上),我无法分析另一个文件(超类)

有办法做到这一点吗


Obs:我正在使用SonarQube服务器5.6.3和SonarJava插件4.9。

您可以使用语义模型获取项目中定义的符号(类、方法等)的信息。当您分析类时,您可以访问
类树
,所以您可以测试注释是否出现在它的超类上,如下所示

ClassTree classTree = (ClassTree) tree;
Symbol.TypeSymbol classSymbol = classTree.symbol();
Type superClass = classSymbol.superClass();
SymbolMetadata superClassMetadata = superClass.symbol().metadata();
if (superClassMetadata.isAnnotatedWith("org.acme.MyAnnotation")) {
  //...
}

例如,请参阅此检查,它使用API

谢谢提示!这对我有很大帮助。