2016-11-03 9 views
0

こんにちは、カスタムルールチェックを使用してSonarqube用の独自のプラグインを作成しています。ルールは、メソッドやクラスの測定値に基づいて問題を報告する必要があります。このアプローチの鍵は、関連するメトリックの測定値にアクセスすることです。ここに私のサンプルチェッククラスがある:カスタムsonarqubeルールの対策へのアクセス(java check)

@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

どの言語でカスタムルールを作成していますか? –

+0

プラグインはJavaコードを解析します。 – franz9

+0

あなたは達成したいことについてちょっと正確なことができますか? – benzonico

答えて

1

いいえこのような機能はありません。必要なものを計算するのは、カスタムルールの責任です。あなたはcontext.getComplexityNodes(methodTree);のようないくつかのユーティリティメソッドを見つけることができますが、それは一種のコーナーケースです。

+0

それを達成するのは間違ったアプローチだと私が理解すれば。各メソッド(クラス)に対して集計メトリック(他のメトリックを使用して)を計算し、それをルールとして定義する方法はありますか? – franz9

関連する問題