Last active
October 4, 2017 14:41
-
-
Save alexvictoor/4e357d9045c9f1afeeac to your computer and use it in GitHub Desktop.
Coverage report & sonarqube analysis msbuild script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> | |
<!-- | |
msbuild build.xml => compile and run unit tests | |
msbuild build.xml /t:CoverageReport => compile, test and generate coverage report | |
msbuild build.xml /t:Sonar => run sonarqube analysis | |
--> | |
<PropertyGroup> | |
<!-- | |
You need to install following nuget packages in your solution first: | |
Nunit.Runners | |
OpenCover | |
ReportGenerator | |
versions may change | |
--> | |
<NUnit-ToolPath>packages\NUnit.Runners.2.6.4\tools\</NUnit-ToolPath> | |
<OpenCover-ToolPath>packages\OpenCover.4.6.166\tools\</OpenCover-ToolPath> | |
<ReportGenerator-ToolPath>packages\ReportGenerator.2.3.2.0\tools\</ReportGenerator-ToolPath> | |
<!-- your app sln file --> | |
<SolutionFile>MY_SOLUTION.sln</SolutionFile> | |
<!-- assembly filter for opencover --> | |
<OpenCover-AssemblyFilter>+[MyAssemblyPrefix*]*</OpenCover-AssemblyFilter> | |
<!-- patterns may change depending of your solution layout --> | |
<CoverageFilesPattern>.build\*.coverage.xml</CoverageFilesPattern> | |
<TestAssembliesPattern>$(MSBuildProjectDirectory)\*\bin\debug\*.Tests.dll</TestAssembliesPattern> | |
<!-- | |
SonarQube stuff for your solution. You need to have MSBuild.SonarQube.Runner.exe | |
installed and availlable in your PATH | |
--> | |
<SonarKey>MySolution</SonarKey> | |
<SonarName>MySolution</SonarName> | |
<SonarVersion>1.0.0.0-Latest</SonarVersion> | |
</PropertyGroup> | |
<UsingTask TaskName="ReportGenerator" AssemblyFile="$(ReportGenerator-ToolPath)\ReportGenerator.exe" /> | |
<ItemGroup> | |
<SourceDirectories Include="$(MSBuildProjectDirectory)" /> | |
</ItemGroup> | |
<Target Name="Clean"> | |
<MSBuild Projects="$(SolutionFile)" Targets="Clean" /> | |
</Target> | |
<Target Name="Compile"> | |
<MSBuild Projects="$(SolutionFile)" Targets="Build" /> | |
</Target> | |
<Target Name="Test" DependsOnTargets="Clean;Compile"> | |
<ItemGroup> | |
<TestAssemblies Include="$(TestAssembliesPattern)" /> | |
</ItemGroup> | |
<MakeDir Directories=".build" /> | |
<Exec Command="$(NUnit-ToolPath)nunit-console-x86.exe %(TestAssemblies.Identity) /nologo /noshadow /domain=single /xml=.build\%(TestAssemblies.filename)-test-results.xml" /> | |
</Target> | |
<Target Name="Build" DependsOnTargets="Test" /> | |
<Target Name="Coverage" DependsOnTargets="Clean;Compile"> | |
<ItemGroup> | |
<TestAssemblies Include="$(TestAssembliesPattern)" /> | |
</ItemGroup> | |
<MakeDir Directories=".build" /> | |
<Delete Files=".build\*.coverage.xml" /> | |
<Delete Files=".build\TestResult.xml" /> | |
<!-- /domain=single is not support by the NUnit msbuild task, and it is required for OpenCover coverage test --> | |
<Exec Command="$(OpenCover-ToolPath)OpenCover.Console.exe -register:user -target:"$(NUnit-ToolPath)nunit-console-x86.exe" -targetargs:"/noshadow %(TestAssemblies.Identity) /domain:single" -filter:"$(OpenCover-AssemblyFilter)" -output:.build\%(TestAssemblies.FileName).coverage.xml" /> | |
</Target> | |
<!-- | |
Run ReportGenerator - local coverage history | |
--> | |
<Target Name="CoverageReport" DependsOnTargets="Coverage"> | |
<ItemGroup> | |
<CoverageFiles Include="$(CoverageFilesPattern)" /> | |
</ItemGroup> | |
<ReportGenerator ReportFiles="@(CoverageFiles)" TargetDirectory="report" ReportTypes="Html" SourceDirectories="@(SourceDirectories)" HistoryDirectory=".coverageHistory" /> | |
<Message Text="Coverage report has been generated: $(MSBuildProjectDirectory)\report\index.htm" /> | |
</Target> | |
<Target Name="SonarEnd"> | |
<Exec Command="MSBuild.SonarQube.Runner.exe end" /> | |
</Target> | |
<!-- | |
Run a sonarqube analysis - coverage included | |
Compile must need to be run first (bug if DependsOnTargets="Compile") | |
--> | |
<Target Name="Sonar" > | |
<ItemGroup> | |
<TestAssemblies Include="$(TestAssembliesPattern)" /> | |
</ItemGroup> | |
<PropertyGroup> | |
<ReportPaths>@(TestAssemblies -> '$(MSBuildProjectDirectory)\.build\%(filename).coverage.xml',',')</ReportPaths> | |
</PropertyGroup> | |
<Exec Command="MSBuild.SonarQube.Runner.exe begin /d:sonar.verbose=true /k:"$(SonarKey)" /n:"$(SonarName)" /v:"$(SonarVersion)" /d:sonar.cs.opencover.reportsPaths="$(ReportPaths)"" /> | |
<MSBuild Projects="$(SolutionFile)" Targets="rebuild" /> | |
<CallTarget Targets="Coverage"/> | |
<CallTarget Targets="SonarEnd"/> | |
</Target> | |
</Project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello!
Do you know it is possible to feed to sonarqube the generated report xml (done by Report Generator)?
Thanks in advance,