2016-11-17 6 views
1

私はsonarqube 5.6をインストールし、C#のプラグインをダウンロードしてください。んSonarQube 5.6は、ソナー・プラグインAPIバージョン4.5.2で開発されたプラグインでデコレーターを実行しますか?

私はC#のプラグインを拡張することを決定したので、私はプラグインがインストールされています(バージョン5.3.2)のコードをダウンロードして進みます。

C#プラグインプロジェクトは、ソナー・プラグインAPIバージョン4.5.2

への参照を持っている私は、そのため、プロジェクトレベルのために計算する必要が新しいメトリックを追加、およびドキュメント以下、私がDecoratorを作成します。

public class CSharpMyDecorator implements Decorator{ 
    private static final Logger LOG = LoggerFactory.getLogger(CSharpMyDecorator.class); 

    @Override 
    public boolean shouldExecuteOnProject(Project arg0) { 
     // TODO Auto-generated method stub 
     return true; 
    } 

    @Override 
    public void decorate(Resource resource, DecoratorContext context) { 

     LOG.info(resource.getName() + " Is Project: " + Scopes.isProject(resource) +" Is project not Module:" + Qualifiers.isProject(resource, false)); 


     if (Scopes.isProject(resource) && Qualifiers.isProject(resource, false)) { 
      double files = 0d; 
      double percentage = 0d; 
      LOG.info("files: "+context.getMeasure(CoreMetrics.FILES).getValue()); 

      for (Measure measure : context.getChildrenMeasures(MyMetrics.FILES_DONT_PASS_FUNCTION_THRESHOLD)) { 
       files += measure.getValue(); 
      } 

      percentage = files/context.getMeasure(CoreMetrics.FILES).getValue(); 
      context.saveMeasure(MyMetrics.PERC_FILES_DONT_PASS_FUNCTION_THRESHOLD, percentage); 
     } 

    } 

} 

私はプラグインクラスを追加:私は分析を実行すると

public class CSharpPlugin extends SonarPlugin { 

    public static final String LANGUAGE_KEY = "cs"; 
    public static final String LANGUAGE_NAME = "C#"; 

    public static final String FILE_SUFFIXES_KEY = "sonar.cs.file.suffixes"; 
    public static final String FILE_SUFFIXES_DEFVALUE = ".cs"; 

    public static final String CSHARP_WAY_PROFILE = "Sonar way"; 

    public static final String REPOSITORY_KEY = "csharpsquid"; 
    public static final String REPOSITORY_NAME = "SonarQube"; 

    public static final String IGNORE_HEADER_COMMENTS = "sonar.cs.ignoreHeaderComments"; 
    public static final String NUMBER_FUNCTION_THRESHOLD = "sonar.cs.numberFunctionThreshold"; 
    public static final String NUMBER_LOC_THRESHOLD = "sonar.cs.numberLocThreshold"; 

    @Override 
    public List getExtensions() { 
    ImmutableList.Builder builder = ImmutableList.builder(); 

    builder.add(
     CSharp.class, 
     CSharpSonarRulesDefinition.class, 
     CSharpSonarWayProfile.class, 
     CSharpCommonRulesEngine.class, 
     CSharpCommonRulesDecorator.class, 
     CSharpSourceCodeColorizer.class, 
     RuleRunnerExtractor.class, 
     CSharpSensor.class, 
     CSharpCPDMapping.class, 
     SonarLintProfileExporter.class, 
     SonarLintFakeProfileImporter.class, 
     RoslynProfileExporter.class, 
     MyMetrics.class, 
     CSharpMyDecorator.class 
    ); 

    builder.addAll(CSharpFxCopProvider.extensions()); 
    builder.addAll(CSharpCodeCoverageProvider.extensions()); 
    builder.addAll(CSharpUnitTestResultsProvider.extensions()); 
    builder.addAll(CSharpMsBuildIntegrationProvider.extensions()); 
    builder.addAll(RoslynProfileExporter.sonarLintRepositoryProperties()); 

    return builder.build(); 
    } 

} 

、メトリックどちらが作成され、また尺度が保存されます。ログの確認

は(私はverboseオプションを有効に)生成され、私はデコレータの実行への参照を見つけていません。デコレータ内のコードから期待されるLOGエントリさえありません。

私はデコレータがコールされていないのはなぜMSBuild.SonarQube.Runner.exeバージョン2.0

を使用していますか?それはSonarQubeのバージョンの問題ですか?

+0

タグを変更するのではなく、答えが評価されます – XtianGIS

+1

敬意を表していることにも感謝します。 SimonBrandhof-SonarSource @ –

+0

、G.アンは欲求不満の少しは私を受け入れ、私を深くお詫び申し上げます。 – XtianGIS

答えて

1

拡張ポイントデコレータは、シリーズ5.xの最も求められていた機能の1つ、つまりスキャナをデータベースから隔離するために設計されていないため、バージョン5.2で削除されました。

詳細はhttp://docs.sonarqube.org/display/DEV/API+Changesでグループhttps://groups.google.com/forum/#!forum/sonarqubeに見出すことができます。

+0

私はC#プラグインの最後のバージョンを使いたいのですが、Mavenリポジトリは古くなっています。 Mavenをコンパイルしようとすると、GitHubからコードをダウンロードします。http://repo1.maven.org/maven2/org/sonarsource/dotnet/から依存関係を取得しようとします。そのうちの1つ(SonarAnalyzer.Scanner)を見つけることができません。 – XtianGIS

+0

C#プラグインとMavenリポジトリの関係は何ですか?プラグインのインストール方法については、http://docs.sonarqube.org/display/PLUG/C%23+Pluginを参照してください。 –