Rule `PSAvoidShouldContinueWithoutForce` doesn't enforce correct use of the `Force` parameter
Currently PSScriptAnalyzer shows a PSAvoidShouldContinueWithoutForce violation for any scripts using $PSCmdlet.ShouldContinue that do not include a $Force parameter.
However, once the parameter the violation is resolved; even if that parameter is never used elsewhere in the code.
Steps to reproduce
function Invoke-MVP { [CmdletBinding(SupportsShouldProcess = $true)] [OutputType('System.String')] Param ( [Parameter()] [switch]$Force # Including this parameter resolves the PSAvoidShouldContinueWithoutForce violation; even though we don't reference Force in the rest of the code ) if ($PSCmdlet.ShouldContinue('Should I continue','Should I continue')) { 'I continued' } } # ... Invoke-ScriptAnalyzer -Path '.\Invoke-MVP.ps1'
Expected behavior
A violation of rule PSAvoidShouldContinueWithoutForce should occur.
Actual behavior
The code is deemed free of violations.
Environment data
> $PSVersionTable Name Value ---- ----- PSVersion 5.1.14409.1018 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.14409.1018 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 > (Get-Module -ListAvailable PSScriptAnalyzer).Version | ForEach-Object { $_.ToString() } 1.18.1