【问题标题】:Access to measures in custom sonarqube rule (java check)访问自定义 sonarqube 规则中的度量(java 检查)
【发布时间】:2017-03-17 12:57:44
【问题描述】:

您好,我正在为 Sonarqube 编写自己的插件,并带有自定义规则检查。规则应根据对方法或类的一些测量来报告问题。这种方法的关键是访问相关指标的度量。这是我的示例检查类:

@Rule(key = "BrainMethod", name = "Brain method"
public class BrainMethod extends BaseTreeVisitor implements JavaFileScanner {
     private JavaFileScannerContext context;
/* (non-Javadoc)
 * @see org.sonar.plugins.java.api.JavaFileScanner#scanFile(org.sonar.plugins.java.api.JavaFileScannerContext)
 */
@Override
public void scanFile(JavaFileScannerContext context) {
    this.context = context;
   //scan the java file tree
    scan(context.getTree());
}

  /* (non-Javadoc)
 * @see org.sonar.plugins.java.api.tree.BaseTreeVisitor#visitMethod(org.sonar.plugins.java.api.tree.MethodTree)
 */
@Override
  public void visitMethod(MethodTree tree) {
    // here is the place where I want to acces to the measurements
    context.reportIssue(this, tree, String.format("Potentional brain method"));
    super.visitMethod(tree);
  }

有没有什么方法可以获取该规则中的代码行数、复杂性或其他指标的测量值?还是我使用了错误的方法?

【问题讨论】:

  • 你用什么语言编写自定义规则?
  • 插件分析Java代码。
  • 您能更准确地说明您想要达到的目标吗?
  • 例如,我想访问我正在访问的方法的代码行数。一般来说,我问是否有办法在此访问者方法中使用其中一个 CoreMetrics。

标签: java plugins sonarqube


【解决方案1】:

不,没有这样的功能,您的自定义规则负责计算所需的内容。您可以找到一些实用方法,例如 context.getComplexityNodes(methodTree);,但这是一种极端情况。

【讨论】:

  • 因此,如果我理解这是实现这一目标的错误方法。是否有任何选项如何计算每个方法、类..的聚合指标(使用其他指标)并将其定义为规则?
猜你喜欢
  • 2014-04-22
  • 2016-12-22
  • 2017-08-07
  • 2017-01-14
  • 1970-01-01
  • 2016-03-21
  • 2014-07-19
  • 2015-08-28
  • 1970-01-01
相关资源
最近更新 更多