ShellCheck 0.9 est disponible, un analyseur statique pour les scripts shell

La version 0.9 de ShellCheck, un projet de système d'analyse statique pour les scripts shell, a été publiée. Il prend en charge l'identification des erreurs dans les scripts en tenant compte des particularités de bash, sh, ksh et dash. Le code du projet est écrit en Haskell et est distribué sous la licence GPLv3. Des composants sont fournis pour une intégration avec Vim, Emacs, VSCode, Sublime, Atom et divers environnements intégrés qui prennent en charge la sortie d'erreurs compatible avec GCC.

ShellCheck 0.9 est disponible, un analyseur statique pour les scripts shell

Il prend en charge l'identification des erreurs de code, tant syntaxiques, entraînant des erreurs d'exécution, que sémantiques, qui bien qu'elles ne perturbent pas l'exécution, provoquent des anomalies dans le comportement du script. L'analyseur peut également identifier les goulets d'étranglement, les problèmes obscurs et les pièges qui peuvent mener à des échecs dans certaines circonstances.

Parmi les types d'erreurs détectées, on peut citer les problèmes d'échappement des caractères spéciaux et d'encadrement par des guillemets, les erreurs dans les expressions conditionnelles, une utilisation incorrecte des commandes, des problèmes de traitement du temps et des dates, ainsi que des erreurs syntaxiques typiques pour les débutants. Par exemple, l'absence d'espaces dans la comparaison «[[ $foo==0 ]]», un espace en trop dans «var = 42» ou l'utilisation du symbole $ lors de l'affectation «$foo=42», utiliser des variables sans guillemets «echo $1», ou des crochets supplémentaires dans «tr -cd ‘[a-zA-Z0-9]'».

En outre, des recommandations sont fournies pour améliorer le style du code, résoudre les problèmes de portabilité et renforcer la fiabilité des scripts. Par exemple, au lieu d'«echo $[1+2]», il est suggéré d'utiliser la syntaxe «$((..))», la construction ‘rm -rf «$STEAMROOT/»*’ sera signalée comme unsafe et susceptible de supprimer le répertoire racine si la variable $STEAMROOT n'est pas remplie, et l'utilisation de «echo {1..10}» sera mise en avant comme incompatible avec dash et sh.

Dans la nouvelle version :

  • Avertissement ajouté pour les expressions du type ‘local readonly foo’.
  • Avertissement ajouté concernant les commandes inaccessibles.
  • Avertissement ajouté pour les références circulaires dans ‘declare x=1 y=$x’.
  • Avertissement ajouté si $? est utilisé pour émettre le code de retour de echo, printf, [ ], [[ ]] et test.
  • Recommandation ajoutée pour la suppression de l'expression ((..))inarray[((idx))]=val.
  • Recommandation ajoutée pour la fusion des doubles crochets dans les contextes arithmétiques.
  • Recommandation ajoutée pour la suppression des parenthèses dans l'expression a[(x+1)]=val.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster