ShellCheck 0.9, ein statisches Analysewerkzeug für Shell-Skripte, ist verfügbar

Die Version 0.9 des Projekts ShellCheck wurde veröffentlicht, das ein System zur statischen Analyse von Shell-Skripten entwickelt, das die Erkennung von Fehlern in Skripten unter Berücksichtigung der Besonderheiten von bash, sh, ksh und dash unterstützt. Der Code des Projekts ist in Haskell geschrieben und steht unter der GPLv3-Lizenz zur Verfügung. Komponenten zur Integration mit Vim, Emacs, VSCode, Sublime, Atom und verschiedenen integrierten Entwicklungsumgebungen, die GCC-kompatible Fehlermeldungen unterstützen, werden bereitgestellt.

ShellCheck 0.9, ein statisches Analysewerkzeug für Shell-Skripte, ist verfügbar

Es wird sowohl die Erkennung von syntaktischen Fehlern im Code unterstützt, die beim Ausführen des Interpreters zu Fehlerausgaben führen, als auch die Identifizierung von semantischen Problemen, bei denen die Ausführung nicht unterbrochen wird, die jedoch zu anomalen Verhaltensweisen des Skripts führen können. Der Analyzer kann auch Engpässe, nicht offensichtliche Probleme und Fallstricke identifizieren, die unter bestimmten Umständen zu Fehlern führen können.

Unter den erkannten Fehlerklassen sind Probleme mit der Escape-Behandlung von Sonderzeichen und der Verwendung von Anführungszeichen, Fehler in bedingten Ausdrücken, falsche Verwendung von Befehlen, Probleme mit der Verarbeitung von Zeit und Datumsangaben sowie typische Syntaxfehler von Anfängern hervorzuheben. Zum Beispiel fehlt der Abstand beim Vergleich „[[ $foo==0 ]]“, es ist ein Abstand vorhanden bei „var = 42“, oder der Dollar-Symbol wird bei der Zuweisung „$foo=42“ nicht korrekt verwendet. Variablen werden ohne Anführungszeichen genutzt, wie in „echo $1“, und überflüssige eckige Klammern in „tr -cd '[a-zA-Z0-9]'“ werden ebenfalls erwähnt.

Zusätzlich wird eine Ausgabe von Empfehlungen zur Verbesserung des Code-Stils, zur Behebung von Portabilitätsproblemen und zur Erhöhung der Zuverlässigkeit von Skripten unterstützt. Beispielsweise wird anstelle von „echo $[1+2]“ der Syntax „$((..))“ empfohlen, der Befehl „rm -rf '$STEAMROOT/'*“ wird als unsicher gekennzeichnet und könnte das Root-Verzeichnis löschen, falls die Variable $STEAMROOT nicht gesetzt ist, und die Verwendung von „echo {1..10}“ wird als nicht kompatibel mit dash und sh hervorgehoben.

In der neuen Version:

  • Eine Warnung für Ausdrücke wie 'local readonly foo' wurde hinzugefügt.
  • Eine Warnung über die Unzugänglichkeit von Befehlen wurde hinzugefügt.
  • Eine Warnung über rückverweisende Zuweisungen in 'declare x=1 y=$x' wurde hinzugefügt.
  • Eine Warnung wurde hinzugefügt, wenn $? zur Rückgabe von Code in echo, printf, [ ], [[ ]] und test verwendet wird.
  • Eine Empfehlung zur Entfernung von ((..))inarray[((idx))]=val wurde hinzugefügt.
  • Eine Empfehlung zur Zusammenführung von Doppelklammern in arithmetischen Kontexten wurde hinzugefügt.
  • Eine Empfehlung zur Entfernung der runden Klammern im Ausdruck a[(x+1)]=val wurde hinzugefügt.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster