PowerShell / PowerShell/PSScriptAnalyzer
Settings file (.psd1) sometimes requires arrays even when specifying a single value
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- C#
- Estrelas
- 2.2k
- Forks
- 415
- Merge médio
- 13h 1min
- PRs com merge (30d)
- 2
Descrição
Generally, in .psd1 files - and in PowerShell as a whole - it is fine to specify a scalar where an array is ultimately bound.
This is how it works in a module manifest's FunctionsToExport entry, for instance: instead of having to explicitly specify an array for a single entry - @('Get-Foo') or , 'Get-Foo - just 'Get-Foo' (scalar) is also accepted.
This is currently not the case in PSSA, at least for the PSAvoidUsingCmdletAliases rule's Whitelist property:
A scalar value is quietly ignored.
Not sure what other properties are affected.
Steps to reproduce
Run the following Pester test:
Describe "Scalar property-value test" {
BeforeAll {
Push-Location TestDrive:/
Import-Module -ErrorAction Stop PSScriptAnalyzer
}
It "Acceptes a scalar as a single value" {
@'
Rules = @{
Rules = @{
# Do not warn about using the '%' alias
# !! `@('%')` or `, '%'` are currently required - scalar '%' does NOT work.
PSAvoidUsingCmdletAliases = @{ Whitelist = '%' }
}
}
'@ > test.psd1
@'
1, 2 | % { $_ }
'@ > test.ps1
Invoke-ScriptAnalyzer -Settings test.psd1 test.ps1 | Should -BeNullOrEmpty
}
AfterAll {
Pop-Location
}
}
Expected behavior
The test should pass.
Actual behavior
The test fails, because a PSAvoidUsingCmdletAliases warning is still emitted, because the non-array value '%' didn't take effect.
Environment data
> $PSVersionTable
PowerShell Core v7.0.0-preview.5 (7.0.0-preview.5) on macOS 10.15.1
> (Get-Module -ListAvailable PSScriptAnalyzer).Version | ForEach-Object { $_.ToString() }
1.18.3
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 reproduzindo o teste do Pester descrito em issue #1366 com PSAvoidUsingCmdletAliases e Whitelist = '%'. Rastreie como as configurações de test.psd1 são lidas e como Whitelist é aplicado; está concluído quando o valor escalar suprime o aviso de alias e o teste de regressão passa.
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
- 55/100