PowerShell / PowerShell/PSScriptAnalyzer
Check whether a module references itself in 'NestedModules' field in the .psd1 file
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
This feature ask is per discussion in https://github.com/PowerShell/PowerShell/pull/6843#discussion_r187123774.
Importing a ill-structured module could result in a circular nested module. For example, for the following code, you will see 'True' as the output.
$testdir = Join-Path $env:TEMP test
$testpsm1 = Join-Path $testdir test.psm1
$testpsd1 = Join-Path $testdir test.psd1
mkdir $testdir > $null
Set-Content $testpsm1 -Value "function bar {}"
Set-Content $testpsd1 -Value "@{ ModuleVersion = '0.0.1'; RootModule = 'test'; NestedModules = @('test') }"
$m = Import-Module $testpsd1 -Pass
$m -eq $m.NestedModules[0]
> True
So maybe a rule can be written to check the bold part of test.psd1 "@{ ModuleVersion = '0.0.1'; RootModule = 'test'; NestedModules = @('test') }", to make sure the author is warned when a module like test.psd1 has itself as a nested module.
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 exemplo de módulo aninhado circular com o conteúdo .psd1 mostrado e inspecione como o PSScriptAnalyzer descobre e relata problemas de módulos. A alteração estará concluída quando um módulo cujo campo NestedModules referencia a si mesmo produzir um aviso, enquanto as declarações válidas de módulos aninhados permanecerem inalteradas; o payload não menciona arquivos de implementação nem testes.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- powershell
- Domínio
- devtools
- Tipo de issue
- Funcionalidade
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 35/100