Outil d'analyse statique de code sensible au framework pour une revue automatisée du code source avec des règles spécifiques à la plateforme, analyse de flux de données (taint), estimation d'effort, et lignes de base de suppression.
Author:
## À propos de Daksh SCRA
Daksh SCRA (Source Code Review Assist) est conçu pour améliorer l'efficacité du processus de revue de code source, en offrant une approche bien structurée et organisée pour les réviseurs de code.
Plutôt que de signaler indistinctement tout comme un problème potentiel, Daksh SCRA favorise une analyse réfléchie, incitant à l'investigation et à la confirmation des problèmes potentiels. Cette approche réduit la précipitation à étiqueter chaque préoccupation potentielle comme un bug, diminuant ainsi la confusion et le temps perdu sur les faux positifs.
### Débuts
Daksh SCRA a été initialement présenté lors d'une session de formation à la revue de code source à Black Hat USA 2022 (6-9 août), où il a été subtilement introduit à un public spécifique. Ses débuts publics officiels ont eu lieu à Black Hat USA 2023 à Las Vegas.
## Fonctionnalités et caractéristiques
- **Identifie les zones d'intérêt dans le code source :** Encourage une investigation et une confirmation ciblées plutôt que d'étiqueter indistinctement tout comme un bug.
- **Identifie les zones d'intérêt dans les chemins de fichiers (première mondiale) :** Reconnaît les motifs dans les chemins de fichiers pour repérer les sections pertinentes à examiner.
- **Reconnaissance au niveau logiciel pour identifier les technologies utilisées :** Identifie les technologies du projet, permettant aux réviseurs de code d'effectuer des analyses précises avec les règles appropriées.
- **Estimation scientifique automatisée de l'effort pour la revue de code (première mondiale) :** Fournit une approche mesurable pour estimer l'effort requis pour une revue de code.
- **Analyse adaptée au framework :** Applique automatiquement les règles spécifiques au framework lorsque celui du projet est détecté.
- **Rapports d'analyse de flux de données (taint) :** Rapports HTML de flux de données par plateforme avec des thèmes mode hacker et mode professionnel.
- **RDL (Rule Description Language) :** Logique de règles externe référencée avec `rdl_ref` et exécutée par le pipeline `core/rdl_engine.py` - prend en charge les portes sensibles aux fichiers, les expressions booléennes, les observations du projet et les métadonnées de logique exportées dans les rapports.
- **État d'analyse / Reprise :** Enregistrez les analyses longues et reprenez-les après une interruption.
- **Base de référence de suppression :** Générez et appliquez une base de référence des faux positifs connus pour les supprimer des futurs rapports.
- **Interface Web :** Lanceur d'analyse basé sur navigateur avec flux de console en temps réel et navigateur d'artefacts de tâches.
> Des améliorations actives sont en cours. De nombreuses nouvelles fonctionnalités et améliorations sont prévues pour les prochaines versions.
N'hésitez pas à contribuer à la mise à jour ou à l'ajout de nouvelles règles et au développement futur.
Si vous trouvez des bugs, signalez-les à [[email protected]](mailto:[email protected]).
Documentation détaillée : [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)
---
## Pour commencer
Il existe deux façons d'exécuter Daksh SCRA - choisissez celle qui correspond à votre flux de travail :
| | Idéal pour | Accéder à |
|---|---|---|
| 🌐 **Interface Web (Docker)** | La façon la plus simple de démarrer - une commande, un tableau de bord navigateur, une progression d'analyse en direct et un navigateur de rapports/artefacts. Recommandé pour la plupart des utilisateurs. | [Interface Web (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | Scripts, pipelines CI ou exécution d'analyses sans Docker. | [Configuration CLI](#cli-setup) |
Les deux chemins exécutent exactement le même moteur d'analyse - l'interface Web est un front-end navigateur au-dessus de la même CLI, donc les résultats sont identiques dans les deux cas.
---
## Interface Web (Docker)
Le moyen le plus rapide d'exécuter Daksh SCRA est via son interface Web basée sur navigateur, lancée avec une seule commande Docker Compose. Elle vous offre un lanceur d'analyse, un flux de console en direct et un historique consultable des rapports passés, sans nécessiter d'environnement Python local.
La configuration Docker exécute l'interface Web et la CLI comme des services indépendants construits à partir de la même image, vous pouvez donc utiliser l'un ou l'autre (ou les deux) à partir du même conteneur.
### Lancer l'interface Web
Mode avant-plan (les journaux sont diffusés dans votre terminal) :```bash
docker compose up --build
Mode détaché / arrière-plan :```bash docker compose up --build -d
Ensuite, ouvrez [http://localhost:8080](http://localhost:8080).
Pour utiliser un autre port :```bash
DAKSH_PORT=9090 docker compose up
Arrêtez la pile avec :```bash docker compose down
### Connexion
L'interface Web nécessite un compte. Au premier démarrage, un compte administrateur initial est créé à partir de `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` (définissez-les dans `.env`) ; si `DAKSH_ADMIN_PASSWORD` n'est pas défini, un mot de passe aléatoire est généré et affiché une seule fois dans le journal de démarrage de l'API — conservez-le, car il ne peut pas être récupéré par la suite.
Vous devrez définir votre propre mot de passe (et, éventuellement, votre nom d'utilisateur) lors de votre première connexion. Un compte administrateur peut créer d'autres comptes via le point de terminaison d'API `POST /api/v1/auth/users` (aucune interface dédiée pour cela pour l'instant). Consultez `.env.example` pour la liste complète des paramètres liés à l'authentification (durée de session, sécurité des cookies, CORS).
### Ce que vous obtenez
- Générateur de commandes réactif pour les modes scan, recon, estimate, recon+estimate, list et PDF-depuis-JSON
- Flux de console en temps réel et progression en direct par étape pendant l'exécution
- Instantanés d'artefacts par tâche pour les sorties HTML / PDF / JSON
- Navigation rapide dans le navigateur entre le formulaire d'exécution, le flux en direct, les artefacts et les tâches récentes
- Navigateur de répertoires intégré pour sélectionner les chemins cibles (compatible OS : Windows, macOS, Linux / Docker)
Sous le capot, la CLI reste la source de vérité — elle effectue toutes les analyses et génère chaque sortie HTML / PDF / JSON. L'interface Web exécute une tâche active à la fois et capture les sorties de chaque tâche terminée dans `runtime/webui/jobs/<job-id>/artifacts/` afin que les rapports passés restent accessibles.
### Exécution de la CLI dans Docker
Vous n'avez pas non plus besoin d'un environnement Python local pour utiliser la CLI — elle est disponible en tant que service Compose dédié, construit à partir de la même image :```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source
reports/ et runtime/Points de montage clés :
| Montage | Chemin dans le conteneur |
|---|---|
| Source du projet | /app |
| Racine de scan par défaut | /scan-targets |
| Alias de lecteurs hôtes | /host, /host/c, /host/d |
| Montages WSL | /mnt, /run/desktop/mnt/host |
Variables d'environnement (à configurer dans .env) :
| Variable | Description |
|---|---|
DAKSH_PORT | Port de l'interface Web (défaut : 8080) |
DAKSH_SCAN_ROOT | Répertoire cible par défaut dans le conteneur |
DAKSH_HOST_SOURCE | Chemin hôte à monter comme /scan-targets (défaut : /tmp) |
DAKSH_HOST_MOUNT | Racine de montage hôte supplémentaire |
DAKSH_HOST_C | Chemin du lecteur C: Windows (WSL) |
DAKSH_HOST_D | Chemin du lecteur D: Windows (WSL) |
DAKSH_DESKTOP_MOUNT | Chemin de montage du bureau WSL |
DAKSH_BROWSE_ROOTS | Remplace les racines du navigateur de répertoires (séparées par des virgules) |
DAKSH_ADMIN_USERNAME | Nom d'utilisateur admin initial (défaut : admin) |
DAKSH_ADMIN_PASSWORD | Mot de passe admin initial - fortement recommandé de le définir explicitement |
Copiez .env.example vers .env et définissez les chemins et identifiants pour votre machine avant d'exécuter Docker.
Vous préférez exécuter Daksh SCRA directement avec Python ? Voici comment le configurer localement.
requirements.txtOu téléchargez la dernière archive zip depuis [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) et décompressez-la.
### 2. Configurer un environnement virtuel
> 💡 L’environnement virtuel peut être créé dans n’importe quel répertoire — il n’est pas nécessaire qu’il se trouve dans le dossier DakshSCRA.
**Option A : Configuration en une étape (recommandée)**```bash
python setup_env.py
Ce script crée l'environnement virtuel, installe toutes les dépendances et installe le navigateur Chromium de Playwright (requis pour l'export PDF).
Option B : Configuration manuelle
Windows :```bash python -m venv daksh-env .\daksh-env\Scripts\activate
macOS / Linux :```bash
python3 -m venv daksh-env
source daksh-env/bin/activate
Alors installez les dépendances :```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium
---
## Utilisation en ligne de commande
Utilisez `python` dans un environnement virtuel, ou `python3` en dehors de celui-ci.
### Options de la ligne de commande```
usage: dakshscra.py [-h] [-r RULES] [-f FILE_TYPES] [-v] [-t TARGET_DIR]
[-l {R,RF}] [--recon] [--rs] [--estimate]
[-rpt FORMATS] [--pdf-from-json]
[--json-input-dir PATH] [--pdf-output PATH]
[--pdf-multi-dir PATH] [--pdf-single-only]
[--skip-analysis] [--loc]
[--baseline-file PATH] [--baseline-generate] [--no-baseline]
[--review-config PATH]
[--resume-scan] [--state-file PATH] [--no-state] [--state]
| Option | Description |
|---|---|
-r RULES | Règles de la plateforme (p. ex. php, java, php,java) ou auto pour la détection automatique |
-f FILE_TYPES | Remplace les types de fichiers par défaut pour l'analyse |
-v | Niveau de verbosité (-v, -vv, -vvv) |
-t TARGET_DIR | Répertoire du code source cible |
-l {R,RF} | Liste les règles de la plateforme + frameworks [R] ou inclut les types de fichiers [RF] |
--recon | Exécute la reconnaissance (détection de la plateforme / du framework / du langage) |
--rs, --recon-strict | Reconnaissance stricte : détections à haute confiance uniquement (à utiliser avec --recon) |
--estimate | Estime l'effort de revue de code en fonction de la taille du codebase |
-rpt, --report FORMATS | Formats de rapport : html, pdf, ou html,pdf (par défaut : html) |
--pdf-from-json | Génère des rapports PDF à partir de sorties JSON existantes sans nouvelle analyse |
--json-input-dir PATH | Répertoire des rapports JSON (par défaut : ./reports/data) |
--pdf-output PATH | Chemin de sortie PDF unique (par défaut : ./reports/scan/pdf/report.pdf) |
--pdf-multi-dir PATH | Répertoire de sortie PDF multi-fichiers (par défaut : ./reports/scan/pdf/multi-file) |
--pdf-single-only | Génère uniquement le PDF combiné en un seul fichier ; ignore l'ensemble multi-fichiers par plateforme |
-f(types de fichiers) est facultatif. S'il n'est pas spécifié, DakshSCRA utilise les types de fichiers par défaut pour la ou les plateformes sélectionnées.```bash
python dakshscra.py -r php -t /path/to/source
python dakshscra.py -r php,java,cpp -t /path/to/source
python dakshscra.py -r auto -t /path/to/source
python dakshscra.py -r php -f dotnet -t /path/to/source
python dakshscra.py --recon -t /path/to/source
python dakshscra.py --recon -r php -t /path/to/source
python dakshscra.py --recon --rs -t /path/to/source
python dakshscra.py --estimate -t /path/to/source
python dakshscra.py -r auto -t /path/to/source -rpt html,pdf
python dakshscra.py -r php -v -t /path/to/source # default python dakshscra.py -r php -vvv -t /path/to/source # show all pattern checks
python dakshscra.py -r auto -t /path/to/source --baseline-generate
python dakshscra.py -r auto -t /path/to/source --baseline-file config/suppressions.json
python dakshscra.py -r auto -t /path/to/source --no-baseline
python dakshscra.py -r auto -t /path/to/source --review-config config/review.json
python dakshscra.py -r auto -t /path/to/source --state
python dakshscra.py -r auto -t /path/to/source --resume-scan
python dakshscra.py -r auto -t /path/to/source --resume-scan --state-file runtime/scan_state.json
python dakshscra.py --pdf-from-json
python dakshscra.py --pdf-from-json --json-input-dir ./custom/reports/data
python dakshscra.py --pdf-from-json --pdf-output ./reports/scan/pdf/custom.pdf --pdf-multi-dir ./reports/scan/pdf/multi-file
python dakshscra.py --pdf-from-json --pdf-single-only
### Règles et frameworks de plateformes pris en charge```bash
python dakshscra.py -l R # List platform rules and framework mappings
python dakshscra.py -l RF # List platform rules, framework mappings, and filetypes
Plateformes et frameworks actuellement pris en charge :
| Plateforme | Frameworks |
|---|---|
| dotnet | aspnetcore, entityframework |
| php | codeigniter, drupal, laravel, symfony, wordpress |
| java | hibernate, spring, springboot |
| javascript | angular, express, nestjs, nextjs, react, vue |
| kotlin | ktor, springkotlin |
| python | django, fastapi, flask |
| go | echo, fiber, gin |
| c | freertos |
| cpp | boost, qt |
| android | cordova-android, flutter-android, ionic-android, jetpack, nativescript-android, reactnative-android, xamarin-android |
| ios | cordova-ios, flutter-ios, ionic-ios, nativescript-ios, reactnative-ios, swiftui, uikit, xamarin-ios |
| reactnative | reactnative |
| flutter | flutter |
| xamarin | xamarin |
| ionic | ionic |
| nativescript | nativescript |
| cordova | cordova |
| ruby | rails, sinatra |
| rust | actix, axum, rocket |
| common | - |
Pour obtenir la liste la plus récente des plateformes et frameworks pris en charge, exécutez toujours :```bash python dakshscra.py -l R
---
## Référence de configuration
### `config/tool.yaml`
Les valeurs par défaut du runtime de Daksh SCRA sont contrôlées via `config/tool.yaml`.```yaml
state_management:
enabled: false
resume_mode: manual
persist_after_seconds: 300
persist_interval_seconds: 30
default_state_file: runtime/scan_state.json
cleanup_on_success: false
analysis:
run_by_default: true
include_frameworks: true
report_theme: hacker_mode
Options de configuration de l'analyseur :
analysis.run_by_default
true : l'analyseur s'exécute automatiquement lors de l'analysefalse : l'analyseur est désactivé sauf s'il est réactivé dans la configuration ou via la CLIanalysis.include_frameworks
true : inclure les entrées d'analyseur au niveau des frameworks lorsque la détection de framework existefalse : sortie de l'analyseur au niveau de la plateforme uniquementanalysis.report_theme
hacker_mode : thème d'analyseur moderne sombre à contraste élevé (par défaut)professional_mode : thème d'analyseur moderne clairboth : générer les deux variantes de thème côte à côteRDL (Rule Description Language) est la couche de logique de règles externalisée de DakshSCRA. Dans l'architecture actuelle :
name, regex, des descriptions et un scan_config facultatif.core/rdl_engine.py.rules/scanning/logic/... et sont référencés depuis le XML à l'aide de <rdl_ref>.rdl_ref sont résolues par rapport à rules/scanning/, par exemple :
logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdllogic_engine, logic_source,
logic_reason, logic_trace, logic_consulted_files et logic_outcome.L'ancienne forme inline <rdl> ne fait plus partie de l'architecture active et ne doit pas être utilisée pour les nouvelles règles.
XML rule -> regex / exclude / scan_config / descriptions -> rdl_ref -> rules/scanning/logic///.rdl -> core/rdl_engine.py -> pass / fail -> reason / fail_reason -> trace / consulted_files / outcome
#### Séquence de scan
Pour une règle source, DakshSCRA évalue la logique dans cet ordre :
1. Recon sélectionne les plateformes et frameworks correspondants.
2. La règle XML est chargée depuis `rules/scanning/platform/...`.
3. `regex` identifie les lignes candidates ou les correspondances sur l'ensemble du fichier lorsqu'elles sont présentes.
4. `exclude` supprime le bruit évident pour cette règle, s'il est présent.
5. Le fichier externe `.rdl` de `rdl_ref` est évalué par rapport au texte du fichier actuel, au chemin du fichier actuel et à la racine du projet.
6. Si le script RDL réussit, DakshSCRA conserve la découverte et fusionne les métadonnées de logique exportées dans la sortie du rapport.
7. Si le script RDL échoue, la correspondance est supprimée avec la raison de l'échec RDL et les métadonnées de trace de décision.
Pour les règles de chemin de fichier dans `filepaths.xml`, le même modèle `rdl_ref` s'applique, mais le sujet de correspondance est
le chemin relatif normalisé au lieu du texte du code source. Dans ce mode, RDL reçoit la chaîne du chemin relatif
comme texte du fichier actuel et contexte de chemin.
#### Structure actuelle des règles```xml
<rule>
<name>Rule Name</name>
<regex><![CDATA[regex_to_match]]></regex>
<rdl_ref>logic/common/core/insecure_sql_query_unsafe_string_concatenation.rdl</rdl_ref>
<exclude><![CDATA[pattern_to_exclude_lines]]></exclude> <!-- optional -->
<scan_config>...</scan_config> <!-- optional -->
<rule_desc>Short description of what the rule detects.</rule_desc>
<vuln_desc>Why the pattern matters.</vuln_desc>
<developer>Fix guidance for developers.</developer>
<reviewer>Manual confirmation guidance for reviewers.</reviewer>
</rule>
VERSION 1 WHEN PRESENT /\b(?:mysql_query|mysqli_query|->query)\s*\(/i WHEN EXPR PRESENT:\$_(GET|POST|REQUEST|COOKIE) && MISSING:\b(?:prepare|bindParam|bindValue|PDO::prepare)\b REPORT AS area_of_interest REASON SQL query execution appears reachable without parameterisation in this file. FAIL_REASON Matching query API was found, but the file also contains prepared-statement indicators. TRACE SQLi gate: input source present and mitigation missing.
#### Disposition actuelle```text
rules/
└── scanning/
├── platform/
│ ├── php/php.xml
│ ├── java/java.xml
│ └── ...
└── logic/
├── common/core/
├── php/core/
├── php/framework/laravel/
├── mobile/android/core/
├── filepaths/core/
└── ...
WHEN PRESENT, WHEN MISSING et WHEN CURRENT_FILE_MATCHES s'évaluent par rapport au texte du fichier courant.WHEN FILE_NAME_IS et WHEN FILE_PATH_MATCHES s'évaluent par rapport au contexte du chemin du fichier courant.WHEN EXPR prend en charge la logique booléenne sur les prédicats PRESENT:, MISSING: et EXISTS:.OBSERVE PROJECT_HAS_GLOB ... AS ... ne conditionne pas le résultat ; il enregistre les fichiers projet associés dans les métadonnées de trace.REPORT AS, REASON, FAIL_REASON et TRACE contrôlent les métadonnées de rapport exportées./motif/drapeaux, avec prise en charge de i, m et s.| Commande | Comportement | Utilisation typique |
|---|---|---|
WHEN PRESENT <regex> | Exiger qu'un motif existe dans le texte du fichier courant | Exiger une API risquée ou un champ sensible co-occurrent |
WHEN MISSING <regex> | Exiger qu'un motif soit absent du texte du fichier courant | Supprimer lorsqu'une atténuation existe déjà |
WHEN EXPR <expr> | Évaluer des expressions booléennes à l'aide de PRESENT: / MISSING: / EXISTS: avec &&, ` | |
WHEN CURRENT_FILE_MATCHES <regex> | Correspondre au texte complet du fichier courant | Revérifier des conditions complexes sur l'ensemble du fichier |
WHEN FILE_NAME_IS <nom> | Exiger que le nom du fichier courant corresponde exactement | Limiter les règles plist / manifest / config |
WHEN FILE_PATH_MATCHES <glob> | Exiger que le chemin relatif courant corresponde à un glob | Restreindre les règles de chemin framework/config |
UNLESS CURRENT_FILE_MATCHES <regex> | Échouer lorsque le fichier entier correspond à un motif d'exclusion | Bloquer les cas structurels connus comme sûrs |
OBSERVE PROJECT_HAS_GLOB <glob> AS <étiquette> | Enregistrer les fichiers projet associés dans les métadonnées de trace | Mettre en évidence les fichiers de configuration ou compagnons associés |
REPORT AS <résultat> | Définir le résultat de la règle, généralement area_of_interest | Résultats explicites pérennes |
REASON <texte> | Raison affichée lorsque la règle passe | Expliquer pourquoi le résultat est resté visible |
FAIL_REASON <texte> | Raison affichée lorsque la règle supprime une correspondance | Expliquer pourquoi la correspondance a été filtrée |
TRACE <texte> | Ajouter des lignes de trace de décision/débogage | Prise en charge de la migration/débogage |
Les expressions booléennes dans WHEN EXPR prennent en charge :
PRESENT:<regex>MISSING:<regex>EXISTS:<regex>&&, ||, ! et les parenthèsesRègle XML :```xml Possible SQL Injection in Query Execution query)\s*\(]]> <rdl_ref>logic/common/core/insecure_sql_query_unsafe_string_concatenation.rdl</rdl_ref> <rule_desc>...</rule_desc>
External RDL :```text
VERSION 1
WHEN PRESENT /\b(?:mysql_query|mysqli_query|->query)\s*\(/i
WHEN EXPR PRESENT:\$_(GET|POST|REQUEST|COOKIE) && MISSING:\b(?:prepare|bindParam|bindValue|PDO::prepare)\b
REPORT AS area_of_interest
REASON Query execution appears to rely on direct input without parameterisation.
FAIL_REASON Query API matched, but parameterised query indicators were also found in the file.
Règle XML :```xml Exported Components Without Permission activity|service|receiver|provider)\s[^>]*android:name="(?P[^"]+)"[^>]*android:exported="true"[^>]*(?:/>|>)]]> <rdl_ref>logic/mobile/android/core/exported_components.rdl</rdl_ref> <scan_config>...</scan_config>
External RDL :```text
VERSION 1
WHEN FILE_NAME_IS AndroidManifest.xml
WHEN CURRENT_FILE_MATCHES /android:exported\s*=\s*"true"/i
WHEN MISSING /android:permission\s*=\s*"/i
REPORT AS area_of_interest
REASON Exported component appears reachable without a permission guard.
Règle XML :```xml Admin Section File Path <rdl_ref>logic/filepaths/core/admin_section.rdl</rdl_ref>
External RDL :```text
VERSION 1
WHEN CURRENT_FILE_MATCHES /(^|\/)(admin|administrator|root)(\/|$)/i
UNLESS CURRENT_FILE_MATCHES /(^|\/)(tests?|docs?|samples?|examples?)(\/|$)/i
REPORT AS area_of_interest
REASON File path suggests privileged application functionality.
FAIL_REASON Path matched an excluded documentation or sample location.
regex suffisamment large pour détecter les candidats, puis utilisez RDL pour filtrer le contexte.rdl_ref pour toute la logique des règles et conservez le fichier .rdl à côté de l’arborescence de logique de la plateforme/cadre appropriée.<rdl> en ligne.WHEN PRESENT / WHEN MISSING pour les portes simples et WHEN EXPR uniquement lorsque la logique est réellement booléenne.REASON et les explications de suppression dans FAIL_REASON.PRESENT et MISSING comme des vérifications à l’échelle du fichier. Une atténuation n’importe où dans le fichier peut supprimer chaque correspondance de ce fichier.OBSERVE PROJECT_HAS_GLOB pour enrichir les résultats avec le contexte du projet, et non comme une porte de réussite/échec.logic/... stables et limités à la plateforme afin que les règles XML restent légères et que la couche logique reste réutilisable.Toutes les sorties sont écrites sous le répertoire reports/ :```
reports/
├── scan/
│ ├── html/
│ │ ├── report.html # Single-file HTML scan report
│ │ └── multi-file/ # Per-platform HTML report set
│ ├── pdf/
│ │ ├── report.pdf # Single-file PDF scan report
│ │ └── multi-file/ # Per-platform PDF report set
│ ├── recon/
│ │ └── reconnaissance.html # Reconnaissance HTML report
│ └── estimate/
│ └── estimation.html # Effort estimation HTML report
├── analysis/
│ └── /
│ ├── analysis.html # Taint analysis report (default theme)
│ ├── analysis_professional.html # Professional theme (if theme=both)
│ ├── analysis_xref.html # Cross-reference report
│ └── analysis.json # Structured analysis data
└── data/
├── areas_of_interest.json # AoI findings
├── filepaths_aoi.json # File path AoI findings
├── summary.json # Scan summary
├── recon.json # Recon summary
└── analysis.json # Analyzer output
Les fichiers d’exécution (état d’analyse, journaux, inventaire) sont écrits sous `runtime/`.
Lors de l’exécution via l’interface Web, les sorties de chaque tâche sont en outre enregistrées sous forme d’instantanés dans `runtime/webui/jobs/<job-id>/artifacts/` (voir [Interface Web (Docker)](#web-ui-docker)).
---
## Auteur
| | |
|---|---|
| Site web | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| E-mail | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| Source | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| Licence | Licence publique générale GNU v3.0 (GPL-3.0) |
Si DakshSCRA a aidé votre équipe à économiser un temps, des efforts ou des coûts considérables, à réduire sa dépendance aux outils commerciaux onéreux, à améliorer la couverture des revues, ou à rendre la revue de code plus structurée et efficace, n’hésitez pas à nous contacter et à partager votre expérience. Je suis toujours ouvert aux retours réfléchis et aux conversations intéressantes.
Vous avez trouvé un bug ou souhaitez contribuer ? Ouvrez une issue ou une pull request sur GitHub.
--skip-analysis | Désactive l'étape d'analyse pour cette exécution |
--loc | Compte les lignes de code effectives |
--baseline-file PATH | Fichier de référence de suppression (JSON) |
--baseline-generate | Génère une référence de suppression à partir des résultats actuels |
--no-baseline | Désactive la suppression par référence pour cette exécution |
--review-config PATH | Fichier de triage des résultats (JSON) ; supprime des rapports les faux positifs déjà examinés |
--resume-scan | Reprend une analyse précédemment interrompue à partir du fichier d'état |
--state-file PATH | Chemin personnalisé du fichier d'état / point de contrôle d'analyse |
--no-state | Désactive le point de contrôle d'état d'analyse pour cette exécution |
--state | Force l'activation du point de contrôle d'état d'analyse pour cette exécution |