ShellCheck 0.9 ist verfügbar, ein statischer Analysator für Shell-Skripte

Die Veröffentlichung des ShellCheck 0.9-Projekts wurde veröffentlicht, das ein System zur statischen Analyse von Shell-Skripten entwickelt, das die Identifizierung von Fehlern in Skripten unter Berücksichtigung der Funktionen von Bash, Sh, KSH und Dash unterstützt. Der Projektcode ist in Haskell geschrieben und wird unter der GPLv3-Lizenz vertrieben. Es werden Komponenten für die Integration mit Vim, Emacs, VSCode, Sublime, Atom und verschiedenen Frameworks bereitgestellt, die GCC-kompatible Fehlerberichte unterstützen.

ShellCheck 0.9 ist verfügbar, ein statischer Analysator für Shell-Skripte

Es unterstützt die Identifizierung sowohl von Syntaxfehlern im Code, die dazu führen, dass der Interpreter zum Zeitpunkt der Ausführung einen Fehler anzeigt, als auch von semantischen Problemen, aufgrund derer die Ausführung nicht unterbrochen wird, aber Anomalien im Verhalten des Skripts auftreten. Der Analysator kann außerdem Engpässe, nicht offensichtliche Probleme und Fallstricke identifizieren, die unter bestimmten Umständen zu Ausfällen führen können.

Unter den erkannten Fehlerklassen können wir Probleme beim Escapezeichen von Sonderzeichen und deren Einrahmung in Anführungszeichen, Fehler in bedingten Ausdrücken, falsche Verwendung von Befehlen, Probleme bei der Verarbeitung von Zeit und Datum sowie typische Syntaxfehler für Anfänger feststellen. Beispielsweise das Fehlen von Leerzeichen beim Vergleich von „[[ $foo==0 ]]“, das Vorhandensein von Leerzeichen „var = 42“ oder die Angabe des $-Symbols bei der Zuweisung von „$foo=42“, die Verwendung von Variablen ohne Anführungszeichen „echo $1“, die Angabe zusätzlicher eckiger Klammern in „tr -cd '[a-zA-Z0-9]'“,

Darüber hinaus unterstützt es die Ausgabe von Empfehlungen zur Verbesserung des Codestils, zur Beseitigung von Portabilitätsproblemen und zur Erhöhung der Zuverlässigkeit von Skripten. Beispielsweise wird anstelle von „echo $[1+2]“ die Verwendung der Syntax „$((..))“ vorgeschlagen, die Konstruktion „rm -rf „$STEAMROOT/“*“ wird als unsicher markiert und kann das Stammverzeichnis löschen, wenn die Variable $STEAMROOT nicht gefüllt ist, und die Verwendung von „echo {1..10}“ wird als inkompatibel mit dash und sh hervorgehoben.

In der neuen Version:

  • Warnung für Ausdrücke wie „local readonly foo“ hinzugefügt.
  • Warnung vor nicht verfügbaren Befehlen hinzugefügt.
  • Warnung zu Backlinks zu „declare x=1 y=$x“ hinzugefügt.
  • Warnung hinzugefügt, wenn $? Wird verwendet, um den Rückkehrcode von echo, printf, [ ], [[ ]] und test zu drucken.
  • Empfehlung zum Entfernen von ((..))inarray[((idx))]=val hinzugefügt.
  • Es wurde eine Empfehlung für die Verkettung doppelter Klammern in arithmetischen Kontexten hinzugefügt.
  • Es wurde eine Empfehlung hinzugefügt, Klammern im Ausdruck a[(x+1)]=val zu entfernen.

Source: opennet.ru

Kommentar hinzufügen