PowerShell / PowerShell/PSScriptAnalyzer
PSShouldProcess rule ignores ShouldContinue
Aberta
Ninguém assumiu esta issue ainda.
Area - Rules
Issue - Bug
- Linguagem predominante
- C#
- Estrelas
- 2.2k
- Forks
- 415
- Merge médio
- 13h 1min
- PRs com merge (30d)
- 2
Descrição
Steps to reproduce
# File: c:\temp\Invoke-MVP.ps1
function Invoke-MVP {
[CmdletBinding(SupportsShouldProcess = $true)] # This line shows an exception
[OutputType('System.String')]
Param (
[Parameter()]
[switch]$Force # just to hide PSAvoidShouldContinueWithoutForce for this MVP
)
{
if ($PSCmdlet.ShouldContinue('Should I continue','Should I continue')) {
'I continued'
}
}
}
Invoke-ScriptAnalyzer -Path 'C:\temp\Invoke-MVP.ps1'
Expected behavior
No error; using ShouldContinue should be equivalent to using ShouldProcess (for which we don't see this issue).
Actual behavior
RuleName Severity ScriptName Line Message
-------- -------- -------------- ---- -------
PSShouldProcess Warning Invoke-MVP.ps1 2 'Invoke-POC' has the ShouldProcess attribute but does not
call ShouldProcess/ShouldContinue.
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
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece com a regra PSShouldProcess e reproduza o aviso usando C:\temp\Invoke-MVP.ps1 por meio do Invoke-ScriptAnalyzer. Rastreie como a regra detecta chamadas a ShouldProcess e ShouldContinue; considera-se concluído quando a função fornecida não produzir mais um aviso PSShouldProcess ao chamar ShouldContinue.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- csharp, powershell
- Domínio
- tooling
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 45/100