【问题标题】:Analyze another file during SonarQube analysis (custom rule)在 SonarQube 分析期间分析另一个文件(自定义规则)
【发布时间】:2017-07-28 17:23:43
【问题描述】:

所以,我目前正在开发一个带有一些自定义规则的 SonarQube Java 插件。

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

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

有没有办法做到这一点?

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

【问题讨论】:

    标签: java sonarqube


    【解决方案1】:

    您可以使用语义模型来获取有关项目中定义的符号(类、方法...)的信息。当您分析类时,您可以访问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

    【讨论】:

    • 感谢您的提示!这对我有很大帮助。
    猜你喜欢
    • 2015-09-21
    • 2018-01-25
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 2018-11-09
    • 2011-11-26
    相关资源
    最近更新 更多