-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReSharperCodeAnalysisScript.ps1
More file actions
82 lines (69 loc) · 2.93 KB
/
ReSharperCodeAnalysisScript.ps1
File metadata and controls
82 lines (69 loc) · 2.93 KB
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
# -------------------------------------------
# Author: Ramon Bollen
# File: ReSharperCodeAnalysisScript.ps1
# Created on: 20201210
# -------------------------------------------
# --- Helper Functions ---
function WriteXmlToScreen ([xml]$xml)
{
$StringWriter = New-Object System.IO.StringWriter;
$XmlWriter = New-Object System.Xml.XmlTextWriter $StringWriter;
$XmlWriter.Formatting = "indented";
$xml.WriteTo($XmlWriter);
$XmlWriter.Flush();
$StringWriter.Flush();
Write-Output $StringWriter.ToString();
}
# --- Header ---
echo "`n"
echo " ---------------------------------------------"
echo " | Author: Ramon Bollen |"
echo " | File: ReSharperCodeAnalysisScript.ps1 |"
echo " | Created on: 20201210 |"
echo " | v1.1.3 |"
echo " ---------------------------------------------"
echo "`n"
echo "`n"
# --- Main Script ---
$slnFile = Get-ChildItem -Path ".\**" -Filter *.sln -Recurse
wget "https://raw.githubusercontent.com/Nerada/devops.pipelines/master/resharper/main.DotSettings" -outfile "main.DotSettings"
$settingsFile = Get-ChildItem -Path ".\**" -Filter main.DotSettings -Recurse #Get-ChildItem -Path ".\**" -Filter *.sln.DotSettings -Recurse
$severity = "WARNING"
$outputFile = ".\inspect-code-log.xml"
#Container project for Resharper CLT Nuget
$projectForResharperClt = ".\resharperProject.csproj"
Set-Content -Path $projectForResharperClt -Value '<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net5.0</TargetFramework></PropertyGroup></Project>'
$packageDirectory = ".\packages"
echo "Configuration-slnFile: $slnFile"
echo "Configuration-settingsFile: $settingsFile"
echo "Configuration-severity: $severity`n"
echo "Configuration-csproj: $projectForResharperClt"
echo "Configuration-packageDir: $packageDirectory"
echo "Configuration-output: $outputFile"
#Preparing inspectCode tool
& dotnet add $projectForResharperClt package JetBrains.ReSharper.CommandLineTools --package-directory $packageDirectory
#Running code analysis
$inspectCode = Get-ChildItem -Path ".\**" -Filter *inspectcode.exe -Recurse
& $inspectCode --profile=$settingsFile $slnFile -o="$outputFile" -s="$severity"
#Rmove container project
Remove-Item $projectForResharperClt
#processing result file
[xml]$xml = Get-Content $outputFile
echo "`n"
WriteXmlToScreen $xml
if ($xml.Report.Issues.ChildNodes.Count -gt 0)
{
echo "`nIssues found in Code:"
foreach ($node in $xml.Report.Issues.ChildNodes.SelectNodes("//*[@Message]"))
{
$file = $node.attributes['File'].value
$line = $node.attributes['Line'].value
$message = $node.attributes['Message'].value
write-host "##vso[task.LogIssue type=warning;] [$file $line] [$message]"
}
echo "##vso[task.complete result=Failed;]"
}
else
{
echo "`nNo issues found"
}