【发布时间】: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。