Skip to content

Commit 066c787

Browse files
committed
update action
1 parent 15f0cd1 commit 066c787

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Scan Monkey365 with PSScriptAnalyzer
2+
3+
on:
4+
# Triggers the workflow on push or pull request events but only for the develop branch
5+
push:
6+
branches: [ develop ]
7+
pull_request:
8+
branches: [ develop ]
9+
10+
jobs:
11+
psscriptanalyzer_job:
12+
name: PsScriptAnalyzer Monkey365 Scan Job
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v2
17+
- name: Run ScriptAnalyzer
18+
uses: ./
19+
with:
20+
path: .\
21+
recurse: true

action.yml

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: 'Install and run PSScriptAnalyzer'
2+
author: 'Juan Garrido'
3+
description: 'Install and run PSScriptAnalyzer'
4+
branding:
5+
icon: "check-circle"
6+
color: "gray-dark"
7+
inputs:
8+
path:
9+
description: 'Specifies the path to the scripts or module to be analyzed. Wildcard characters are supported.'
10+
required: true
11+
default: '.\'
12+
customRulePath:
13+
description: 'Uses only the custom rules defined in the specified paths to the analysis. To still use the built-in rules, add the -IncludeDefaultRules switch.'
14+
required: false
15+
recurseCustomRulePath:
16+
description: 'Adds rules defined in subdirectories of the CustomRulePath location. By default, Invoke-ScriptAnalyzer uses only the custom rules defined in the specified file or directory. To still use the built-in rules, additionally use the -IncludeDefaultRules switch.'
17+
required: false
18+
excludeRule:
19+
description: 'Omits the specified rules from the Script Analyzer test. Wildcard characters are supported.'
20+
required: false
21+
includeDefaultRules:
22+
description: 'Invoke default rules along with Custom rules.'
23+
required: false
24+
includeRule:
25+
description: 'Runs only the specified rules in the Script Analyzer test. By default, PSScriptAnalyzer runs all rules.'
26+
required: false
27+
severity:
28+
description: 'After running Script Analyzer with all rules, this parameter selects rule violations with the specified severity.'
29+
required: false
30+
recurse:
31+
description: 'Runs Script Analyzer on the files in the Path directory and all subdirectories recursively.'
32+
required: false
33+
suppressedOnly:
34+
description: 'Returns rules that are suppressed, instead of analyzing the files in the path.'
35+
required: false
36+
fix:
37+
description: 'Fixes certain warnings which contain a fix in their DiagnosticRecord.'
38+
required: false
39+
enableExit:
40+
description: 'Exits PowerShell and returns an exit code equal to the number of error records. This can be useful in CI systems.'
41+
required: false
42+
reportSummary:
43+
description: 'Writes a report summary of the found warnings to the host.'
44+
required: false
45+
settings:
46+
description: 'File path that contains user profile or hash table for ScriptAnalyzer.'
47+
required: false
48+
runs:
49+
using: "composite"
50+
steps:
51+
- uses: actions/checkout@v3
52+
- name: Install PSScriptAnalyzer module
53+
shell: pwsh
54+
run: |
55+
Set-PSRepository PSGallery -InstallationPolicy Trusted
56+
Install-Module PSScriptAnalyzer -ErrorAction Stop
57+
- name: Run PSScriptAnalyzer
58+
shell: pwsh
59+
run: |
60+
$ExcludeDirs = @('pipelines','docs','rules','tests')
61+
$files = Get-ChildItem -Path ${{ inputs.path }} -Recurse | Where-Object {$_.FullName -notmatch ($ExcludeDirs -join '|')}
62+
$ScriptAnalyzer = @{
63+
Config = @{IncludeDefaultRules = $true;}
64+
Rules = Get-ScriptAnalyzerRule
65+
}
66+
$Config = $ScriptAnalyzer.Config
67+
$ScriptAnalyzer.Results = $files | Invoke-ScriptAnalyzer @Config
68+
$errors = ScriptAnalyzer.Results.Where({($_.Severity -eq 'Error') -or ($_.Severity -eq 'ParseError')})
69+
$warnings = ScriptAnalyzer.Results.Where({$_.Severity -eq 'Warning'})
70+
$info = ScriptAnalyzer.Results.Where({$_.Severity -eq 'Information'})
71+
if($errors){
72+
foreach ($e in $errors){
73+
$message = ("file={0},line={1},message{2}" -f $e.ScriptName,$e.Line,$e.Message)
74+
Write-Error -Message $message
75+
}
76+
}
77+
if($warnings){
78+
foreach ($e in $warnings){
79+
$message = ("file={0},line={1},message{2}" -f $e.ScriptName,$e.Line,$e.Message)
80+
Write-Warning -Message $message
81+
}
82+
}
83+
if($info){
84+
foreach ($e in $info){
85+
$message = ("file={0},line={1},message{2}" -f $e.ScriptName,$e.Line,$e.Message)
86+
Write-Warning -Message $message
87+
}
88+
}

0 commit comments

Comments
 (0)