Ho cercato di ottenere SonarQube
lavorando con una semplice applicazione dot net. Ho avuto un discreto successo, ma la copertura del codice non funziona.SonarQube Test Coverage con MsTest
Sembra che molte altre persone hanno affrontato questo problema quando SonarQube interrotto il supporto per molti dei strumento di copertura di 'andare a' quali DotCover and OpenCover
via Gallio
esempi che ho seguito sono:
ho provato alcuni degli strumenti a linea di comando VS per generare un file
vstest.console.exe .\UnitTestProject1\bin\Debug\UnitTestProject1.dll /EnableCodeCoverage
e
CodeCoverage.exe collect /output:DynamicCodeCoverage.coverage .\UnitTestProject1\bin\Debug\UnitTestProject1.dll
.coverage
e scritto un po 'di codice come per convertirlo in un .coveragexml
file da here
Per ottenere quanto segue 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>
E anche foglio di stile XSLT utilizzato Indicare in quella che potrebbe essere utilizzato da parte del corridore SonarQube
<?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>
quando corro Sonar
- MSBuild.SonarQube.Runner. exe Inizio
- MSBuild
- MSBuild. SonarQube.Runner.exe fine
ricevo errori come causati da:
unknown XML Node
, si aspettano copertura ma ottenuto Risultati
Questo perché la sua non piace la struttura del mio XML, ma non sono sicuro di cosa si stia aspettando e quanto lavoro devo fare sul file di copertura per convertirlo in un formato che piace a Sonar
Speriamo di aver percorso il percorso sbagliato e lì s un modo semplice per integrare VS copertura o coveragexml
file in Sonar senza troppo lavoro
informazioni extra sul mio
Sonar plugins
sono
- C# = 4.1
- Generico Copertura = 1.1
Grazie per la rapida risposta! Ha funzionato perfettamente. Ho ottenuto la copertura del codice importata utilizzando CodeCoverage.exe. Non usiamo TFS (TeamCity è il nostro standard), quindi non ho esplorato tale opzione. Non ho provato la soluzione suggerita OpenCover o DotCover ma lo farò e riferirò. – user3210699
@ user3210699 Ciao, hai mai avuto l'opzione OpenCover che funziona con MSTest? – Saan
Ciao, ho provato OpenCover solo con VSTest, ma mi aspetto che MSTest funzioni in modo simile. Puoi consultare http://docs.sonarqube.org/display/PLUG/C%23+Code+Coverage+Results+Import per le istruzioni complete. –