Évalue des scripts shell ou Python 3 et produit un classement sur cinq catégories notées sur 10 — Sécurité, Robustesse, Maintenabilité, Portabilité, Performance — avec, pour chacune, le nombre de problèmes par sévérité (Critical / High / Medium / Low) et leur total. Sortie dans le terminal et/ou en Markdown, AsciiDoc ou JSON, en français ou en anglais.
IMPORTANT: Je suis développeur dans le monde de la cybersécurité et j'ai besoin de nombreux outils pour mon travail. Jusqu'à maintenant j'utilisais du Bash et Python3 pour "agréger" ces différents outils et il y a quelques mois maintenant, je me suis tourné vers l'IA pour voir si l'IA pouvait m'aider pour me simplifier la vie. Ce repo github (ainsi que plusieurs autres) est le résultat de cette recherche. La totalité des fichiers présents dans cette arborescence est générée par Claude Code en suivant mes directives et mes nombreuses interactions avec l'IA. Le résultat est impressionnant pour moi car je peux désormais faire des choses très vite.
check-script exploite ShellCheck, shfmt, bashate, checkbashisms,
gitleaks, trufflehog et bash -n pour le shell, Ruff, Bandit, Semgrep,
mypy, Radon, Vermin, pip-audit (et sur demande Pylint, Pyright) pour Python,
lorsqu'ils sont installés, et les complète par des règles intégrées (82 pour
le shell, 10 pour Python : secrets, curl | sh, permissions, PATH,
subprocess sans timeout, dépendances non déclarées, structure…) avec un
conseil de correction pour chacune, et par les règles personnalisées du
projet (rules.custom). Il analyse aussi le shell intégré aux workflows
GitHub Actions et GitLab CI, aux Dockerfile, aux Makefile et aux tâches
Ansible (dont l'injection d'expressions GitHub non fiables). Il corrige les défauts sûrs
(--fix), compare une analyse à une référence, produit du SARIF et du GitLab
Code Quality, et propose une interface graphique (check-script-gui).
check-script deploy.sh # rapport terminal
check-script deploy.sh -o rapport.md -o rapport.adoc
check-script --lang en scripts/ # un dossier, en anglais
check-script --fail-under 7 -q scripts/ # intégration continue
check-script --profile strict --context root install.sh
check-script --fix --dry-run deploy.sh # corrections proposées (diff)
check-script -b reference.json --fail-on-new high scripts/
check-script outil.py # script Python (cible : 3.9)
check-script --python-target 3.11 --with pylint scripts/
check-script Dockerfile .github/workflows/ # scripts intégrés
check-script --watch scripts/ # réanalyse à chaque enregistrement
check-script -o rapport.xml scripts/ # JUnit XML (Jenkins, GitLab)
check-script -o audit.pdf scripts/ # rapport d'audit PDF
check-script --exclude 'vendor/' scripts/ # ignorer des chemins (syntaxe .gitignore)
check-script init # écrit un .checkscript.yaml (profil suggéré)
check-script explain SEC003 # décrit une règle : exemple, références
check-script diff avant.json apres.json # problèmes nouveaux / corrigés entre deux rapports
check-script --fix --interactive deploy.sh # accepter chaque correction une à une
check-script -b ref.json --baseline-update . # resserrer la référence (problèmes corrigés)
check-script --list-tools # outils détectés
check-script-gui # interface graphique
./CheckScript-VERSION-x86_64.AppImage # interface (AppImage, sans installation)
flatpak run fr.chla28.check_script_gui # interface (Flatpak)Catégorie Note /10 Critical High Medium Low Total
Sécurité 0,0 ░░░░░░░░░░ 3 3 3 1 10
Robustesse 1,3 █░░░░░░░░░ 0 1 8 4 13
Maintenabilité 8,8 █████████░ 0 0 0 5 5
Portabilité 10,0 ██████████ 0 0 0 0 0
Performance 9,0 █████████░ 0 0 0 4 4
Note globale : 1,5/10 (E)Raccourcis : F1 aide, Ctrl+O ouvrir, F5 relancer, Ctrl+E exporter, Ctrl+F chercher, Ctrl+Tab / Ctrl+W onglets (liste complète dans l'aide intégrée et le guide utilisateur).
Ces captures (françaises ici, anglaises dans doc/screenshots/en/) sont régénérées par SCREENSHOT_DIR=../doc/screenshots flutter test test/screenshot_test.dart
(depuis gui/, voir le guide développeur).
Chaque problème porte ses références CWE, OWASP (Top 10 2021, Top 10
CI/CD) et ANSSI (configuration GNU/Linux, conteneurs Docker, OpenSSH) ;
le rapport HTML en fait une vue de conformité et --ref CWE-78 (ou A08,
ANSSI…) filtre l'affichage. Les Dockerfile et les workflows ont leurs
propres règles (image non épinglée, conteneur en root, action non épinglée,
pull_request_target, secrets en clair…), complétées par hadolint,
actionlint et zizmor s'ils sont installés.
check-script lsp est un serveur LSP : problèmes soulignés, corrections
rapides, survol avec exemple, formatage, note du script. Extension
VS Code (.vsix) et plugin Eclipse (site de mise à jour .zip)
attachés à chaque release ; configuration Geany dans
editors/geany/lsp.conf.
- uses: actions/checkout@v7
- uses: chla28/CheckScript@v0.24.1
with:
paths: scripts .github
fail-under: '6'Annotations sur les lignes des pull requests, rapport dans le résumé du job,
SARIF pour Code Scanning ; sorties score et grade (voir le guide
utilisateur, « Intégration continue »).
- Guide utilisateur — installation, options, lecture du rapport, calcul des notes, règles, configuration.
- Guide développeur — architecture, analyseurs, ajout de règles, tests, packaging, préparation de la version Flutter.
- Exemple de configuration, page de manuel.
- Guide d'intégration continue — seuil, référence, cliquet, comparaison d'une pull request ; exemples : GitHub Actions, référence, comparaison de PR, GitLab CI, référence GitLab, Jenkins, pre-commit (hooks).
dart pub get
dart run bin/check_script.dart test/fixtures/bad.sh
dart analyze --fatal-infos
dart test
(cd gui && flutter test) # interface Flutter
dart run tool/calibrate.dart # calibrage sur le corpus
./scripts/build-dist.sh # → dist/check_script-VERSION-linux-ARCH.tar.gz
./scripts/build-dist.sh --rpm # + RPM (dist/rpm/)
./scripts/build-dist.sh --install # + installation dans ~/.localPlateforme cible : Linux. L'interface Flutter (gui/) réutilise la
bibliothèque lib/ ; elle est aussi lancée depuis MainGUI.
Les issues et pull requests sont bienvenues en français ou en anglais ; voir CONTRIBUTING.md.
Messages de commit au format Conventional Commits, en anglais (feat(gui): …,
fix: …), contrôlés par un hook (scripts/install-git-hooks.sh) et par la
CI ; dart run tool/release.dart publie une version (numéro et CHANGELOG
déduits des commits). Voir le guide développeur.
CheckScript est un logiciel libre, distribué sous licence GNU LGPL version 3 ou ultérieure (LGPL-3.0-or-later) : voir LICENSE. L'interface embarque la police JetBrains Mono (SIL Open Font License 1.1 : gui/fonts/JetBrainsMono/OFL.txt).








