@@ -29,15 +29,75 @@ $packageConfig = [xml](Get-Content ..\.nuget\packages.config)
2929$opencover_version = $packageConfig.SelectSingleNode (' /packages/package[@id="OpenCover"]' ).version
3030$reportgenerator_version = $packageConfig.SelectSingleNode (' /packages/package[@id="ReportGenerator"]' ).version
3131$xunitrunner_version = $packageConfig.SelectSingleNode (' /packages/package[@id="xunit.runner.console"]' ).version
32+ $pdb2pdb_version = $packageConfig.SelectSingleNode (' /packages/package[@id="Microsoft.DiaSymReader.Pdb2Pdb"]' ).version
3233
3334$packages_folder = ' ..\packages'
3435$opencover_console = " $packages_folder \OpenCover.$opencover_version \tools\OpenCover.Console.exe"
3536$xunit_runner_console = " $packages_folder \xunit.runner.console.$xunitrunner_version \tools\xunit.console.x86.exe"
3637$report_generator = " $packages_folder \ReportGenerator.$reportgenerator_version \tools\ReportGenerator.exe"
38+ $pdb2pdb = " $packages_folder \Microsoft.DiaSymReader.Pdb2Pdb.$pdb2pdb_version \tools\Pdb2Pdb.exe"
3739$report_folder = ' .\OpenCover.Reports'
40+ $symbols_folder = ' .\OpenCover.Symbols'
3841$target_dll = " ..\StyleCop.Analyzers\StyleCop.Analyzers.Test\bin\$Configuration \net452\StyleCop.Analyzers.Test.dll"
3942$target_dll_csharp7 = " ..\StyleCop.Analyzers\StyleCop.Analyzers.Test.CSharp7\bin\$Configuration \net46\StyleCop.Analyzers.Test.CSharp7.dll"
4043
44+ If (Test-Path $symbols_folder ) {
45+ Remove-Item - Recurse - Force $symbols_folder
46+ }
47+
48+ $symbols_folder_csharp6 = Join-Path $symbols_folder ' CSharp6'
49+ $symbols_folder_csharp7 = Join-Path $symbols_folder ' CSharp7'
50+ mkdir $symbols_folder | Out-Null
51+ mkdir $symbols_folder_csharp6 | Out-Null
52+ mkdir $symbols_folder_csharp7 | Out-Null
53+
54+ function Convert-Coverage-Pdb () {
55+ param (
56+ [string ]$assembly ,
57+ [string ]$outputDir
58+ )
59+ $sourceDir = [IO.Path ]::GetDirectoryName($assembly )
60+ $outputName = [IO.Path ]::ChangeExtension([IO.Path ]::GetFileName($assembly ), ' pdb' )
61+ $sourcePdb = Join-Path $sourceDir $outputName
62+ $output = Join-Path $outputDir $outputName
63+ if (Test-Path $sourcePdb ) {
64+ & $pdb2pdb $assembly / out $output
65+
66+ # Workaround for https://github.com/OpenCover/opencover/issues/800
67+ Remove-Item $sourcePdb
68+ Copy-Item $assembly $outputDir
69+ }
70+ }
71+
72+ function Extract-Coverage-Pdb () {
73+ param (
74+ [string ]$assembly ,
75+ [string ]$outputDir
76+ )
77+ $sourceDir = [IO.Path ]::GetDirectoryName($assembly )
78+ $outputName = [IO.Path ]::ChangeExtension([IO.Path ]::GetFileName($assembly ), ' pdb' )
79+ $intermediatePdb = Join-Path $sourceDir $outputName
80+ $output = Join-Path $outputDir $outputName
81+ if (-not (Test-Path $output )) {
82+ & $pdb2pdb $assembly / out $intermediatePdb / extract
83+ if (Test-Path $intermediatePdb ) {
84+ & $pdb2pdb $assembly / pdb $intermediatePdb / out $output
85+ Remove-Item $intermediatePdb
86+
87+ # Workaround for https://github.com/OpenCover/opencover/issues/800
88+ Copy-Item $assembly $outputDir
89+ }
90+ }
91+ }
92+
93+ $target_dir = [IO.Path ]::GetDirectoryName($target_dll )
94+ Get-ChildItem $target_dir - Filter * .dll | Foreach-Object { Convert-Coverage - Pdb - assembly $_.FullName - outputDir $symbols_folder_csharp6 }
95+ Get-ChildItem $target_dir - Filter * .dll | Foreach-Object { Extract- Coverage- Pdb - assembly $_.FullName - outputDir $symbols_folder_csharp6 }
96+
97+ $target_dir = [IO.Path ]::GetDirectoryName($target_dll_csharp7 )
98+ Get-ChildItem $target_dir - Filter * .dll | Foreach-Object { Convert-Coverage - Pdb - assembly $_.FullName - outputDir $symbols_folder_csharp7 }
99+ Get-ChildItem $target_dir - Filter * .dll | Foreach-Object { Extract- Coverage- Pdb - assembly $_.FullName - outputDir $symbols_folder_csharp7 }
100+
41101If (Test-Path $report_folder ) {
42102 Remove-Item - Recurse - Force $report_folder
43103}
@@ -55,6 +115,7 @@ If ($AppVeyor) {
55115 - filter:" +[StyleCop*]*" `
56116 - excludebyattribute:* .ExcludeFromCodeCoverage* `
57117 - excludebyfile:* \* Designer.cs `
118+ - searchdirs:" $symbols_folder_csharp6 " `
58119 - output:" $report_folder \OpenCover.StyleCopAnalyzers.xml" `
59120 - target:" $xunit_runner_console " `
60121 - targetargs:" $target_dll -noshadow $AppVeyorArg "
@@ -71,6 +132,7 @@ If ($AppVeyor -and -not $?) {
71132 - filter:" +[StyleCop*]*" `
72133 - excludebyattribute:* .ExcludeFromCodeCoverage* `
73134 - excludebyfile:* \* Designer.cs `
135+ - searchdirs:" $symbols_folder_csharp7 " `
74136 - output:" $report_folder \OpenCover.StyleCopAnalyzers.xml" `
75137 - mergebyhash - mergeoutput `
76138 - target:" $xunit_runner_console " `
0 commit comments