PowerShell / PowerShell/PSScriptAnalyzer
Formatting fails to pretty print a bad formatted document
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C#
- Estrellas
- 2.2k
- Forks
- 414
- Merge medio
- 13 h 1 min
- PR fusionados (30 d)
- 2
Descripción
Prerequisites
- I have written a descriptive issue title.
- I have searched all issues to ensure it has not already been reported.
Summary
I have some code copied from a pdf. Here it is when I paste it in VSCode :
function Stop-ProcessUsingWMI{ [CmdletBinding(SupportsShouldProcess=$True)] param( [parameter(mandatory=$true)] [regex] $pattern ) foreach ($process in Get-WmiObject Win32_Process | where { $_.Name -match $pattern }) { if ($PSCmdlet.ShouldProcess( "process $($process.Name) " + " (id: $($process.ProcessId))" , "Stop Process")) { $process.Terminate() } }}
A long one-line code.
After formatting it, I get this :
function Stop-ProcessUsingWMI {
[CmdletBinding(SupportsShouldProcess = $True)] param( [parameter(mandatory = $true)] [regex] $pattern ) foreach ($process in Get-WmiObject Win32_Process | Where-Object { $_.Name -match $pattern }) {
if ($PSCmdlet.ShouldProcess( "process $($process.Name) " + " (id: $($process.ProcessId))" , 'Stop Process')) {
$process.Terminate()
}
}
}
It is better but far from what one could expect from a well formatted code. There are multiple spaces everywhere and function body is not standard. Here is what I would expect :
function Stop-ProcessUsingWMI {
[CmdletBinding(SupportsShouldProcess = $True)]
param(
[parameter(mandatory = $true)] [regex] $pattern
)
foreach ($process in Get-WmiObject Win32_Process | Where-Object { $_.Name -match $pattern }) {
if ($PSCmdlet.ShouldProcess( "process $($process.Name) " + " (id: $($process.ProcessId))" , 'Stop Process')) {
$process.Terminate()
}
}
}
| System | Version |
|---|---|
| OS | Win 10 x64 pro (french) 19043.1165 |
| VS Code version | 1.59.1 |
| Extension version | v2021.8.0 |
| Powershell | 7.1.4 |
PS extension custom settings :
"powershell.buttons.showPanelMovementButtons": true,
"powershell.codeFormatting.autoCorrectAliases": true,
"powershell.codeFormatting.preset": "OTBS",
"powershell.codeFormatting.trimWhitespaceAroundPipe": true,
"powershell.codeFormatting.useCorrectCasing": true,
"powershell.integratedConsole.focusConsoleOnExecute": false,
"powershell.codeFormatting.useConstantStrings": true,
"security.workspace.trust.untrustedFiles": "open",
"editor.suggest.preview": true,
"powershell.codeFormatting.ignoreOneLineBlock": false,
"powershell.codeFormatting.whitespaceBetweenParameters": true
Proposed Design
- remove multiple spaces when not needed
- format function body, list of parameters and attributes on their respected line.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce el resultado del formateo del issue usando la función de PowerShell proporcionada y las configuraciones de PSScriptAnalyzer indicadas. Compara la salida con el ejemplo esperado y, a continuación, rastrea el comportamiento del formateador responsable de los espacios en blanco, los cuerpos de las funciones, los parámetros y los atributos. Se considera terminado cuando el documento defectuoso de una sola línea se formatea como en el ejemplo esperado, sin espacios repetidos innecesariamente.
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