PowerShell / PowerShell/PSScriptAnalyzer
Rule request: Prefix parameters with an unambiguous (ASCII) hyphen-minus
Personne n'a encore pris cette issue.
- Langage dominant
- C#
- Étoiles
- 2.2k
- Forks
- 414
- Merge moyen
- 13 h 1 min
- PR mergées (30 j)
- 2
Description
Hyphen-minus characters are sometimes unintendedly replaced when passed by word processors as Microsoft Office applications as MSWord and Outlook. It is recommended to prefix parameters with an unambiguous hyphen-minus as Unicode dashes might cause parsing errors in earlier versions of PowerShell.
Besides it unnecessary triggers the UseBOMForUnicodeEncodedFile rule with no clear indication of the location.
PowerShell 7
# .\Test.ps1
Write-Host “test” –ForegroundColor ‘Red’ -BackgroundColor ‘Green’
Invoke-ScriptAnalyzer .\Test.ps1
RuleName Severity ScriptName Line Message
-------- -------- ---------- ---- -------
PSAvoidUsingWriteHost Warning Test.ps1 1 File 'Test.ps1' uses Write-Host. Avoid using
Write-Host because it might not work in all hosts,
does not work when there is no host, and (prior to
PS 5.0) cannot be suppressed, captured, or
redirected. Instead, use Write-Output,
Write-Verbose, or Write-Information.
PSUseBOMForUnicodeEncodedFile Warning Test.ps1 Missing BOM encoding for non-ASCII encoded file
'Test.ps1'
Windows PowerShell (5.1)
Windows PowerShell (5.1) still has issue with EM-dashes:
.\test.ps1
At C:\Users\Gebruiker\downloads\Test.ps1:1 char:25
+ ... “test†–ForegroundColor ‘Red’ -BackgroundColor ‘Green’
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The string is missing the terminator: ".
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
Invoke-ScriptAnalyzer .\Test.ps1
RuleName Severity ScriptName Line Message
-------- -------- ---------- ---- -------
TerminatorExpectedAtEndOfString ParseError Test.ps1 1 The string is missing the terminator: ".
PSAvoidUsingWriteHost Warning Test.ps1 1 File 'Test.ps1' uses Write-Host. Avoid using
Write-Host because it might not work in all hosts,
does not work when there is no host, and (prior to
PS 5.0) cannot be suppressed, captured, or
redirected. Instead, use Write-Output,
Write-Verbose, or Write-Information.
PSUseBOMForUnicodeEncodedFile Warning Test.ps1 Missing BOM encoding for non-ASCII encoded file
'Test.ps1'
Proposed technical implementation details (optional)
See (PowerShell based) prototype UseHyphenMinusForParameter at: https://github.com/iRon7/PSRules
What is the latest version of PSScriptAnalyzer at the point of writing
1.21.0
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par les exemples PowerShell de l’issue et examinez le prototype UseHyphenMinusForParameter associé dans PSRules. Comparez le comportement proposé avec les règles existantes de PSScriptAnalyzer et la sortie de UseBOMForUnicodeEncodedFile. Le travail est terminé lorsque les caractères de tiret Unicode utilisés pour préfixer les paramètres sont détectés avec un emplacement et un diagnostic clairs, y compris dans les cas PowerShell présentés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- powershell
- Domaine
- tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100