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

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

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

Il prend en charge l'identification à la fois des erreurs de syntaxe dans le code, qui conduisent l'interpréteur à afficher une erreur au moment de l'exécution, et des problèmes sémantiques, à cause desquels l'exécution n'est pas perturbée, mais des anomalies dans le comportement du script se produisent. L'analyseur peut également identifier les goulots d'étranglement, les problèmes non évidents et les pièges pouvant conduire à des pannes dans certaines circonstances.

Parmi les classes d'erreurs détectées, on peut noter des problèmes d'échappement de caractères spéciaux et de mise entre guillemets, des erreurs dans les expressions conditionnelles, une utilisation incorrecte des commandes, des problèmes de traitement de l'heure et des dates et des erreurs de syntaxe typiques pour les débutants. Par exemple, l'absence d'espaces lors de la comparaison de « [[ $foo==0 ]] », la présence d'espaces « var = 42 » ou l'indication du symbole $ lors de l'affectation de « $foo=42 », l'utilisation de variables sans les guillemets "echo $1", l'indication de crochets supplémentaires dans "tr -cd '[a-zA-Z0-9]'",

De plus, il prend en charge la sortie de recommandations pour améliorer le style de code, éliminer les problèmes de portabilité et augmenter la fiabilité des scripts. Par exemple, au lieu de « echo $[1+2] » il sera proposé d'utiliser la syntaxe « $((..)) », la construction 'rm -rf « $STEAMROOT/ »*' sera marquée comme non sécurisée et capable de supprimer le répertoire racine si la variable n'est pas remplie $STEAMROOT, et l'utilisation de "echo {1..10}" sera mise en évidence comme incompatible avec dash et sh.

Dans la nouvelle version:

  • Ajout d'un avertissement pour les expressions telles que « local readonly foo ».
  • Ajout d'un avertissement concernant les commandes indisponibles.
  • Ajout d'un avertissement concernant les backlinks vers 'declare x=1 y=$x'.
  • Ajout d'un avertissement si $ ? utilisé pour imprimer le code retour de echo, printf, [ ], [[ ]] et test.
  • Ajout d'une recommandation pour supprimer ((..))inarray[((idx))]=val.
  • Ajout d'une recommandation pour concaténer des doubles parenthèses dans des contextes arithmétiques.
  • Ajout d'une recommandation pour supprimer les parenthèses dans l'expression a[(x+1)]=val.

Source: opennet.ru

Ajouter un commentaire