Add some necessary contents for diagnostic suppressions. by t-lipingma · Pull Request #1694 · PowerShell/PSScriptAnalyzer
To make -SuppressedOnly / -IncludeSuppressions exclusive.
I used the logic below:
Function TestParamSet {
[CmdletBinding(DefaultParameterSetName="File1")]
Param
(
[Parameter(Position = 0,ParameterSetName = 'File1',Mandatory = true)]
[Parameter(Position = 0,ParameterSetName = 'File2',Mandatory = true]
[switch] $Path,
[Parameter(Position = 0,ParameterSetName = 'ScriptDefinition1',Mandatory = true)]
[Parameter(Position = 0,ParameterSetName = 'ScriptDefinition2',Mandatory = true)]
[switch] $ScriptDefinition,
[Parameter(ParameterSetName = 'File1', Mandatory = false)]
[Parameter(ParameterSetName = 'ScriptDefinition1', Mandatory = false)]
[switch] $SuppressedOnly,
[Parameter(ParameterSetName = 'File2', Mandatory = true)]
[Parameter(ParameterSetName = 'ScriptDefinition2', Mandatory = true)]
[switch] $IncludeSuppressions
[Parameter(Position = 0,ParameterSetName = 'File1',Mandatory = false)]
[Parameter(Position = 0,ParameterSetName = 'File2',Mandatory = false]
[switch] $Fix,
)
Process {
#Do Nothing
}
}
1、Invoke-ScriptAnalyzer C:\build.ps1 --> ParameterSetName==DefaultParameterSetName.
2、Invoke-ScriptAnalyzer -Path C:\build.ps1 --> ParameterSetName==DefaultParameterSetName.
3、Invoke-ScriptAnalyzer -Path C:\build.ps1 -SuppressedOnly --> ParameterSetName=="File1".
4、Invoke-ScriptAnalyzer -Path C:\build.ps1 -IncludeSuppressions --> ParameterSetName=="File2".
5、Invoke-ScriptAnalyzer -ScriptDefinition $tmp --> ParameterSetName=="ScriptDefinition1".
6、Invoke-ScriptAnalyzer -ScriptDefinition $tmp -SuppressedOnly --> ParameterSetName=="ScriptDefinition1"
7、Invoke-ScriptAnalyzer -ScriptDefinition $tmp -IncludeSuppressions -->ParameterSetName=="ScriptDefinition2"