Présentation de ShellCheck
- ShellCheck est un outil qui détecte les bugs dans les scripts shell.
- Il peut être installé en local via
cabal, apt, dnf, pkg, brew.
- En collant un script, ShellCheck affiche les résultats de l’analyse.
Caractéristiques de ShellCheck
- ShellCheck peut être utilisé librement sous licence GPLv3.
- La documentation est disponible sur le Wiki de ShellCheck, et le code source peut être consulté sur GitHub.
- Il est déjà empaqueté dans la plupart des distributions ou gestionnaires de paquets.
- Il est pris en charge comme linter intégré dans les principaux éditeurs, et le code des dépôts GitHub peut être vérifié automatiquement via CodeClimate, Codacy et CodeFactor.
- Il est écrit en Haskell, ce qui peut convenir aux utilisateurs intéressés par ce langage.
Remerciements
- Remerciements particuliers aux soutiens GitHub Sponsors : Gitpod, Mercedes-Benz, BashSupport Pro, per1234, WhitewaterFoundry, cavcrosby, dcminter, photostructure, Cronitor, djdefi, steve-chavez, etc.
Avis de GN⁺
- Le point le plus important de cet article est que ShellCheck est un outil utile pour trouver les bugs dans les scripts shell.
- ShellCheck est gratuit, pris en charge sur de nombreuses plateformes et dans divers éditeurs, et sa facilité d’utilisation peut intéresser de nombreuses personnes.
- En particulier, le soutien de la communauté open source et le fait qu’il soit développé en Haskell peuvent le rendre attractif pour les développeurs logiciels.
1 commentaires
Avis Hacker News
Points d’attention lors de l’écriture de scripts
-u(nounset) afin de provoquer une erreur lors de l’utilisation de variables non déclarées. Une exception existe lorsque, lors de l’expansion d’un tableau, un tableau vide est considéré comme unbound.-n(noexec) pour empêcher l’exécution des commandes.-e(errexit) est également utile, mais il faut noter que seules les commandes « nues » qui échouent provoquent l’arrêt. Pour éviter cela, on préfère ajouter|| fail "..."à la commande.Découverte de vulnérabilités dans les scripts shell
$ENV_VARvia$((1 + ENV_VAR)), il est possible d’injecter du code.Shellcheck et strictbash
Mentions de Shellcheck
Utilisation de Haskell et Turtle
Utilisation de Shellcheck et des linters
.gitlab-ci.yml, ce qui les rend difficiles à vérifier. Un wrapper a donc été créé pour les contrôler automatiquement.Serveur de langage Bash
Effet d’apprentissage de Shellcheck
/bin/shde production, on a appris des choses nouvelles malgré une expérience de scripting remontant aux années 80.Recommandation d’utiliser Bach
Shellcheck et la gestion de source/import
shest un vrai cauchemar.