访问自定义sonarqube规则中的度量(java检查)

时间:2016-11-03 19:46:36

标签: java plugins sonarqube

您好,我正在使用自定义规则检查为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);
  }

有没有办法如何在此规则中获取指标的测量值,例如代码行,复杂性或其他?或者我使用错误的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

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