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

时间:2017-07-26 17:15:28

标签: java sonarqube

因此,我正在开发一个带有一些自定义规则的SonarQube Java插件。

其中一个需要分析Java文件以获取特定的注释,如果它缺失,它应报告一个问题,除非注释在其超类上。

问题是我无法在当前分析中(在课堂上)分析另一个文件(超类)。

有办法做到这一点吗?

Obs:我正在使用SonarQube Server 5.6.3和Sonar Java Plugin 4.9。

1 个答案:

答案 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​​