Vérifier vos scripts Shell avec ShellCheck
Article publiée le 16 Avril 2014
Une petite découverte forte sympathique!
Un collègue vient de me montrer un outil absolument génial qui permet de vérifier vos scripts shell (Variable non initialisée, erreur de synthaxe etc...) et je dois dire que cet outil s'est montré très performant voir bleuffant!
Cette outil s'appelle ShellCheck.
Vous avez la version online ici disponible sur ce site: http://www.shellcheck.net/
De plus il est également possible de télécharger une version local installé sur un de vos serveurs. Vous pourrez donc en une commande checker vos scripts!
Pour cela allez sur le site pour récupérer les sources: https://github.com/koalaman/shellcheck
- Dézipper l'archive zip
unzip -e <nom de l'archive>
- Aller dans le répertoire contenant les sources
- Installez ensuite les dépendances nécessaires:
Sous Debian:
- apt-get install ghc libghc-parsec3-dev lightghc-json-dev lightghc-regex-compat-dev libghc-quickcheck2-dev pandoc
Sous Centos/RedHat
- Installez les dépots EPEL. (tutoriel disponible ici)
- yum install ghc ghc-parsec-devel ghc-QuickCheck-devel ghc-json-devel ghc-regex-compat-devel pandoc
Le package pandoc n'est pas indiqué dans la documentation officielle, il est cependant nécessaire de l'installer!
- Il ne reste plus qu'à compiler:
make
- Copier le binaire dans /usr/bin
La commande shellcheck est maintenant disponible.
Faisons un petit test avec un script contenant une erreur (par de fermeture de la condition if avec fi).
Contenu du script
- Vérifions avec shellcheck le script:
- Nous allons maintenant tester shellcheck avec une erreur un peu plus subtile (variable initialisé mais non utilisée):
Contenu du script
Résultat avec shellcheck:
Shellcheck relève l'erreur!(en rouge les erreurs critiques, en vert les erreurs non critiques)
Enjoy! 🙂
Il faut faire gaffe avec cet outil, je sais pas s’il s’est améliorer mais il y a des « erreurs » qu’il détecte qui n’en sont pas (voir : http://www.debian-fr.org/shellcheck-outil-sympa-pour-les-bashers-t44322.html#p445743).
Je le test depuis quelques jours et pour l’instant je n’ai pas trouvé trop d’anomalies.
Cela ne vaut bien sur pas un bon débuguage a la main! 😉
Salut Vincent !
En passant… tu as une erreur dans le lien qui envoie vers la version en ligne : http://www.shellcheck.net/http:// au lieu de http://www.shellcheck.net/.
Bien sympa ton blog.
Corrigé! Merci! 🙂