-
Notifications
You must be signed in to change notification settings - Fork 7
/
build.xml
114 lines (90 loc) · 4.41 KB
/
build.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<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 anf 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>BrowserLog.sln</SolutionFile>
<!-- assembly filter for opencover -->
<OpenCover-AssemblyFilter>+[BrowserLog]*</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 available in your PATH
-->
<SonarKey>BrowserLog</SonarKey>
<SonarName>BrowserLog</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>