PowerShell / PowerShell/PSScriptAnalyzer
Settings param cannot be set to $_ inside of a foreach-object loop
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- C#
- Estrelas
- 2.2k
- Forks
- 414
- Merge médio
- 13h 1min
- PRs com merge (30d)
- 2
Descrição
When the value of the -Settings parameter is set to $_ inside of a foreach-object loop, PSScriptAnalyzer is unable to find the settings file.
Steps to reproduce:
Create a file that violates a rule that is only checked if a particular setting is triggered.
IE:
if ($true)
{
Write-Output 'Something'
}
This code will throw errors if -Settings is set to CodeFormattingStroustrup but not if -Settings it is omitted.
The following command returns warnings.
invoke-scriptanalyzer -path C:\files\ax.ps1 -Settings 'CodeFormattingStroustrup'
But this one does not.
'CodeFormattingStroustrup' | % { invoke-scriptanalyzer -path C:\files\ax.ps1 -Settings $_ }
Using -Verbose on the non-working example shows that PSScriptAnalyzer cannot find a settings file.
This occurs on version 1.15.0 of PSScriptAnalyzer.
Screenshot

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 pelo ponto de entrada Invoke-ScriptAnalyzer e reproduza a diferença entre um valor direto de -Settings e a forma foreach-object usando -Verbose. Rastreie como o valor das configurações é resolvido em ambas as invocações; está concluído quando a forma com $_ canalizado localiza CodeFormattingStroustrup e relata os mesmos avisos que o comando direto.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- 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
- 35/100