PowerShell / PowerShell/PSScriptAnalyzer

Remove-Module PSScriptAnalyzer leaves behavior of removed module version

Abierto
#722 7 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Issue - Discussion
Lenguaje dominante
C#
Estrellas
2.2k
Forks
414
Merge medio
13 h 1 min
PR fusionados (30 d)
2

Descripción

Removing a version of PSScriptAnalyzer does not remove its behavior from the session. I don't know much about this, but it looks like we're missing code to clean up after a remove.

Version 1.10.0 and 1.11.0 are somewhat different. For example, in 1.11.0, the Settings parameter tab-completes the .psd1 file names in the Settings subdirectory. Also, the PSPlaceOpenBrace and PSPlaceCloseBrace rules do not trigger on a one-line function, such as:

function Test-Brace1 () {"Hello, World"}

However, if you import one version (Import-Module), remove that version (Remove-Module), and then import the other version, the result is the same as if you imported only the first version.

This is important, because the results of the different module versions are perceptibly different.

REPRO:

0. Start a new session, e.g. new console. 
1. ipmo PSScriptAnalyzer -RequiredVersion 1.10.0 -Passthru
2. gmo | rmo
3. ipmo PSScriptAnalyzer -RequiredVersion 1.11.0 -Passthru 

Now, test one of the differing features.

4. Invoke-ScriptAnalyzer -Settings <TAB>    #Fails to tab complete, as in 1.10.0.
5. Invoke-ScriptAnalyzer -ScriptDefinition 'function Test-Brace1 () {"Hello, World"}' -Settings $home\Documents\WindowsPowerShell\Modules\PSScriptAnalyzer\1.11.0\Settings\CodeFormatting.psd1

This returns output that you shouldn't see any more in 1.11.0.

RuleName                            Severity     ScriptName Line  Message
--------                            --------     ---------- ----  -------
PSPlaceOpenBrace                    Warning                 1     There is no new line after open brace.
PSPlaceCloseBrace                   Warning                 1     Close brace is not on a new line.

The same is true if you reverse the order of the versions.

0. Start a new session, e.g. new console. 
1. ipmo PSScriptAnalyzer -RequiredVersion 1.11.0 -Passthru
2. gmo | rmo
3. ipmo PSScriptAnalyzer -RequiredVersion 1.10.0 -Passthru 

Now, we have 1.10.0 with 1.11.0 behavior:

4. Invoke-ScriptAnalyzer -Settings <TAB>    #Tab completes!
5. Invoke-ScriptAnalyzer -ScriptDefinition 'function Test-Brace1 () {"Hello, World"}' -Settings CodeFormatting

Version 1.10.0 should error on the one-liner, but it doesn't.

PS C:\> Invoke-ScriptAnalyzer -Settings CodeFormatting -ScriptDefinition 'function Test-Brace1 () {"Hello, World"}'
PS C:\>

Strange, I know. If you need more info, let me know. Thanks!

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza con la secuencia de Import-Module y Remove-Module de la reproducción y, después, inspecciona el comportamiento de Invoke-ScriptAnalyzer tras cambiar entre PSScriptAnalyzer 1.10.0 y 1.11.0. Compara la finalización mediante tabulador de la configuración y los resultados de PSPlaceOpenBrace y PSPlaceCloseBrace; se considera terminado cuando quitar una versión ya no deja su comportamiento en la sesión.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
csharp, powershell
Área
tooling
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.