Démarrage
Prérequis
Linux x86_64, macOS (Intel et Apple Silicon), ou Windows x64. Le binaire est totalement autonome — aucun runtime, aucune dépendance à installer.
Installation
Téléchargez le binaire pour votre système d’exploitation depuis votre espace client, placez-le dans n’importe quel dossier, puis rendez-le exécutable.
Premier audit
Initialisez un projet, puis lancez l'audit. Le flag --init génère un audit.config.json avec les paramètres auto-détectés.
Configuration
Toute la configuration est stockée dans audit.config.json à la racine de votre projet. Le flag --init génère ce fichier avec les paramètres auto-détectés. Deux clés sont obligatoires.audit.config.json at the root of your project. The --init flag generates this file with auto-detected settings. Two keys are mandatory.
Clés obligatoires
| Clé | Description |
|---|---|
| languages | Tableau des langages à scanner. Contrôle quelles règles de détection sont exécutées. |
| paths.include | Tableau des répertoires à scanner (relatifs à la racine du projet). |
Exemple de configuration
{
"languages": ["python", "javascript", "html"],
"paths": {
"include": ["src/", "app/", "lib/"],
"exclude": ["node_modules/", "vendor/", ".venv/"]
},
"brand": {
"tool_name": "StaticCodeAudit",
"company_name": "CodeFixture",
"prefix": "SCA",
"logo": null
},
"reports": {
"output_dir": "audit-reports",
"history_dir": "audit-reports/audit-datas",
"max_history": 10,
"language": "en"
},
"categories": {
"security": { "enabled": true, "weight": 3 },
"architecture": { "enabled": true, "weight": 2 },
"ui": { "enabled": true, "weight": 1 },
"ux": { "enabled": true, "weight": 1 },
"maintenance": { "enabled": true, "weight": 1 },
"dependencies": { "enabled": false, "weight": 2 },
"cicd": { "enabled": false, "weight": 2 }
},
"retention": {
"mode": null,
"max_count": 10,
"max_days": 90
}
}
Options CLI
Tous les flags sont optionnels. Le seul argument requis est le chemin vers votre projet.
| Flag | Description |
|---|---|
| --init | Initialiser un nouveau projet : enregistrement avec UUID et génération de audit.config.json. |
| --quick, -q | Mode rapide : sauter les tests, la validation des fixtures et le scan de dépendances. |
| --config, -c | Chemin vers un fichier de config personnalisé (défaut : audit.config.json à la racine du projet). |
| --output, -o | Remplacer le répertoire de sortie pour les rapports. |
| --project-name, -p | Remplacer le nom du projet affiché dans le rapport. |
| --verbose, -v | Activer la sortie console détaillée avec progression. |
| --fail-on-high | Quitter avec le code 1 si un finding de sévérité HIGH est détecté (utile pour CI/CD). |
| --sarif | Générer un export SARIF 2.1.0 en plus du rapport HTML. |
| --sbom | Générer un SBOM CycloneDX 1.5 (Software Bill of Materials). |
| --git-blame | Résoudre l'auteur de chaque finding via git blame. |
| --skip-tests | Ignorer l'exécution des tests unitaires. |
| --skip-deps | Ignorer le scan de vulnérabilités des dépendances. |
| --skip-cicd | Ignorer l'audit du pipeline CI/CD. |
| --script-lang | Langue de la console : en, fr, es, de (défaut : en). |
| --only-category | Exécuter une seule catégorie (ex : --only-category security). |
| --disable-rule | Désactiver des règles spécifiques par clé (répétable). |
| --retention-dry-run | Prévisualiser quels anciens rapports seraient supprimés sans les supprimer. |
| --self-test | Valider toutes les fixtures (vulnérable + propre) contre les règles de détection. |
| --install-hook | Installer un hook git pre-commit qui lance l'audit automatiquement. |
| --list-rules | Lister toutes les règles de détection disponibles et quitter. |
| --list-categories | Lister toutes les catégories d'audit avec leur statut et quitter. |
| --list-projects | Lister tous les projets enregistrés et quitter. |
| --debug | Niveau de debug : info, detail ou trace. |
Catégories d'audit
StaticCodeAudit organise ses 698 règles de détection en 7 catégories. Chaque catégorie a un poids qui influence le score de santé global. Les catégories peuvent être activées ou désactivées dans votre configuration.
| Catégorie | Code | Poids | Défaut | Couverture |
|---|---|---|---|---|
| Sécurité | SECURITY | 3 | ✓ | Injection SQL, XSS, SSRF, path traversal, secrets, LDAP, cookies, crypto, RGPD |
| Architecture | ARCH | 2 | ✓ | Routes admin, DB dans les routeurs, requêtes directes, N+1, taille fichiers |
| UI | UI | 1 | ✓ | Styles inline, createElement, SVG inline, écouteurs, boucles DOM |
| UX | UX | 1 | ✓ | ARIA, texte alt, focus, autoplay, i18n, console.log, WCAG 2.1 |
| Maintenance | MAINTENANCE | 1 | ✓ | TODO/FIXME, APIs obsolètes (5 langages), catch-all, instructions de debug |
| Dépendances | DEPENDENCIES | 2 | Désactivé | Scan CVE (pip-audit, npm audit), versions non verrouillées, conformité licences |
| CI/CD | CICD | 2 | Désactivé | GitHub Actions, GitLab CI, injection d'expressions, permissions, actions non épinglées |
Dépendances et CI/CD sont désactivées par défaut. Activez-les dans audit.config.json. Le poids influence le calcul du score de santé : un poids élevé signifie un impact plus fort de la catégorie.
Langages supportés
Déclarez les langages utilisés dans votre projet via le tableau languages dans audit.config.json. Chaque langage active son jeu de règles de détection dédié.languages array in audit.config.json. Each language activates its dedicated set of detection rules.
| Langage | Valeur config | Extensions de fichiers |
|---|---|---|
| Python | "python" | .py |
| JavaScript / TypeScript | "javascript" | .js, .jsx, .ts, .tsx, .mjs |
| HTML / Templates | "html" | .html, .htm, .xhtml, .vue, .svelte, .ejs, .hbs, .njk, .jinja, .jinja2, .twig, .liquid, .mustache, .phtml, .erb, .jsp, .asp, .aspx, .cshtml |
| Java | "java" | .java |
| C# | "csharp" | .cs |
| PHP | "php" | .php, .inc |
| YAML | "yaml" | .yml, .yaml |
Le scan YAML est utilisé pour les règles CI/CD (GitHub Actions, GitLab CI). TypeScript est couvert par la valeur "javascript" — les mêmes règles s'appliquent aux deux.
Formats de sortie
Chaque audit génère un rapport HTML et un fichier de données JSON. Des formats supplémentaires peuvent être activés via les flags CLI.
Rapport HTML
Fichier HTML autonome avec CSS, JavaScript et Chart.js intégrés. Ouvrir dans tout navigateur, partager par email, imprimer en PDF. Aucun serveur requis.
SCA-REPORT-YYYY-MM-DD-HH-MM.html
Données JSON
Données d'audit structurées pour traitement programmatique et comparaison historique. Contient tous les findings, scores, métadonnées et statistiques.
SCA-DATA-YYYY-MM-DD-HH-MM.json
SARIF 2.1.0
--sarifStandard OASIS pour les résultats d'analyse statique. Compatible GitHub Code Scanning, GitLab SAST et Azure DevOps.
SCA-SARIF-YYYY-MM-DD-HH-MM.sarif
SBOM CycloneDX 1.5
--sbomSoftware Bill of Materials listant chaque composant et dépendance de votre projet. De plus en plus exigé par les réglementations de sécurité de la chaîne d'approvisionnement.
SCA-SBOM-YYYY-MM-DD-HH-MM.json
Marque blanche
Personnalisez les rapports avec votre propre marque — gratuit, aucune licence enterprise requise. Toute la marque est configurée dans la section brand de audit.config.json.brand section of audit.config.json.
| Option | Défaut | Effet |
|---|---|---|
| brand.tool_name | StaticCodeAudit | Affiché dans l'en-tête, le pied de page, le bandeau console et le titre de page. |
| brand.company_name | CodeFixture | Affiché dans le pied de page du rapport. |
| brand.prefix | SCA | Préfixe des fichiers de sortie (ex : SCA-REPORT-, SCA-DATA-). |
| brand.logo | null | Chemin vers votre logo (SVG, PNG, JPG). Remplace le favicon et l'icône d'en-tête par défaut dans le rapport. |
| brand.primary_color | #1e3a5f | Couleur de début du gradient d'en-tête du rapport. |
| brand.accent_color | #2c5282 | Couleur de fin du gradient d'en-tête du rapport. |
"brand": {
"tool_name": "MyCompany Audit",
"company_name": "MyCompany Inc.",
"prefix": "MCA",
"logo": "assets/my-logo.svg",
"primary_color": "#1a1a2e",
"accent_color": "#16213e"
}
Fonctionnalités du rapport
Le rapport HTML est entièrement autonome — un fichier unique avec tous les CSS, JavaScript et graphiques intégrés. Aucun serveur, aucune ressource externe.
12+ graphiques interactifs
Distribution des sévérités, répartition par catégorie, analyse des temps, tendances historiques, niveaux de confiance, et plus. Propulsé par Chart.js (intégré).
Groupement par sévérité
Findings organisés par sévérité (CRITICAL, HIGH, MEDIUM, LOW, INFO) avec badges colorés, chemins de fichiers, numéros de ligne et contexte de code.
Score de santé
Score logarithmique (0-100) basé sur les findings sécurité, normalisé par taille du projet (LOC). Pénalités : CRITICAL ×10, HIGH ×5, MEDIUM ×2, LOW ×1.
Intégration Git Blame
Lorsqu'activé (--git-blame), chaque finding affiche le nom du commiteur, la date et le hash du commit pour la responsabilité d'équipe.
Comparaison baseline
Comparer les résultats d'audit contre jusqu'à 10 snapshots précédents (configurable). Suivre les findings nouveaux, résolus et persistants dans le temps.
Rétention des rapports
Nettoyage automatique des anciens rapports par nombre, âge en jours, ou les deux. Utiliser --retention-dry-run pour prévisualiser les suppressions. Minimum 1 rapport toujours conservé.
Rapports en 4 langues
Localisation complète en anglais, français, espagnol et allemand. Chaque chaîne traduite : noms de règles, risques, solutions, bénéfices, labels de graphiques, termes du glossaire.
Glossaire intégré
36 acronymes et termes techniques avec aperçu tooltip. Chaque occurrence dans le rapport est un lien cliquable vers la définition du glossaire.
Résumé exécutif
Tableau de bord en haut de chaque rapport : score de santé, répartition des sévérités, tendance et Recommandations prioritaires en pleine largeur pour une visibilité immédiate.
Guide utilisateur en 4 langues
Chaque livraison client inclut USER-GUIDE.md en anglais, français, espagnol et allemand — CLI, audit.config.json, personnalisation du rapport, suppression et intégration CI/CD.