您好,我正在使用自定义规则检查为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);
}
有没有办法如何在此规则中获取指标的测量值,例如代码行,复杂性或其他?或者我使用错误的方法来做到这一点?
答案 0 :(得分:1)
没有这样的功能,您的自定义规则负责计算所需内容。您可以找到一些实用工具方法,例如context.getComplexityNodes(methodTree);
,但这是一种极端情况。