因此,我目前正在开发一个带有一些自定义规则的SonarQube Java插件。
其中之一需要分析Java文件中的特定注释,如果缺少,则应该报告一个问题,除非该注释位于其超类上。
问题是,在当前分析期间(在类上),我无法分析另一个文件(超类)。
有办法这样做吗?
我使用的是SonarQube服务器5.6.3和Sonar插件4.9。
发布于 2017-07-28 09:23:43
您可以使用语义模型获取有关符号的信息(类、方法、.)在项目中定义。当您分析类时,您可以访问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")) {
//...
}例如,请参见此检查实现,它使用API
https://stackoverflow.com/questions/45333501
复制相似问题