Strumento di analisi statica del codice consapevole del framework per la revisione automatica del codice sorgente con regole specifiche per piattaforma, analisi del taint, stima dello sforzo e baseline di soppressione.
Author:
## Informazioni su Daksh SCRA
Daksh SCRA (Source Code Review Assist) è progettato per migliorare l'efficienza del processo di revisione del codice sorgente, offrendo un approccio ben strutturato e organizzato per i revisori del codice.
Piuttosto che segnalare indiscriminatamente tutto come un potenziale problema, Daksh SCRA promuove un'analisi ponderata, spingendo a indagare e confermare i potenziali problemi. Questo approccio riduce la corsa a etichettare ogni potenziale preoccupazione come un bug, tagliando la confusione e il tempo sprecato in falsi positivi.
### Debutto
Daksh SCRA è stato inizialmente presentato durante una sessione di formazione sulla revisione del codice sorgente al Black Hat USA 2022 (6-9 agosto), dove è stato mostrato in modo discreto a un pubblico specifico. Il suo debutto pubblico ufficiale è avvenuto al Black Hat USA 2023 a Las Vegas.
## Funzionalità e Caratteristiche
- **Identifica le Aree di Interesse nel Codice Sorgente:** Incoraggia un'indagine e una conferma mirate piuttosto che etichettare indiscriminatamente tutto come un bug.
- **Identifica le Aree di Interesse nei Percorsi dei File (Prima al Mondo):** Riconosce i pattern nei percorsi dei file per individuare le sezioni rilevanti da revisionare.
- **Ricognizione a Livello Software per Identificare le Tecnologie Utilizzate:** Identifica le tecnologie del progetto, consentendo ai revisori del codice di eseguire scansioni precise con regole appropriate.
- **Stima Automatica e Scientifica dello Sforzo per la Revisione del Codice (Prima al Mondo):** Fornisce un approccio misurabile per stimare lo sforzo richiesto per una revisione del codice.
- **Scansione Consapevole del Framework:** Applica automaticamente regole specifiche del framework quando viene rilevato il framework del progetto.
- **Report di Analisi del Taint:** Report HTML del flusso taint per piattaforma con temi modalità hacker e modalità professionale.
- **RDL (Rule Description Language):** Logica di regole esterna referenziata con `rdl_ref` ed eseguita dalla pipeline `core/rdl_engine.py` - supporta gate consapevoli dei file, espressioni booleane, osservazioni sul progetto e metadati di logica esportati nei report.
- **Stato di Scansione / Ripresa:** Crea checkpoint per scansioni lunghe e riprendi dopo un'interruzione.
- **Baseline di Soppressione:** Genera e applica una baseline di falsi positivi noti per sopprimerli dai report futuri.
- **Interfaccia Web:** Avvio di scansioni basato su browser con feed console in tempo reale e browser degli artefatti dei job.
> Sono in corso miglioramenti attivi. Molte nuove funzionalità e migliorie sono previste per le prossime release.
Sentiti libero di contribuire all'aggiornamento o all'aggiunta di nuove regole e allo sviluppo futuro.
Se trovi bug, segnalali a [[email protected]](mailto:[email protected]).
Documentazione dettagliata: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)
---
## Per Iniziare
Ci sono due modi per eseguire Daksh SCRA - scegli quello che si adatta al tuo flusso di lavoro:
| | Ideale per | Vai a |
|---|---|---|
| 🌐 **Web UI (Docker)** | Il modo più semplice per iniziare - un solo comando, una dashboard nel browser, avanzamento della scansione in tempo reale e un browser per report/artefatti. Consigliato per la maggior parte degli utenti. | [Web UI (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | Scripting, pipeline CI o esecuzione di scansioni senza Docker. | [Configurazione CLI](#cli-setup) |
Entrambi i percorsi eseguono esattamente lo stesso motore di scansione - la Web UI è un frontend nel browser sopra la stessa CLI, quindi i risultati sono identici in entrambi i casi.
---
## Web UI (Docker)
Il modo più veloce per eseguire Daksh SCRA è tramite la sua Web UI basata su browser, avviata con un singolo comando Docker Compose. Ti offre un avviatore di scansioni, un feed console in tempo reale e una cronologia navigabile dei report passati, senza bisogno di un ambiente Python locale.
La configurazione Docker esegue la Web UI e la CLI come servizi indipendenti costruiti dalla stessa immagine, così puoi usare entrambi (o uno solo) dallo stesso contenitore.
### Avvia la Web UI
Modalità in primo piano (i log vengono trasmessi al tuo terminale):```bash
docker compose up --build
Modalità distaccata / in background:```bash docker compose up --build -d
Poi apri [http://localhost:8080](http://localhost:8080).
Per usare una porta diversa:```bash
DAKSH_PORT=9090 docker compose up
Ferma lo stack con:```bash docker compose down
### Accesso
L'interfaccia Web richiede un account. Al primo avvio, viene creato un account amministratore iniziale da `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` (impostali in `.env`); se `DAKSH_ADMIN_PASSWORD` viene lasciato vuoto, viene generata una password casuale e stampata una sola volta nel log di avvio dell'API - salvala, poiché non può essere recuperata in seguito.
Ti verrà richiesto di impostare la tua password (e, opzionalmente, il nome utente) la prima volta che accedi. Un account amministratore può creare ulteriori account tramite l'endpoint API `POST /api/v1/auth/users` (nessuna UI dedicata per questo al momento). Consulta `.env.example` per l'elenco completo delle impostazioni relative all'autenticazione (durata della sessione, sicurezza dei cookie, CORS).
### Cosa ottieni
- Builder di comandi reattivo per le modalità scan, recon, estimate, recon+estimate, list e PDF-da-JSON
- Feed della console in tempo reale e avanzamento live per fase durante l'esecuzione
- Snapshot degli artefatti per job per gli output HTML / PDF / JSON
- Navigazione rapida nel browser tra modulo di esecuzione, feed live, artefatti e job recenti
- Browser di directory integrato per selezionare i percorsi di destinazione (consapevole del sistema operativo: Windows, macOS, Linux / Docker)
Sotto il cofano, la CLI rimane la fonte di verità - esegue tutta la scansione e genera ogni output HTML / PDF / JSON. L'interfaccia Web esegue un job attivo alla volta e salva gli output di ogni job completato in `runtime/webui/jobs/<job-id>/artifacts/` così i report passati rimangono accessibili.
### Esecuzione della CLI in Docker
Non hai bisogno di un ambiente Python locale per usare la CLI - è disponibile come servizio Compose dedicato, costruito dalla stessa immagine:```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source
reports/ e runtime/Punti di montaggio principali:
| Mount | Percorso all'interno del container |
|---|---|
| Sorgente del progetto | /app |
| Root di scansione predefinita | /scan-targets |
| Alias delle unità host | /host, /host/c, /host/d |
| Montaggi WSL | /mnt, /run/desktop/mnt/host |
Variabili d'ambiente (configurare in .env):
| Variabile | Descrizione |
|---|---|
DAKSH_PORT | Porta della Web UI (predefinita: 8080) |
DAKSH_SCAN_ROOT | Directory di destinazione predefinita all'interno del container |
DAKSH_HOST_SOURCE | Percorso host da montare come /scan-targets (predefinito: /tmp) |
DAKSH_HOST_MOUNT | Root di montaggio host aggiuntivo |
DAKSH_HOST_C | Percorso dell'unità C: di Windows (WSL) |
DAKSH_HOST_D | Percorso dell'unità D: di Windows (WSL) |
DAKSH_DESKTOP_MOUNT | Percorso di montaggio desktop WSL |
DAKSH_BROWSE_ROOTS | Sostituisce le root del browser di directory (separate da virgole) |
DAKSH_ADMIN_USERNAME | Nome utente admin iniziale (predefinito: admin) |
DAKSH_ADMIN_PASSWORD | Password admin iniziale - fortemente consigliato impostarla esplicitamente |
Copiare .env.example in .env e impostare i percorsi e le credenziali per la propria macchina prima di eseguire Docker.
Preferisci eseguire Daksh SCRA direttamente con Python? Ecco come configurarlo localmente.
requirements.txtOppure scarica l'ultimo zip da [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) e decomprimilo.
### 2. Configura un Ambiente Virtuale
> 💡 L'ambiente virtuale può essere creato in qualsiasi directory - non deve necessariamente trovarsi all'interno della cartella DakshSCRA.
**Opzione A: Configurazione in un unico passaggio (consigliata)**```bash
python setup_env.py
Questo script crea l'ambiente virtuale, installa tutte le dipendenze e installa il browser Chromium di Playwright (richiesto per l'esportazione in PDF).
Opzione B: Configurazione manuale
Windows:```bash python -m venv daksh-env .\daksh-env\Scripts\activate
macOS / Linux:```bash
python3 -m venv daksh-env
source daksh-env/bin/activate
Allora installa le dipendenze:```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium
---
## Utilizzo da CLI
Usa `python` all'interno di un ambiente virtuale, oppure `python3` al di fuori di esso.
### Opzioni della riga di comando```
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]
| Opzione | Descrizione |
|---|---|
-r RULES | Regole della piattaforma (es. php, java, php,java) oppure auto per il rilevamento automatico |
-f FILE_TYPES | Sostituisce i tipi di file predefiniti per la scansione |
-v | Livello di verbosità (-v, -vv, -vvv) |
-t TARGET_DIR | Directory del codice sorgente di destinazione |
-l {R,RF} | Elenca le regole della piattaforma + framework [R] oppure include i tipi di file [RF] |
--recon | Esegue la ricognizione (rilevamento piattaforma / framework / linguaggio) |
--rs, --recon-strict | Ricognizione rigorosa: solo rilevamenti ad alta affidabilità (da usare con --recon) |
--estimate | Stima lo sforzo di revisione del codice in base alla dimensione del codebase |
-rpt, --report FORMATS | Formati di report: html, pdf oppure html,pdf (predefinito: html) |
--pdf-from-json | Genera report PDF da output JSON esistenti senza eseguire una nuova scansione |
--json-input-dir PATH | Directory dei report JSON (predefinita: ./reports/data) |
--pdf-output PATH | Percorso di output PDF singolo (predefinito: ./reports/scan/pdf/report.pdf) |
--pdf-multi-dir PATH | Directory di output PDF multi-file (predefinita: ./reports/scan/pdf/multi-file) |
--pdf-single-only | Genera solo il PDF combinato a file singolo; salta il set multi-file per piattaforma |
-f(tipi di file) è opzionale. Se non specificato, DakshSCRA utilizza i tipi di file predefiniti per le piattaforme selezionate.```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
### Regole e Framework delle Piattaforme Supportate```bash
python dakshscra.py -l R # List platform rules and framework mappings
python dakshscra.py -l RF # List platform rules, framework mappings, and filetypes
Piattaforme e framework attualmente supportati:
| Piattaforma | Framework |
|---|---|
| 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 | - |
Per ottenere le ultime piattaforme e framework supportati, esegui sempre:```bash python dakshscra.py -l R
---
## Riferimento alla Configurazione
### `config/tool.yaml`
Le impostazioni predefinite del runtime di Daksh SCRA sono controllate tramite `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
Opzioni di configurazione dell'analizzatore:
analysis.run_by_default
true: l'analizzatore viene eseguito automaticamente durante la scansionefalse: l'analizzatore è disabilitato a meno che non venga riabilitato nella configurazione o tramite CLIanalysis.include_frameworks
true: include le voci dell'analizzatore a livello di framework dove esiste il rilevamento del frameworkfalse: solo output dell'analizzatore a livello di piattaformaanalysis.report_theme
hacker_mode: tema analizzatore moderno scuro ad alto contrasto (predefinito)professional_mode: tema analizzatore moderno chiaroboth: genera entrambe le varianti di tema affiancateRDL (Rule Description Language) è il livello di logica delle regole esternalizzato di DakshSCRA. Nell'architettura attuale:
name, regex, descrizioni e scan_config opzionale.core/rdl_engine.py.rules/scanning/logic/... e vengono referenziati dall'XML tramite <rdl_ref>.rdl_ref vengono risolti relativamente a rules/scanning/, ad esempio:
logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdllogic_engine, logic_source,
logic_reason, logic_trace, logic_consulted_files e logic_outcome.La vecchia forma inline <rdl> non è più l'architettura attiva e non dovrebbe essere utilizzata per nuove regole.
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
#### Sequenza di scansione
Per una regola sorgente, DakshSCRA valuta la logica in questo ordine:
1. Recon seleziona le piattaforme e i framework corrispondenti.
2. La regola XML viene caricata da `rules/scanning/platform/...`.
3. `regex` trova righe candidate o corrispondenze su interi file quando presente.
4. `exclude` rimuove il rumore ovvio per quella regola, se presente.
5. Il file `.rdl` esterno da `rdl_ref` viene valutato rispetto al testo del file corrente, al percorso del file corrente e alla radice del progetto.
6. Se lo script RDL passa, DakshSCRA mantiene il risultato e unisce i metadati della logica esportata nell'output del report.
7. Se lo script RDL fallisce, la corrispondenza viene soppressa con il motivo del fallimento RDL e i metadati della traccia di decisione.
Per le regole sui percorsi file in `filepaths.xml`, si applica lo stesso modello `rdl_ref`, ma il soggetto della corrispondenza è
il percorso relativo normalizzato invece del testo del codice sorgente. In quella modalità, RDL riceve la stringa del percorso relativo
come testo del file corrente e contesto del percorso.
#### Struttura attuale delle regole```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>
.rdl corrente```textVERSION 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.
#### Layout attuale```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 e WHEN CURRENT_FILE_MATCHES vengono valutati rispetto al testo del file corrente.WHEN FILE_NAME_IS e WHEN FILE_PATH_MATCHES vengono valutati rispetto al contesto del percorso del file corrente.WHEN EXPR supporta la logica booleana sui predicati PRESENT:, MISSING: ed EXISTS:.OBSERVE PROJECT_HAS_GLOB ... AS ... non blocca il finding; registra i file di progetto correlati nei metadati di traccia.REPORT AS, REASON, FAIL_REASON e TRACE controllano i metadati di reporting esportati./pattern/flags, con supporto per i, m e s.| Comando | Comportamento | Uso tipico |
|---|---|---|
WHEN PRESENT <regex> | Richiede che un pattern esista nel testo del file corrente | Richiedere una API rischiosa o un campo sensibile co-occorrente |
WHEN MISSING <regex> | Richiede che un pattern sia assente dal testo del file corrente | Sopprimere quando esiste già una mitigazione |
WHEN EXPR <expr> | Valuta espressioni booleane usando PRESENT: / MISSING: / EXISTS: con &&, ` | |
WHEN CURRENT_FILE_MATCHES <regex> | Confronta con l'intero testo del file corrente | Ricontrollare condizioni complesse sull'intero file |
WHEN FILE_NAME_IS <name> | Richiede che il nome del file corrente corrisponda esattamente | Limitare regole per plist / manifest / config |
WHEN FILE_PATH_MATCHES <glob> | Richiede che il percorso relativo corrente corrisponda a un glob | Restringere regole su percorsi di framework/config |
UNLESS CURRENT_FILE_MATCHES <regex> | Fallisce quando l'intero file corrisponde a un pattern di esclusione | Bloccare casi strutturali noti come sicuri |
OBSERVE PROJECT_HAS_GLOB <glob> AS <label> | Registra i file di progetto correlati nei metadati di traccia | Evidenziare file di supporto o companion |
REPORT AS <outcome> | Imposta l'esito della regola, di solito area_of_interest | Esiti espliciti a prova di futuro |
REASON <text> | Motivazione mostrata quando la regola passa | Spiegare perché il finding è rimasto visibile |
FAIL_REASON <text> | Motivazione mostrata quando la regola sopprime una corrispondenza | Spiegare perché il hit è stato filtrato |
TRACE <text> | Aggiunge righe di traccia per debug/decisioni | Supporto a migrazione/debugging |
Le espressioni booleane in WHEN EXPR supportano:
PRESENT:<regex>MISSING:<regex>EXISTS:<regex>&&, ||, ! e parentesiRegola 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.
Regola 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.
Regola 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 sufficientemente ampio da individuare i candidati, poi usa RDL per filtrare il contesto.rdl_ref per tutta la logica delle regole e tieni il file .rdl accanto all'albero logico della piattaforma/framework appropriato.<rdl> inline.WHEN PRESENT / WHEN MISSING per controlli semplici e WHEN EXPR solo quando la logica è genuinamente booleana.REASON e le spiegazioni di soppressione in FAIL_REASON.PRESENT e MISSING come controlli a livello di intero file. Una mitigazione in qualsiasi punto del file può sopprimere ogni corrispondenza proveniente da quel file.OBSERVE PROJECT_HAS_GLOB per arricchire i risultati con il contesto del progetto, non come gate di superamento/fallimento.logic/... così che le regole XML restino sottili e il livello logico rimanga riutilizzabile.Tutti gli output vengono scritti nella directory 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
I file di runtime (stato della scansione, log, inventario) vengono scritti sotto `runtime/`.
Quando si esegue tramite l'interfaccia Web, gli output di ciascun job vengono inoltre salvati come snapshot sotto `runtime/webui/jobs/<job-id>/artifacts/` (vedi [Web UI (Docker)](#web-ui-docker)).
---
## Autore
| | |
|---|---|
| Sito web | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| Email | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| Sorgente | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| Licenza | GNU General Public License v3.0 (GPL-3.0) |
Se DakshSCRA ha aiutato il tuo team a risparmiare tempo, sforzo o costi significativi, a ridurre la dipendenza da costosi strumenti commerciali, a migliorare la copertura delle revisioni o a rendere la revisione del codice più strutturata ed efficace, non esitare a contattarmi e condividere la tua esperienza. Sono sempre aperto a feedback ponderati e conversazioni interessanti.
Hai trovato un bug o vuoi contribuire? Apri un issue o una pull request su GitHub.
--skip-analysis | Disabilita la fase di analisi per questa esecuzione |
--loc | Conta le righe di codice effettive |
--baseline-file PATH | File di baseline per la soppressione (JSON) |
--baseline-generate | Genera la baseline di soppressione dai risultati attuali |
--no-baseline | Disabilita la soppressione tramite baseline per questa esecuzione |
--review-config PATH | File di triage dei risultati (JSON); sopprime i falsi positivi già revisionati dai report |
--resume-scan | Riprende una scansione precedentemente interrotta dal file di stato |
--state-file PATH | Percorso personalizzato del file di stato / checkpoint della scansione |
--no-state | Disabilita il checkpointing dello stato della scansione per questa esecuzione |
--state | Forza l'abilitazione del checkpointing dello stato della scansione per questa esecuzione |