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>
ソナーを実行すると
- MSBuild.SonarQube.Runner.exe 開始
- MSBuild
- MSBuild.SonarQube.Runner.exe 終了
unknown XML Node
Caused By: 、Expect Coverageのようなエラーが表示されますが、結果が得られました
これは、XML の構造が気に入らないためですが、Sonar が好む形式に変換するためにカバレッジ ファイルで何が期待されているのか、どのくらいの作業を行う必要があるのかわからないためです。
うまくいけば、私は間違った道を進んでおり、VSカバレッジまたはcoveragexml
ファイルをあまり作業せずにSonarに統合する簡単な方法があります
Sonar plugins
私のアールに関する追加情報
- c# = 4.1
- 一般カバレッジ = 1.1