SonarQube de la Couverture de Test avec MsTest
j'ai essayé d'obtenir de l' SonarQube
travailler avec une simple application Point net. J'ai réussi à le faire fonctionner, mais la couverture du code ne fonctionne pas.
il semble que beaucoup d'autres personnes ont fait face à ce problème lorsque SonarQube a cessé de soutenir bon nombre de l'outil de couverture "go to" tel que DotCover and OpenCover
par Gallion
exemples que j'ai suivis:
j'ai essayé quelques outils en ligne de commande de VS pour générer un .coverage
le fichier
vstest.console.exe .UnitTestProject1binDebugUnitTestProject1.dll /EnableCodeCoverage
et
CodeCoverage.exe collect /output:DynamicCodeCoverage.coverage .UnitTestProject1binDebugUnitTestProject1.dll
et écrit un code comme pour le cacher dans un .coveragexml
le fichier ici
à obtenir le XML suivant:
<?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>
et même utilisé XSLT stylesheet fournir dans un qui pourrait être utilisé par le coureur 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>
quand je lance Sonar
- MSBuild.SonarQube.Coureur.exe Begin
- MSBuild
- MSBuild.SonarQube.Coureur.exe fin
j'ai des erreurs comme Causée Par:
unknown XML Node
, Attendre Couverture mais obtenir Résultats
c'est parce qu'il n'aime pas la structure de mon XML, mais je ne suis pas sûr de ce qui est prévu et combien de travail je dois faire sur le fichier de couverture pour le convertir dans un format que le Sonar aime
J'espère que j'ai suivi la mauvaise voie et qu'il y a une façon simple d'intégrer la couverture VS ou coveragexml
fichiers dans Sonar sans trop de travail
Informations Supplémentaires sur mon
Sonar plugins
- c# = 4.1
- Couverture Générique = 1.1
1 réponses
les rapports OpenCover et dotCover sont supportés par le plugin c# 4.1. Définissez sonar.cs.dotcover.reportsPaths
ou sonar.cs.opencover.reportsPaths
propriété respectivement pour les deux outils pour importer la couverture de code.
Gallion n'est pas exactement l'outil: le projet est inactif depuis 2013. Le problème principal avec le Plugin SonarQube C# 2.x plugin qui reposait sur Gallio est qu'il lançait Gallio par lui - même-ne permettant pas à l'utilisateur final de personnaliser la façon dont les tests devraient être lancés et la couverture recueillir.
maintenant la situation est beaucoup plus facile: lancez votre outil de couverture de code préféré, demandez-lui de produire un rapport, et le transmettre au coureur SonarQube MSBuild.
si vous utilisez Team Foundation Server 2013, activer la couverture de code est comme choisir le Enable Code Coverage
option dans la définition de build.
Or, il est très regrettable et déroutant que Microsoft ait deux .coveragexml
formats, et que le Plugin SonarQube C# ne supporte qu'un seul D'entre eux (qui est, pour l'instant. voir http://jira.sonarsource.com/browse/SONARNTEST-3).
en attendant que ce billet soit réparé, voici les étapes à suivre pour produire le .coveragexml
rapport (note: remplacer 14
par 12
dans les différents chemins si vous utilisez VS 2013 au lieu de 2015):
MSBuild.SonarQube.Runner begin /k:SonarQube_Project_Key /n:SonarQube_Project_Name /v:1.0 /d:sonar.cs.vscoveragexml.reportsPaths=%CD%\VisualStudio.coveragexml
msbuild
"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"
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output:VisualStudio.coveragexml VisualStudio.coverage
MSBuild.SonarQube.Runner end
je ne voudrais pas recommander D'utiliser XSLTs pour convertir les formats de rapport de couverture de code, utilisez le CodeCoverage.exe
Microsoft tool à la place.