11

SonarQube私は単純なドットネットアプリで作業しようとしています。起動して実行することにある程度成功しましたが、コードカバレッジが機能していません。

SonarQube が Gallio などの「go to」カバレッジ ツールの多くのサポートを中止したとき、他の多くの人々がこの問題に直面したようDotCover and OpenCoverです

私が従った例は次のとおりです。

.coverageファイルを生成するためにいくつかのVSコマンドラインツールを試しました

vstest.console.exe .\UnitTestProject1\bin\Debug\UnitTestProject1.dll /EnableCodeCoverage

CodeCoverage.exe collect /output:DynamicCodeCoverage.coverage .\UnitTestProject1\bin\Debug\UnitTestProject1.dll

そして、ここ.coveragexmlからファイルに変換するようなコードを書きました

次の XML を取得するには:

<?xml version="1.0" standalone="yes"?>
<CoverageDSPriv>
  <Module>
    <ModuleName>unittestproject1.dll</ModuleName>
    <ImageSize>32768</ImageSize>
    <ImageLinkTime>0</ImageLinkTime>
    <LinesCovered>12</LinesCovered>
    <LinesPartiallyCovered>0</LinesPartiallyCovered>
    <LinesNotCovered>0</LinesNotCovered>
    <BlocksCovered>9</BlocksCovered>
    <BlocksNotCovered>0</BlocksNotCovered>
    <NamespaceTable>
      <BlocksCovered>9</BlocksCovered>
      <BlocksNotCovered>0</BlocksNotCovered>
      <LinesCovered>12</LinesCovered>
      <LinesNotCovered>0</LinesNotCovered>

また、SonarQube ランナーが使用できる XSLT スタイルシートを使用することもできます。

<?xml version="1.0" encoding="utf-8"?>
<results>
  <modules>
    <module name="unittestproject1.dll" path="unittestproject1.dll" block_coverage="100" line_coverage="100" blocks_covered="9" blocks_not_covered="0" lines_covered="12" lines_partially_covered="0" lines_not_covered="0">
      <functions>
        <function name="Setup" type_name="UnitTest1" block_coverage="100" line_coverage="100" blocks_covered="1" blocks_not_covered="0" lines_covered="2" lines_partially_covered="0" lines_not_covered="0">
          <ranges>
            <range source_id="1" covered="yes" start_line="13" start_column="9" end_line="13" end_column="10" />
            <range source_id="1" covered="yes" start_line="15" start_column="9" end_line="15" end_column="10" />
          </ranges>
        </function>

ソナーを実行すると

  1. MSBuild.SonarQube.Runner.exe 開始
  2. MSBuild
  3. MSBuild.SonarQube.Runner.exe 終了

unknown XML NodeCaused By: 、Expect Coverageのようなエラーが表示されますが、結果が得られました

これは、XML の構造が気に入らないためですが、Sonar が好む形式に変換するためにカバレッジ ファイルで何が期待されているのか、どのくらいの作業を行う必要があるのか​​わからないためです。

うまくいけば、私は間違った道を進んでおり、VSカバレッジまたはcoveragexmlファイルをあまり作業せずにSonarに統合する簡単な方法があります

Sonar plugins私のアールに関する追加情報

  1. c# = 4.1
  2. 一般カバレッジ = 1.1
4

2 に答える 2

7

C# 4.1 プラグインでは、OpenCover レポートと dotCover レポートの両方がサポートされています。コード カバレッジをインポートするには、両方のツールのsonar.cs.dotcover.reportsPathsまたはプロパティをそれぞれ設定します。sonar.cs.opencover.reportsPaths

Gallio は頼りになるツールではありません。このプロジェクトは 2013 年から活動を停止しています。Gallio に依存していた SonarQube C# Plugin 2.x プラグインの主な問題は、Gallio を単独で起動していたことであり、エンドユーザーがカスタマイズすることはできませんでした。テストを開始し、カバレッジを収集する方法。

状況ははるかに簡単です。お気に入りのコード カバレッジ ツールを起動し、レポートを生成するように依頼して、MSBuild SonarQube Runner にフィードします。

Team Foundation Server 2013 を使用している場合、コード カバレッジを有効にすることEnable Code Coverageは、ビルド定義でオプションを選択することと同じです。

現在、Microsoft には 2 つの異なる.coveragexml形式があり、SonarQube C# プラグインはそのうちの 1 つしかサポートしていないことは非常に残念であり、混乱を招きます (つまり、現時点ではhttp://jira.sonarsource.com/browse/SONARNTEST-3を参照してください) 。 .

そのチケットが修正されるのを待っている間、期待される.coveragexmlレポートを生成する手順は次のとおりです (注: 2015 ではなく VS 2013 を使用している場合は、さまざまなパスで置き換え14てください)。12

  1. MSBuild.SonarQube.Runner begin /k:SonarQube_Project_Key /n:SonarQube_Project_Name /v:1.0 /d:sonar.cs.vscoveragexml.reportsPaths=%CD%\VisualStudio.coveragexml
  2. msbuild
  3. "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" collect /output:VisualStudio.coverage "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "UnitTestProject1\bin\Debug\UnitTestProject1.dll"
  4. "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output:VisualStudio.coveragexml VisualStudio.coverage
  5. MSBuild.SonarQube.Runner end

XSLT を使用してコード カバレッジ レポートの形式を変換することはお勧めしませんCodeCoverage.exe。代わりに Microsoft ツールを使用してください。

于 2015-08-04T13:33:07.377 に答える