PowerShell Script Analyzer 1.21.0: Prüfung von Code mit drei weiteren Regeln


    Tags: ,

    Powershell-LogoPSScriptAnalyzer ist ein Open-Source-Tool, das Scripts auf Basis von vor­definierten Regeln prüft. Diese helfen Ent­wicklern dabei, die sich an den Best Practices für PowerShell-Code zu orien­tieren. Mit der Version 1.21.0 kommen drei weitere Regeln sowie einige Neuer­ungen hinzu. Zudem ändern sich die System­voraus­setzungen.

    Der PSScriptAnalyzer bietet grundsätzlich zwei Features: Zum einen prüft er Scripts auf Best Practices und hilft beim Vermeiden oftmals schwer zu entdeckender Fehler. Zum anderen umfasst er ein Cmdlet zum automatischen Formatieren von Code in einer gut lesbaren Form.

    Keine Integration mit Windows PowerShell

    Nutzt man die PowerShell-Konsole oder die ISE, dann muss man das Modul selbst installieren und die entsprechenden Cmdlets explizit für eine nachträgliche Prüfung aufrufen. Dagegen existiert eine Integration mit Visual Studio Code, weil die PowerShell-Extension dort den PSScriptAnalyzer enthält.

    Die Installation des Moduls erfolgt mit

    Install-Module -Name PSScriptAnalyzer

    Modul PSScriptAnalyzer installieren, verfügbare Cmdlets anzeigen

    Mit

    Get-ScriptAnalyzerRule

    kann man sich alle Regeln anzeigen lassen, aktuell sind es 68. Diese sind unterteilt in die Schweregrade Error, Warning und Information.

    In der Version 1.21.0 kamen folgende Regeln neu hinzu:

    • AvoidMultipleTypeAttributes: Es ist syntaktisch korrekt, für die Parameter einer Funktion mehrere Typ-Attribute anzugeben (zum Beispiel [switch][string]), aber dies führt während der Laufzeit zu unerwarteten Ergebnissen.
    • AvoidSemicolonsAsLineTerminators: Diese Regel warnt vor Semikolons am Ende einer Zeile, die in PowerShell anders als in vielen anderen Programmier­sprachen unnötig sind. Sie ergänzt die bereits existierende Prüfung auf angehängte Leerzeichen.
    • AvoidUsingBrokenHashAlgorithms: Die Funktion Get-FileHash kann nach wie vor Hashes mit den Algorithmen MD5 und SHA1 generieren. Die Regel warnt davor, dass diese unsicher sind.

    Scripts prüfen

    Die eigentliche Prüfung erfolgt dann mit dem Cmdlet Invoke-ScriptAnalyzer. Man übergibt ihm einfach den Namen einer Script-Datei, die geprüft werden soll:

    Invoke-ScriptAnalyzer -Path .\MyPSScript.ps1

    Mit dem Schalter Fix kann das Cmdlet bestimmte Abweichungen von den Regeln automatisch korrigieren. Das gilt etwa für die Verwendung von Aliases für Cmdlets.

    Code formatieren

    Zur Auswahl stehen aktuell zehn  Konventionen, die sich über den Parameter Settings via Autover­voll­ständigung abrufen lassen.

    Formatierungsoptionen von Invoke-Formatter

    Bis dato konnte man dem Tool den Code nur über den Parameter ScriptDefinition übergeben, was umständlich ist, wenn das Script in einer Datei gespeichert wurde. Nun akzeptiert das Cmdlet eine Eingabe über die Pipeline, so dass man folgendermaßen vorgehen kann:

    Get-Content -raw .\Desktop\myscript.ps1 |
    Invoke-Formatter -Settings CodeFormattingStroustrup

    Die Ausgabe erfolgt im obigen Beispiel auf stdout. Wenn man sie in eine Datei schreiben möchte, kann man sie an Out-File weiterreichen.

    Systemvoraussetzungen

    PSScriptAnalyzer 1.21.0 erfordert bei der Core-Variante mindestens PowerShell 7.03. Bei Windows PowerShell stieg die Anforderung an das .NET-Framework auf Version 4.6.2.

    Die Entwickler kündigten zudem an, dass in naher Zukunft die Unterstützung für PowerShell 3 und 4 entfallen wird.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut

    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links