À propos du projet
ShellCheck est un outil d'analyse statique pour les scripts bash/sh, publié sous la licence GNU GPLv3. Il analyse les scripts et signale des avertissements et des suggestions sans les exécuter.
Les objectifs déclarés incluent la clarification des problèmes de syntaxe pour les débutants qui produisent des erreurs cryptiques, des problèmes sémantiques de niveau intermédiaire qui font que les shells se comportent de manière contre-intuitive, et des pièges subtils ou des cas limites qui peuvent briser des scripts fonctionnels plus tard.
Le README documente une large galerie de catégories d'erreurs détectées : problèmes de guillemets (variables non quotées, expansion de tilde entre guillemets, guillemets littéraux dans les variables, pièges prématurés), erreurs conditionnelles (expressions de test constantes, espaces manquants, expressions régulières entre guillemets dans =~, opérateurs [ ] non pris en charge), commandes fréquemment mal utilisées (globs dans des contextes d'expressions régulières, redirection de sudo, utilisation incorrecte de exec, priorité implicite de find), erreurs de syntaxe pour les débutants (espaces autour de = dans les affectations, tableaux séparés par des virgules, else if), suggestions de style (cat inutile, backticks vs $(), blocs de redirection), erreurs de données et de types (affectations de tableaux à des chaînes, incompatibilités de nombres d'arguments printf, affectations dans des sous-processus), préoccupations de robustesse (suppression catastrophique rm, globs pouvant devenir des options, injection de shell dans find -exec), et avertissements de portabilité liés au shebang, similaires à checkbashisms.
Les options d'utilisation décrites incluent coller des scripts sur shellcheck.net, exécuter `shellcheck yourscript` dans un terminal, intégrations avec les éditeurs (Vim via ALE/Neomake/Syntastic, Emacs via Flycheck/Flymake, Sublime via SublimeLinter, Pulsar, VSCode, et compatibilité GCC pour d'autres éditeurs), et intégration dans les suites de construction ou de tests en utilisant les codes de sortie, avec des exemples pour Makefiles et Travis CI. Le README note la disponibilité préinstallée sur des services tels que Travis CI, Codacy, Code Climate, Code Factor, CircleCI, GitHub Actions (Linux uniquement), Trunk Code Quality, et CodeRabbit, et recommande de verrouiller une version spécifique pour éviter les ruptures de construction imprévues.
Les formats de sortie incluent du texte lisible par les humains avec ou sans couleurs ANSI, JSON, XML compatible CheckStyle, et avertissements compatibles GCC, avec une documentation d'intégration sur le wiki du projet.
L'installation est couverte par de nombreux gestionnaires de paquets (Cabal, Stack, apt, pacman, emerge, yum, dnf, pkg, Homebrew, MacPorts, zypper, eopkg, Chocolatey, winget, scoop, conda-forge, Snap, Nix, Flox), images Docker (koalaman/shellcheck et shellcheck-alpine), binaires précompilés pour Linux x86_64/armv6hf/aarch64, macOS aarch64/x86_64, et Windows x86, ainsi qu'une configuration de hook de pré-validation. La construction à partir de la source nécessite Haskell et Cabal, avec environ 2 Go de RAM notés pour la compilation, et les tests sont exécutés via `cabal test`.
Les problèmes peuvent être ignorés via une variable d'environnement, la ligne de commande, individuellement ou globalement dans un fichier. Les contributions sont acceptées sous forme de demandes de tirage GitHub sous GPLv3, et le README indique le wiki pour des descriptions détaillées de chaque code d'avertissement et shfmt pour le formatage, que ShellCheck ne impose pas délibérément.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.