Инструмент статического анализа кода с учётом фреймворков для автоматизированного ревью исходного кода, включающий платформозависимые правила, анализ потоков данных (taint analysis), оценку трудозатрат и базовые линии подавления предупреждений.
Author:
## О Daksh SCRA
Daksh SCRA (Source Code Review Assist) создан для повышения эффективности процесса анализа исходного кода, обеспечивая хорошо структурированный и организованный подход для рецензентов кода.
Вместо того чтобы без разбора помечать всё как потенциальную проблему, Daksh SCRA способствует вдумчивому анализу, побуждая к исследованию и подтверждению потенциальных проблем. Такой подход снижает суету с пометкой каждого потенциального замечания как ошибки, сокращая путаницу и потерю времени на ложные срабатывания.
### Дебют
Daksh SCRA был впервые представлен во время обучающей сессии по анализу исходного кода на Black Hat USA 2022 (6–9 августа), где он был ненавязчиво показан конкретной аудитории. Его официальный публичный дебют состоялся на Black Hat USA 2023 в Лас-Вегасе.
## Возможности и функции
- **Выявление областей интереса в исходном коде:** Поощряет целенаправленное исследование и подтверждение, а не бездумную пометку всего как ошибки.
- **Выявление областей интереса в путях файлов (первое в мире):** Распознаёт шаблоны в путях файлов, чтобы определить релевантные разделы для анализа.
- **Разведка на уровне ПО для определения используемых технологий:** Определяет технологии проекта, позволяя рецензентам кода проводить точные сканирования с соответствующими правилами.
- **Автоматизированная научная оценка трудозатрат на анализ кода (первое в мире):** Предоставляет измеримый подход для оценки усилий, необходимых для анализа кода.
- **Сканирование с учётом фреймворков:** Автоматически применяет правила, специфичные для фреймворка, когда фреймворк проекта обнаружен.
- **Отчёты по анализу потоков данных (Taint Analysis):** HTML-отчёты о потоках данных для каждой платформы с темами режима хакера и профессионального режима.
- **RDL (язык описания правил):** Внешняя логика правил, на которую ссылаются через `rdl_ref` и которая выполняется конвейером `core/rdl_engine.py` — поддерживает гейты с учётом файлов, булевы выражения, наблюдения проекта и экспортируемые метаданные логики в отчётах.
- **Состояние сканирования / возобновление:** Контрольные точки для длительных сканирований и возобновление после прерывания.
- **Базовый уровень подавления:** Генерация и применение базового уровня известных ложных срабатываний для их подавления в будущих отчётах.
- **Веб-интерфейс:** Запуск сканирования через браузер с лентой консоли в реальном времени и браузером артефактов заданий.
> Активные улучшения продолжаются. В предстоящих выпусках запланировано множество новых функций и улучшений.
Не стесняйтесь вносить вклад в обновление или добавление новых правил и будущую разработку.
Если вы обнаружите какие-либо ошибки, сообщите о них на [[email protected]](mailto:[email protected]).
Подробная документация: [https://dakshlabs.com/#docs](https://dakshlabs.com/#docs)
---
## Начало работы
Есть два способа запустить Daksh SCRA — выберите тот, который подходит вашему рабочему процессу:
| | Лучше всего подходит для | Перейти к |
|---|---|---|
| 🌐 **Веб-интерфейс (Docker)** | Самый простой способ начать — одна команда, панель в браузере, живой прогресс сканирования и браузер отчётов/артефактов. Рекомендуется для большинства пользователей. | [Веб-интерфейс (Docker)](#web-ui-docker) |
| 💻 **CLI (Python)** | Скрипты, CI-конвейеры или запуск сканирований без Docker. | [Настройка CLI](#cli-setup) |
Оба пути используют один и тот же движок сканирования — веб-интерфейс является браузерным фронтендом поверх того же CLI, поэтому результаты идентичны в любом случае.
---
## Веб-интерфейс (Docker)
Самый быстрый способ запустить Daksh SCRA — через браузерный веб-интерфейс, запускаемый одной командой Docker Compose. Он предоставляет запуск сканирования, живую ленту консоли и просматриваемую историю прошлых отчётов, без необходимости локального окружения Python.
Настройка Docker запускает веб-интерфейс и CLI как независимые сервисы, собранные из одного образа, поэтому вы можете использовать любой из них (или оба) из одного контейнера.
### Запуск веб-интерфейса
Режим переднего плана (логи выводятся в ваш терминал):```bash
docker compose up --build
Откреплённый / фоновый режим:```bash docker compose up --build -d
Затем откройте [http://localhost:8080](http://localhost:8080).
Чтобы использовать другой порт:```bash
DAKSH_PORT=9090 docker compose up
Остановите стек с помощью:```bash docker compose down
### Вход в систему
Веб-интерфейс требует учетную запись. При первом запуске создается начальная учетная запись администратора из `DAKSH_ADMIN_USERNAME` / `DAKSH_ADMIN_PASSWORD` (задайте их в `.env`); если `DAKSH_ADMIN_PASSWORD` оставить незаданным, будет сгенерирован случайный пароль и однократно выведен в журнал запуска API — сохраните его, так как восстановить его впоследствии невозможно.
При первом входе вам потребуется задать собственный пароль (и, при желании, имя пользователя). Учетная запись администратора может создавать дополнительные учетные записи через конечную точку API `POST /api/v1/auth/users` (выделенного интерфейса для этого пока нет). Полный список настроек, связанных с аутентификацией (время жизни сессии, безопасность cookie, CORS), см. в `.env.example`.
### Что вы получаете
- Адаптивный конструктор команд для режимов scan, recon, estimate, recon+estimate, list и PDF-from-JSON
- Лента консоли в реальном времени и живой прогресс по этапам во время выполнения
- Снимки артефактов для каждого задания для выходных данных HTML / PDF / JSON
- Быстрая навигация в браузере по форме запуска, живой ленте, артефактам и недавним заданиям
- Встроенный обозреватель каталогов для выбора целевых путей (с учетом ОС: Windows, macOS, Linux / Docker)
Под капотом CLI остается источником истины — он выполняет все сканирование и генерирует все выходные данные HTML / PDF / JSON. Веб-интерфейс запускает одно активное задание за раз и сохраняет снимки выходных данных каждого завершенного задания в `runtime/webui/jobs/<job-id>/artifacts/`, чтобы прошлые отчеты оставались доступными.
### Запуск CLI в Docker
Для использования CLI вам также не нужна локальная среда Python — он доступен как отдельный сервис Compose, собранный из того же образа:```bash
docker compose run --rm cli -h
docker compose run --rm cli -r auto -t /scan-targets/path/to/source
reports/ и runtime/Ключевые точки монтирования:
| Точка монтирования | Путь внутри контейнера |
|---|---|
| Исходный код проекта | /app |
| Корень сканирования по умолчанию | /scan-targets |
| Псевдонимы дисков хоста | /host, /host/c, /host/d |
| Монтирования WSL | /mnt, /run/desktop/mnt/host |
Переменные окружения (настраиваются в .env):
| Переменная | Описание |
|---|---|
DAKSH_PORT | Порт Web UI (по умолчанию: 8080) |
DAKSH_SCAN_ROOT | Каталог назначения по умолчанию внутри контейнера |
DAKSH_HOST_SOURCE | Путь на хосте для монтирования как /scan-targets (по умолчанию: /tmp) |
DAKSH_HOST_MOUNT | Дополнительный корень монтирования хоста |
DAKSH_HOST_C | Путь к диску C: Windows (WSL) |
DAKSH_HOST_D | Путь к диску D: Windows (WSL) |
DAKSH_DESKTOP_MOUNT | Путь монтирования рабочего стола WSL |
DAKSH_BROWSE_ROOTS | Переопределение корней браузера каталогов (через запятую) |
DAKSH_ADMIN_USERNAME | Имя администратора по умолчанию (по умолчанию: admin) |
DAKSH_ADMIN_PASSWORD | Пароль администратора по умолчанию — настоятельно рекомендуется задать явно |
Скопируйте .env.example в .env и задайте пути и учётные данные для вашей машины перед запуском Docker.
Предпочитаете запускать Daksh SCRA напрямую через Python? Вот как настроить его локально.
requirements.txtИли скачайте последний zip-архив с [https://github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) и распакуйте его.
### 2. Настройка виртуального окружения
> 💡 Виртуальное окружение можно создать в любой директории — оно не обязательно должно находиться внутри папки DakshSCRA.
**Вариант A: Настройка в один шаг (рекомендуется)**```bash
python setup_env.py
Этот скрипт создаёт виртуальное окружение, устанавливает все зависимости и устанавливает браузер Chromium для Playwright (требуется для экспорта в PDF).
Вариант B: Ручная настройка
Windows:```bash python -m venv daksh-env .\daksh-env\Scripts\activate
macOS / Linux:```bash
python3 -m venv daksh-env
source daksh-env/bin/activate
Затем установите зависимости:```bash cd path/to/DakshSCRA pip install -r requirements.txt playwright install chromium
---
## Использование CLI
Используйте `python` внутри виртуального окружения или `python3` вне его.
### Параметры командной строки```
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]
| Опция | Описание |
|---|---|
-r RULES | Правила платформы (например, php, java, php,java) или auto для автоматического определения |
-f FILE_TYPES | Переопределить типы файлов по умолчанию для сканирования |
-v | Уровень подробности (-v, -vv, -vvv) |
-t TARGET_DIR | Каталог исходного кода цели |
-l {R,RF} | Список правил платформы + фреймворков [R] или с типами файлов [RF] |
--recon | Запустить разведку (определение платформы / фреймворка / языка) |
--rs, --recon-strict | Строгая разведка: только высоконадёжные определения (используйте с --recon) |
--estimate | Оценить трудозатраты на проверку кода на основе размера кодовой базы |
-rpt, --report FORMATS | Форматы отчётов: html, pdf или html,pdf (по умолчанию: html) |
--pdf-from-json | Создать PDF-отчёт(ы) из существующих JSON-выводов без повторного сканирования |
--json-input-dir PATH | Каталог JSON-отчётов (по умолчанию: ./reports/data) |
--pdf-output PATH | Путь для единого PDF-вывода (по умолчанию: ./reports/scan/pdf/report.pdf) |
--pdf-multi-dir PATH | Каталог для многофайловых PDF-выводов (по умолчанию: ./reports/scan/pdf/multi-file) |
--pdf-single-only | Создавать только объединённый однофайловый PDF; пропустить многофайловый набор по платформам |
--skip-analysis |
-f(типы файлов) необязателен. Если не указан, DakshSCRA использует типы файлов по умолчанию для выбранной(ых) платформы(форм).```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
### Поддерживаемые правила платформ и фреймворки```bash
python dakshscra.py -l R # List platform rules and framework mappings
python dakshscra.py -l RF # List platform rules, framework mappings, and filetypes
Текущие поддерживаемые платформы и сопоставления фреймворков:
| Платформа | Фреймворки |
|---|---|
| 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 | - |
Чтобы получить последние поддерживаемые платформы и фреймворки, всегда запускайте:```bash python dakshscra.py -l R
---
## Справочник по конфигурации
### `config/tool.yaml`
Значения по умолчанию для среды выполнения Daksh SCRA управляются через `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
Параметры конфигурации анализатора:
analysis.run_by_default
true: анализатор запускается автоматически во время сканированияfalse: анализатор отключен, если не включен повторно в конфигурации или через CLIanalysis.include_frameworks
true: включать записи анализатора уровня фреймворков там, где существует определение фреймворкаfalse: только вывод анализатора уровня платформыanalysis.report_theme
hacker_mode: темная высококонтрастная современная тема анализатора (по умолчанию)professional_mode: светлая современная тема анализатораboth: генерировать оба варианта темы рядомRDL (Rule Description Language) — это внешний слой логики правил DakshSCRA. В текущей архитектуре:
name, regex, описания и необязательный scan_config.core/rdl_engine.py.rules/scanning/logic/... и ссылаются из XML с помощью <rdl_ref>.rdl_ref разрешаются относительно rules/scanning/, например:
logic/php/core/some_rule.rdl -> rules/scanning/logic/php/core/some_rule.rdllogic_engine, logic_source,
logic_reason, logic_trace, logic_consulted_files и logic_outcome.Более старая встроенная форма <rdl> больше не является активной архитектурой и не должна использоваться для новых правил.
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
#### Последовательность сканирования
Для исходного правила DakshSCRA оценивает логику в следующем порядке:
1. Recon выбирает соответствующие платформы и фреймворки.
2. XML-правило загружается из `rules/scanning/platform/...`.
3. `regex` находит строки-кандидаты или совпадения по всему файлу, если они присутствуют.
4. `exclude` удаляет очевидный шум для этого правила, если он присутствует.
5. Внешний файл `.rdl` из `rdl_ref` оценивается относительно текущего текста файла, текущего пути к файлу и корня проекта.
6. Если RDL-скрипт проходит, DakshSCRA сохраняет находку и объединяет экспортированные метаданные логики в вывод отчёта.
7. Если RDL-скрипт не проходит, совпадение подавляется с указанием причины отказа RDL и метаданных трассировки решения.
Для правил путей к файлам в `filepaths.xml` применяется та же модель `rdl_ref`, но объектом сопоставления является
нормализованный относительный путь вместо текста исходного кода. В этом режиме RDL получает строку относительного пути
как текущий текст файла и контекст пути.
#### Текущая структура правил```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.
#### Текущая раскладка```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 и WHEN CURRENT_FILE_MATCHES оцениваются относительно текста текущего файла.WHEN FILE_NAME_IS и WHEN FILE_PATH_MATCHES оцениваются относительно контекста пути текущего файла.WHEN EXPR поддерживает булеву логику над предикатами PRESENT:, MISSING: и EXISTS:.OBSERVE PROJECT_HAS_GLOB ... AS ... не блокирует срабатывание правила; он записывает связанные файлы проекта в метаданные трассировки.REPORT AS, REASON, FAIL_REASON и TRACE управляют экспортируемыми метаданными отчёта./pattern/flags, с поддержкой i, m и s.| Команда | Поведение | Типичное использование |
|---|---|---|
WHEN PRESENT <regex> | Требовать наличие шаблона в тексте текущего файла | Требовать сопутствующий рискованный API или чувствительное поле |
WHEN MISSING <regex> | Требовать отсутствие шаблона в тексте текущего файла | Подавлять, когда смягчение уже существует |
WHEN EXPR <expr> | Вычислять булевы выражения с помощью PRESENT: / MISSING: / EXISTS: с &&, ` | |
WHEN CURRENT_FILE_MATCHES <regex> | Сопоставлять с полным текстом текущего файла | Повторно проверять сложные условия для всего файла |
WHEN FILE_NAME_IS <name> | Требовать точное совпадение имени текущего файла | Ограничивать правила для plist / manifest / config |
WHEN FILE_PATH_MATCHES <glob> | Требовать соответствие текущего относительного пути glob-шаблону | Сужать правила для путей фреймворков/конфигураций |
UNLESS CURRENT_FILE_MATCHES <regex> | Срабатывать как ошибка, когда весь файл соответствует шаблону исключения | Блокировать заведомо безопасные структурные случаи |
OBSERVE PROJECT_HAS_GLOB <glob> AS <label> | Записывать связанные файлы проекта в метаданные трассировки | Выявлять вспомогательные конфигурации или сопутствующие файлы |
REPORT AS <outcome> | Задавать исход правила, обычно area_of_interest | Явные исходы для будущей совместимости |
REASON <text> | Причина, показываемая при прохождении правила | Объяснять, почему срабатывание осталось видимым |
FAIL_REASON <text> | Причина, показываемая при подавлении совпадения правилом | Объяснять, почему срабатывание было отфильтровано |
TRACE <text> | Добавлять строки отладки/трассировки решений | Поддержка миграции/отладки |
Булевы выражения в WHEN EXPR поддерживают:
PRESENT:<regex>MISSING:<regex>EXISTS:<regex>&&, ||, ! и круглые скобки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>
Внешний 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.
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>
Внешний 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.
XML-правило:```xml Admin Section File Path <rdl_ref>logic/filepaths/core/admin_section.rdl</rdl_ref>
Внешний 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 достаточно широким, чтобы находить кандидатов, а затем используйте RDL для фильтрации контекста.rdl_ref для всей логики правил и храните файл .rdl рядом с соответствующим деревом логики платформы/фреймворка.<rdl>.WHEN PRESENT / WHEN MISSING для простых проверок и WHEN EXPR только когда логика действительно булева.REASON, а пояснения для подавления — в FAIL_REASON.PRESENT и MISSING проверками всего файла. Любая мера смягчения в любом месте файла может подавить все совпадения из этого файла.OBSERVE PROJECT_HAS_GLOB для обогащения результатов контекстом проекта, а не как проверку «пройдено/не пройдено».logic/... стабильными и ограниченными платформой, чтобы XML-правила оставались тонкими, а слой логики — переиспользуемым.Все результаты записываются в каталог 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
Файлы времени выполнения (состояние сканирования, журналы, инвентаризация) записываются в `runtime/`.
При запуске через веб-интерфейс выходные данные каждого задания дополнительно сохраняются в виде снимков в `runtime/webui/jobs/<job-id>/artifacts/` (см. [Веб-интерфейс (Docker)](#web-ui-docker)).
---
## Автор
| | |
|---|---|
| Веб-сайт | [coffeeandsecurity.com](https://www.coffeeandsecurity.com) |
| Электронная почта | [email protected] |
| Twitter / X | [@coffeensecurity](https://x.com/coffeensecurity) |
| Исходный код | [github.com/coffeeandsecurity/DakshSCRA](https://github.com/coffeeandsecurity/DakshSCRA) |
| Лицензия | GNU General Public License v3.0 (GPL-3.0) |
Если DakshSCRA помог вашей команде сэкономить значительное время, усилия или средства, снизил зависимость от дорогих коммерческих инструментов, улучшил полноту проверок или сделал ревью кода более структурированным и эффективным, не стесняйтесь связаться со мной и поделиться своим опытом. Я всегда открыт для вдумчивых отзывов и интересных бесед.
Нашли ошибку или хотите внести вклад? Откройте issue или pull request на GitHub.
| Отключить этап анализа для этого запуска |
--loc | Подсчитать эффективное количество строк кода |
--baseline-file PATH | Файл базовой линии подавления (JSON) |
--baseline-generate | Создать базовую линию подавления из текущих находок |
--no-baseline | Отключить подавление по базовой линии для этого запуска |
--review-config PATH | Файл триажа находок (JSON); подавлять ранее проверенные ложные срабатывания из отчётов |
--resume-scan | Возобновить ранее прерванное сканирование из файла состояния |
--state-file PATH | Пользовательский путь к файлу состояния / контрольной точки сканирования |
--no-state | Отключить контрольные точки состояния сканирования для этого запуска |
--state | Принудительно включить контрольные точки состояния сканирования для этого запуска |