Recherche de site Web

ShellCheck - Un outil qui affiche des avertissements et des suggestions pour les scripts Shell


ShellCheck est un outil d'analyse statique qui affiche des avertissements et des suggestions concernant le mauvais code dans les scripts shell bash/sh. Il peut être utilisé de plusieurs manières : depuis le web en collant votre script shell dans un éditeur en ligne (Ace – un éditeur de code autonome écrit en JavaScript) sur https://www.shellcheck.net (il est toujours synchronisé avec la dernière version de git commit, et c'est le moyen le plus simple d'essayer ShellCheck) pour un retour instantané.

Alternativement, vous pouvez l'installer sur votre machine et l'exécuter depuis le terminal, l'intégrer à votre éditeur de texte ainsi que dans vos suites de build ou de tests.

ShellCheck fait principalement trois choses :

  • Il souligne et explique les problèmes de syntaxe typiques du débutant qui amènent un shell à donner des messages d'erreur cryptiques.
  • Il souligne et explique les problèmes sémantiques typiques de niveau intermédiaire qui provoquent un comportement étrange et contre-intuitif d'un shell.
  • Il souligne également des mises en garde subtiles, des cas extrêmes et des pièges qui peuvent entraîner l'échec du script d'un utilisateur avancé, par ailleurs fonctionnel, dans des circonstances futures.

Dans cet article, nous montrerons comment installer et utiliser ShellCheck de différentes manières pour rechercher des bogues ou du mauvais code dans vos scripts shell sous Linux.

Comment installer et utiliser ShellCheck sous Linux

ShellCheck peut être facilement installé localement via votre gestionnaire de packages, comme indiqué.

Sur Debian/Ubuntu

apt-get install shellcheck

Sur RHEL/CentOS

yum -y install epel-release
yum install ShellCheck

Sur Fedora

dnf install ShellCheck

Une fois ShellCheck installé, voyons comment utiliser ShellCheck dans les différentes méthodes que nous avons mentionnées précédemment.

Utilisation de ShellCheck à partir du Web

Accédez à https://www.shellcheck.net et collez votre script dans l'éditeur Ace fourni, vous verrez la sortie en bas de l'éditeur, comme indiqué dans la capture d'écran ci-dessous.

Dans l'exemple suivant, le script shell de test se compose des lignes suivantes :

#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
  
#echo values of variables 
echo $MINARGS
echo $E_NONROOT
exit 0;

D'après la capture d'écran ci-dessus, les deux premières variables E_NOTROOT et E_MINARGS ont été déclarées mais ne sont pas utilisées, ShellCheck les signale comme des « erreurs suggestives » :

SC2034: E_NOTROOT appears unused. Verify it or export it.
SC2034: E_MINARGS appears unused. Verify it or export it. 

Ensuite, un mauvais nom (dans l'instruction echo $E_NONROOT) a été utilisé pour echo variable E_NOTROOT, c'est pourquoi ShellCheck affiche l'erreur :

SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is

Encore une fois, lorsque vous regardez les commandes echo, les variables n'ont pas été entre guillemets (ce qui permet d'éviter la globalisation et le fractionnement des mots), donc Shell Check affiche l'avertissement :

SC2086: Double quote to prevent globbing and word splitting.

Utilisation de ShellCheck depuis le terminal

Vous pouvez également exécuter ShellCheck à partir de la ligne de commande, nous utiliserons le même script shell ci-dessus comme suit :

shellcheck test.sh

Utilisation de ShellCheck depuis l'éditeur de texte

Vous pouvez également afficher les suggestions et les avertissements ShellCheck directement dans divers éditeurs. Il s'agit probablement d'un moyen plus efficace d'utiliser ShellCheck. Une fois que vous avez enregistré un fichier, il vous montre toutes les erreurs dans le code.

Dans Vim, utilisez ALE ou Syntastic (nous utiliserons ceci) :

Commencez par installer Pathogen afin qu'il soit facile d'installer Syntastic. Exécutez les commandes ci-dessous pour obtenir le fichier pathogen.vim et les répertoires dont il a besoin :

mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

Ajoutez ensuite ceci à votre fichier ~/.vimrc :

execute pathogen#infect()

Une fois que vous avez installé l'agent pathogène, vous pouvez maintenant mettre le syntaxique dans ~/.vim/bundle comme suit :

cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git

Ensuite, fermez vim et redémarrez-le pour le recharger, puis tapez la commande ci-dessous :

:Helptags

Si tout se passe bien, vous devriez avoir ShellCheck intégré à Vim, les captures d'écran suivantes montrent comment cela fonctionne en utilisant le même script ci-dessus.

Si vous obtenez une erreur après avoir suivi les étapes ci-dessus, c'est peut-être que vous n'avez pas installé Pathogen correctement. Refaites les étapes, mais assurez-vous d'avoir effectué les opérations suivantes :

  • Création des répertoires ~/.vim/autoload et ~/.vim/bundle.
  • Ajout de la ligne exécuter pathogène#infect() à votre fichier ~/.vimrc.
  • J'ai fait le clone git de syntaxique à l'intérieur de ~/.vim/bundle.
  • Utilisez les autorisations appropriées pour accéder à tous les répertoires ci-dessus.

Vous pouvez également utiliser d'autres éditeurs pour vérifier le mauvais code dans les scripts shell, tels que :

  • Dans Emacs, utilisez Flycheck.
  • Dans Sublime, utilisez SublimeLinter.
  • Dans Atom, utilisez Linter.
  • Dans la plupart des autres éditeurs, utilisez la compatibilité des erreurs GCC.

Remarque : Utilisez la galerie de mauvais codes pour effectuer davantage de ShellChecking.

Dépôt ShellCheck Github : https://github.com/koalaman/shellcheck

C'est ça! Dans cet article, nous avons montré comment installer et utiliser ShellCheck pour détecter les bogues ou le mauvais code dans vos scripts shell sous Linux. Partagez vos réflexions avec nous via la section commentaires ci-dessous.

Connaissez-vous d’autres outils similaires ? Si oui, partagez également des informations à leur sujet dans les commentaires.