Ferramenta de análise estática de código consciente de frameworks para revisão automatizada de código-fonte com regras específicas de plataforma, análise de fluxo de dados, estimativa de esforço e linhas de base de supressão.
Author:
## Sobre o Daksh SCRA
O Daksh SCRA (Source Code Review Assist) foi criado para aumentar a eficiência do processo de revisão de código-fonte, oferecendo uma abordagem bem estruturada e organizada para revisores de código.
Em vez de sinalizar indiscriminadamente tudo como um problema potencial, o Daksh SCRA promove uma análise criteriosa, incentivando a investigação e a confirmação de problemas potenciais. Essa abordagem reduz a correria de marcar cada preocupação potencial como um bug, diminuindo a confusão e o tempo desperdiçado com falsos positivos.
### Estreia
O Daksh SCRA foi inicialmente apresentado durante uma sessão de treinamento de revisão de código-fonte na Black Hat USA 2022 (6 a 9 de agosto), onde foi exibido de forma discreta para um público específico. Sua estreia pública oficial ocorreu na Black Hat USA 2023, em Las Vegas.
## Recursos e Funcionalidades
- **Identifica Áreas de Interesse no Código-Fonte:** Incentiva uma investigação e confirmação focadas, em vez de rotular indiscriminadamente tudo como um bug.
- **Identifica Áreas de Interesse em Caminhos de Arquivo (Primeiro do Mundo):** Reconhece padrões em caminhos de arquivo para apontar seções relevantes para revisão.
- **Reconhecimento em Nível de Software para Identificar Tecnologias Utilizadas:** Identifica as tecnologias do projeto, permitindo que revisores de código realizem varreduras precisas com regras adequadas.
- **Estimativa Científica Automatizada de Esforço para Revisão de Código (Primeiro do Mundo):** Oferece uma abordagem mensurável para estimar o esforço necessário para uma revisão de código.
- **Varredura Ciente de Frameworks:** Aplica automaticamente regras específicas de frameworks quando o framework do projeto é detectado.
- **Relatórios de Análise de Taint:** Relatórios HTML de fluxo de taint por plataforma, com temas de modo hacker e modo profissional.
- **RDL (Rule Description Language):** Lógica de regras externa referenciada com `rdl_ref` e executada pelo pipeline `core/rdl_engine.py` — suporta gates cientes de arquivos, expressões booleanas, observações do projeto e metadados de lógica exportados nos relatórios.
- **Estado da Varredura / Retomada:** Marca pontos de verificação em varreduras longas e retoma após interrupções.
- **Linha de Base de Supressão:** Gera e aplica uma linha de base de falsos positivos conhecidos para suprimi-los de relatórios futuros.
- **Interface Web:** Lançador de varreduras baseado em navegador, com feed de console em tempo real e navegador de artefatos de trabalhos.
> Aprimoramentos ativos estão em andamento. Vários novos recursos e melhorias estão planejados para os próximos lançamentos.
Sinta-se à vontade para contribuir com a atualização ou adição de novas regras e com o desenvolvimento futuro.
Se você encontrar algum bug, reporte-o para [[email protected]](mailto:[email protected]).
Documentação detalhada: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)
---
## Primeiros Passos
Há duas maneiras de executar o Daksh SCRA — escolha a que melhor se adequa ao seu fluxo de trabalho:
| | Melhor para | Ir para |
|---|---|---|
| 🌐 **Interface Web (Docker)** | A maneira mais fácil de começar — um comando, um painel no navegador, progresso de varredura ao vivo e um navegador de relatórios/artefatos. Recomendado para a maioria dos usuários. | [Interface Web (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | Scripts, pipelines de CI ou execução de varreduras sem Docker. | [Configuração da CLI](#cli-setup) |
Ambos os caminhos executam exatamente o mesmo mecanismo de varredura — a Interface Web é um front-end de navegador sobre a mesma CLI, portanto, os resultados são idênticos de qualquer forma.
---
## Interface Web (Docker)
A maneira mais rápida de executar o Daksh SCRA é por meio de sua Interface Web baseada em navegador, iniciada com um único comando do Docker Compose. Ela oferece um lançador de varreduras, um feed de console ao vivo e um histórico navegável de relatórios anteriores, sem precisar de um ambiente Python local.
A configuração do Docker executa a Interface Web e a CLI como serviços independentes criados a partir da mesma imagem, para que você possa usar um (ou ambos) a partir do mesmo contêiner.
### Iniciar a Interface Web
Modo em primeiro plano (os logs são transmitidos para o seu terminal):```bash
docker compose up --build
Modo destacado / em segundo plano:```bash docker compose up --build -d
Em seguida, abra [http://localhost:8080](http://localhost:8080).
Para usar uma porta diferente:```bash
DAKSH_PORT=9090 docker compose up
Pare a pilha com:```bash docker compose down
### Iniciar sessão
A interface Web requer uma conta. No primeiro arranque, é criada uma conta de administrador inicial a partir de `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` (defina estes valores em `.env`); se `DAKSH_ADMIN_PASSWORD` ficar por definir, é gerada uma palavra-passe aleatória e impressa uma única vez no registo de arranque da API - guarde-a, pois não pode ser recuperada posteriormente.
Será obrigado a definir a sua própria palavra-passe (e, opcionalmente, nome de utilizador) na primeira vez que iniciar sessão. Uma conta de administrador pode criar contas adicionais através do endpoint da API `POST /api/v1/auth/users` (ainda sem interface dedicada para isto). Consulte `.env.example` para a lista completa de definições relacionadas com autenticação (duração da sessão, segurança de cookies, CORS).
### O que obtém
- Construtor de comandos responsivo para os modos scan, recon, estimate, recon+estimate, list e PDF-from-JSON
- Feed de consola em tempo real e progresso por etapa ao vivo durante a execução
- Instantâneos de artefactos por tarefa para saídas HTML / PDF / JSON
- Navegação rápida no navegador entre o formulário de execução, feed ao vivo, artefactos e tarefas recentes
- Navegador de diretórios integrado para selecionar caminhos de destino (ciente do SO: Windows, macOS, Linux / Docker)
Nos bastidores, a CLI continua a ser a fonte de verdade - é ela que faz toda a análise e gera todas as saídas HTML / PDF / JSON. A interface Web executa uma tarefa ativa de cada vez e tira instantâneos das saídas de cada tarefa concluída para `runtime/webui/jobs/<job-id>/artifacts/`, para que relatórios anteriores permaneçam acessíveis.
### Executar a CLI no Docker
Também não precisa de um ambiente Python local para usar a CLI - está disponível como um serviço Compose próprio, construído a partir da mesma imagem:```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source
reports/ e runtime/Pontos de montagem principais:
| Montagem | Caminho dentro do contêiner |
|---|---|
| Origem do projeto | /app |
| Raiz de varredura padrão | /scan-targets |
| Aliases de unidades do host | /host, /host/c, /host/d |
| Montagens WSL | /mnt, /run/desktop/mnt/host |
Variáveis de ambiente (configure em .env):
| Variável | Descrição |
|---|---|
DAKSH_PORT | Porta da Web UI (padrão: 8080) |
DAKSH_SCAN_ROOT | Diretório de destino padrão dentro do contêiner |
DAKSH_HOST_SOURCE | Caminho do host a ser montado como /scan-targets (padrão: /tmp) |
DAKSH_HOST_MOUNT | Raiz de montagem adicional do host |
DAKSH_HOST_C | Caminho da unidade C: do Windows (WSL) |
DAKSH_HOST_D | Caminho da unidade D: do Windows (WSL) |
DAKSH_DESKTOP_MOUNT | Caminho de montagem da área de trabalho do WSL |
DAKSH_BROWSE_ROOTS | Substituir raízes do navegador de diretórios (separadas por vírgula) |
DAKSH_ADMIN_USERNAME | Nome de usuário admin inicial (padrão: admin) |
DAKSH_ADMIN_PASSWORD | Senha admin inicial — altamente recomendado defini-la explicitamente |
Copie .env.example para .env e defina os caminhos e credenciais para sua máquina antes de executar o Docker.
Prefere executar o Daksh SCRA diretamente com Python? Veja como configurá-lo localmente.
requirements.txtOu descarregue o zip mais recente de [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) e descompacte-o.
### 2. Configurar um Ambiente Virtual
> 💡 O ambiente virtual pode ser criado em qualquer diretório - não precisa de estar dentro da pasta DakshSCRA.
**Opção A: Configuração num único passo (recomendada)**```bash
python setup_env.py
Este script cria o ambiente virtual, instala todas as dependências e instala o navegador Chromium do Playwright (necessário para exportação de PDF).
Opção B: Configuração manual
Windows:```bash python -m venv daksh-env .\daksh-env\Scripts\activate
macOS / Linux:```bash
python3 -m venv daksh-env
source daksh-env/bin/activate
Em seguida, instale as dependências:```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium
---
## Utilização da CLI
Use `python` dentro de um ambiente virtual, ou `python3` fora de um.
### Opções da Linha de Comandos```
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]
| Opção | Descrição |
|---|---|
-r RULES | Regras da plataforma (ex.: php, java, php,java) ou auto para detecção automática |
-f FILE_TYPES | Substituir os tipos de arquivo padrão para a varredura |
-v | Nível de verbosidade (-v, -vv, -vvv) |
-t TARGET_DIR | Diretório do código-fonte alvo |
-l {R,RF} | Listar regras da plataforma + frameworks [R] ou incluir tipos de arquivo [RF] |
--recon | Executar reconhecimento (detecção de plataforma / framework / linguagem) |
--rs, --recon-strict | Reconhecimento estrito: apenas detecções de alta confiança (usar com --recon) |
--estimate | Estimar o esforço de revisão de código com base no tamanho do código-fonte |
-rpt, --report FORMATS | Formatos de relatório: html, pdf ou html,pdf (padrão: html) |
--pdf-from-json | Gerar relatório(s) PDF a partir de saídas JSON existentes sem nova varredura |
--json-input-dir PATH | Diretório de relatórios JSON (padrão: ./reports/data) |
--pdf-output PATH | Caminho único de saída do PDF (padrão: ./reports/scan/pdf/report.pdf) |
--pdf-multi-dir PATH | Diretório de saída do PDF multi-arquivo (padrão: ./reports/scan/pdf/multi-file) |
--pdf-single-only | Gerar apenas o PDF único combinado; pular o conjunto multi-arquivo por plataforma |
--skip-analysis |
-f(tipos de arquivo) é opcional. Se não for especificado, o DakshSCRA usa os tipos de arquivo padrão para a(s) plataforma(s) selecionada(s).```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
### Regras e Frameworks de Plataforma Suportados```bash
python dakshscra.py -l R # List platform rules and framework mappings
python dakshscra.py -l RF # List platform rules, framework mappings, and filetypes
Plataformas e frameworks atualmente suportados:
| Plataforma | 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 | - |
Para obter as plataformas e frameworks mais recentes suportados, execute sempre:```bash python dakshscra.py -l R
---
## Referência de Configuração
### `config/tool.yaml`
Os padrões de tempo de execução do Daksh SCRA são controlados por meio de `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
Opções de configuração do analisador:
analysis.run_by_default
true: o analisador é executado automaticamente durante a verificaçãofalse: o analisador fica desabilitado, a menos que seja reativado na configuração ou via CLIanalysis.include_frameworks
true: inclui entradas do analisador em nível de framework onde a detecção de framework existefalse: apenas a saída do analisador em nível de plataformaanalysis.report_theme
hacker_mode: tema de analisador moderno escuro de alto contraste (padrão)professional_mode: tema de analisador moderno claroboth: gera ambas as variantes de tema lado a ladoRDL (Rule Description Language) é a camada de lógica de regras externalizada do DakshSCRA. Na arquitetura atual:
name, regex, descrições e scan_config opcional.core/rdl_engine.py.rules/scanning/logic/... e são referenciados a partir do XML usando <rdl_ref>.rdl_ref são resolvidos em relação a rules/scanning/, por exemplo:
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.A forma inline <rdl> mais antiga não é mais a arquitetura ativa e não deve ser usada para novas regras.
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
#### Sequência de digitalização
Para uma regra de origem, o DakshSCRA avalia a lógica nesta ordem:
1. O Recon seleciona plataformas e frameworks correspondentes.
2. A regra XML é carregada de `rules/scanning/platform/...`.
3. `regex` encontra linhas candidatas ou correspondências de arquivo inteiro quando presente.
4. `exclude` remove ruídos óbvios para essa regra, se presente.
5. O arquivo `.rdl` externo de `rdl_ref` é avaliado em relação ao texto do arquivo atual, ao caminho do arquivo atual e à raiz do projeto.
6. Se o script RDL passar, o DakshSCRA mantém a descoberta e mescla os metadados de lógica exportados na saída do relatório.
7. Se o script RDL falhar, a correspondência é suprimida com o motivo da falha do RDL e os metadados de rastreamento de decisão.
Para regras de caminho de arquivo em `filepaths.xml`, o mesmo modelo `rdl_ref` se aplica, mas o sujeito da correspondência é
o caminho relativo normalizado em vez do texto do código-fonte. Nesse modo, o RDL recebe a string do caminho relativo
como o texto do arquivo atual e o contexto do caminho.
#### Estrutura atual da regra```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.
#### Layout atual```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 avaliam o texto do arquivo atual.WHEN FILE_NAME_IS e WHEN FILE_PATH_MATCHES avaliam o contexto do caminho do arquivo atual.WHEN EXPR suporta lógica booleana sobre os predicados PRESENT:, MISSING: e EXISTS:.OBSERVE PROJECT_HAS_GLOB ... AS ... não bloqueia o achado; ele registra arquivos de projeto relacionados nos metadados de rastreamento.REPORT AS, REASON, FAIL_REASON e TRACE controlam os metadados de relatório exportados./padrão/flags, com suporte a i, m e s.| Comando | Comportamento | Uso típico |
|---|---|---|
WHEN PRESENT <regex> | Exige que um padrão exista no texto do arquivo atual | Exigir uma API arriscada ou campo sensível co-ocorrente |
WHEN MISSING <regex> | Exige que um padrão esteja ausente do texto do arquivo atual | Suprimir quando a mitigação já existe |
WHEN EXPR <expr> | Avalia expressões booleanas usando PRESENT: / MISSING: / EXISTS: com &&, ` | |
WHEN CURRENT_FILE_MATCHES <regex> | Corresponde ao texto completo do arquivo atual | Reavaliar condições complexas de arquivo inteiro |
WHEN FILE_NAME_IS <nome> | Exige que o nome do arquivo atual corresponda exatamente | Limitar regras de plist / manifest / config |
WHEN FILE_PATH_MATCHES <glob> | Exige que o caminho relativo atual corresponda a um glob | Restringir regras de caminho de framework/config |
UNLESS CURRENT_FILE_MATCHES <regex> | Falha quando o arquivo inteiro corresponde a um padrão de exclusão | Bloquear casos estruturais conhecidos como seguros |
OBSERVE PROJECT_HAS_GLOB <glob> AS <rótulo> | Registra arquivos de projeto relacionados nos metadados de rastreamento | Expor arquivos de configuração ou complementares de suporte |
REPORT AS <resultado> | Define o resultado da regra, geralmente area_of_interest | Resultados explícitos à prova de futuro |
REASON <texto> | Motivo exibido quando a regra passa | Explicar por que o achado permaneceu visível |
FAIL_REASON <texto> | Motivo exibido quando a regra suprime uma correspondência | Explicar por que o hit foi filtrado |
TRACE <texto> | Adicionar linhas de rastreamento de depuração/decisão | Suporte a migração/depuração |
Expressões booleanas em WHEN EXPR suportam:
PRESENT:<regex>MISSING:<regex>EXISTS:<regex>&&, ||, ! e parêntesesRegra 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.
Regra 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.
Regra 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 amplo o suficiente para capturar candidatos e, em seguida, use RDL para filtrar o contexto.rdl_ref para toda a lógica de regras e mantenha o arquivo .rdl ao lado da árvore de lógica apropriada da plataforma/framework.<rdl>.WHEN PRESENT / WHEN MISSING para portas simples e WHEN EXPR apenas quando a lógica for genuinamente booleana.REASON e as explicações de supressão em FAIL_REASON.PRESENT e MISSING como verificações de arquivo inteiro. Uma mitigação em qualquer lugar do arquivo pode suprimir todas as correspondências desse arquivo.OBSERVE PROJECT_HAS_GLOB para enriquecer descobertas com contexto do projeto, não como uma porta de aprovação/reprovação.logic/... estáveis e com escopo de plataforma para que as regras XML permaneçam enxutas e a camada de lógica continue reutilizável.Todas as saídas são gravadas no diretório 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
Os ficheiros de runtime (estado da análise, registos, inventário) são gravados em `runtime/`.
Ao executar através da interface Web, os resultados de cada tarefa são adicionalmente capturados em `runtime/webui/jobs/<job-id>/artifacts/` (consulte [Interface Web (Docker)](#web-ui-docker)).
---
## Autor
| | |
|---|---|
| Website | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| Email | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| Fonte | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| Licença | GNU General Public License v3.0 (GPL-3.0) |
Se o DakshSCRA ajudou a sua equipa a poupar tempo, esforço ou custos significativos, reduziu a dependência de ferramentas comerciais dispendiosas, melhorou a cobertura das revisões ou tornou a revisão de código mais estruturada e eficaz, não hesite em contactar e partilhar a sua experiência. Estou sempre aberto a feedback ponderado e conversas interessantes.
Encontrou um bug ou quer contribuir? Abra uma issue ou pull request no GitHub.
| Desabilitar o estágio de análise nesta execução |
--loc | Contar linhas efetivas de código |
--baseline-file PATH | Arquivo de linha de base de supressão (JSON) |
--baseline-generate | Gerar linha de base de supressão a partir dos achados atuais |
--no-baseline | Desabilitar a supressão por linha de base nesta execução |
--review-config PATH | Arquivo de triagem de achados (JSON); suprimir falsos positivos já revisados dos relatórios |
--resume-scan | Retomar uma varredura interrompida anteriormente a partir do arquivo de estado |
--state-file PATH | Caminho personalizado do arquivo de estado / checkpoint da varredura |
--no-state | Desabilitar o checkpointing de estado da varredura nesta execução |
--state | Forçar a ativação do checkpointing de estado da varredura nesta execução |