Кончик
Datadog поддерживает проекты с открытым исходным кодом. Узнайте больше о Datadog для проектов с открытым исходным кодом.
Datadog-Static-Analyzer является статическим механизмом анализатора для статического анализа DataDog.
datadog-static-analyzer --directory /path/to/directory --output report.csv --format csvdocker run -it --rm -v /path/to/directory:/data ghcr.io/datadog/datadog-static-analyzer:latest --directory /data --output /data/report.csv --format csvДля получения дополнительной информации о контейнере Docker см. Документацию здесь.
Если вы столкнетесь с проблемой, сначала прочитайте часто задаваемые вопросы, это может содержать решение вашей проблемы.
Вы можете выбрать правила, которые можно использовать для сканирования вашего репозитория, создав static-analysis.datadog.yml файл.
Во-первых, убедитесь, что вы следите за документацией и создаете static-analysis.datadog.yml .
Все правила можно найти в документации Datadog. Ваш static-analysis.datadog.yml может содержать только наборы правил, доступные в документации Datadog
Пример файла YAML
schema-version : v1
rulesets :
- python-code-style
- python-best-practices
- python-inclusive
ignore :
- testsВы можете использовать его в вашем конвейере CI/CD, используя нашу интеграцию:
Если вы используете его в своем собственном конвейере CI/CD, вы можете напрямую интегрировать инструмент: см. Документацию Datadog для получения дополнительной информации.
Расширение Datadog IntelliJ позволяет вам использовать статический анализатор непосредственно из всех продуктов JetBrains. Создайте файл static-analysis.datadog.yml , загрузите расширение, и вы можете начать его использовать. Ниже вы можете увидеть пример предложения, чтобы добавить тайм -аут при получении данных с Python с модулем запросов.

Расширение Datadog VS кода позволяет вам использовать статический анализатор непосредственно из VS -кода. Создайте файл static-analysis.datadog.yml , загрузите расширение, и вы можете начать его использовать.

Когда вы на борту на продукте Datadog, вы можете выбрать нужный набор правил. Если вы не используете Datadog напрямую, в продукте Datadog Static Analys есть список общих использованных правил.
Полный список доступен в нашей документации.
Список наборов правил доступен в наборах правил.md.
Загрузите последний релиз для вашей системы и архитектуры со страницы релиза.
Чтобы получить статический анализатор через Shell:
curl -L -O https://www.github.com/DataDog/datadog-static-analyzer/releases/latest/download/datadog-static-analyzer- < target > .zipПример, чтобы получить двоичный файл x86_64 для Linux:
curl -L -O https://www.github.com/DataDog/datadog-static-analyzer/releases/latest/download/datadog-static-analyzer-x86_64-unknown-linux-gnu.zipdatadog-static-analyzer -i < directory > -o < output-file > Для работы инструмента вы должны иметь файл <directory>/static-analysis.datadog.yml , который определяет конфигурацию анализатора. Этот файл будет указывать правила, которые вы будете использовать для своего проекта.
Вы можете получить больше информации о конфигурации в документации Datadog.
Двоичный файл не может быть выполнен как есть. Вам нужно пометить двоичный файл как безопасное выполнение, используя следующую команду.
xattr -dr com.apple.quarantine datadog-static-analyzer-f или --format : формат выходного файла. -f sarif создает файл соответствия SARIF-r или --rules : предоставляет файл, который содержит все правила (правила могут быть помещены в файл, используя datadog-export-rulesets )-c или --cpus : количество ядер, используемые для анализа (подсчитано около 1 ГБ использования оперативной памяти на ядро)-o или --output : выходной файл-p или --ignore-path : path (pattern/glob), чтобы игнорировать; принимает несколько-x или --performance-statistics : показать статистику эффективности для анализатора-g или --add-git-info : добавить информацию, связанную с GIT (SHA и т. Д.) В отчет SARIF при использовании -f SARIF--fail-on-any-violation : сделайте программу выходить из ненулевого кода выхода, если есть хотя бы одно нарушение заданной тяжести.-w или --diff-aware : включить сканирование с различием (см. Выделенные примечания ниже) Установите следующие переменные для настройки анализа:
DD_SITE : параметр сайта DataDog, используемый для извлечения правил (список просмотра) (по умолчанию: datadoghq.com ) Статический анализатор может быть настроен с использованием static-analysis.datadog.yml . Это файл YAML со следующими записями:
rulesets : (требуется) Список со всеми наборами правил, которые можно использовать для этого репозитория (см. Документацию Datadog для полного списка). Элементы этого списка должны быть строками или картами, содержащими конфигурацию для набора правил (описано ниже.)ignore : (необязательно) Список префиксов пути и шаблонов шаровых, чтобы игнорировать. Файл, который соответствует любой из ее записей, не будет проанализирован.only : (необязательно) Список префиксов пути и шаблонов глобуса для анализа. Если указано only файлы, которые соответствуют одной из ее записей, будут проанализированы.ignore-gitignore : (необязательно) По умолчанию любые записи, найденные в файле .gitignore , добавляются в список ignore . Если опция ignore-gitignore верна, файл .gitignore не читается.max-file-size-kb : (необязательно) файлы больше, чем этот размер, в килобитах будут игнорироваться. Значение по умолчанию составляет 200 КБ.schema-version : (необязательно) версия схемы, которой следует этот файл конфигурации. Если указано, это должно быть v1 . Записи списка rulesets должны быть строками, которые содержат имя набора правил для включения, или карта, которая содержит конфигурацию для набора правил. Эта карта содержит следующие поля:
ignore : (необязательно) Список префиксов пути и шаблонов глобуса, чтобы игнорировать этот набор правил . Правила на этом наборе правил не будут оцениваться на предмет каких -либо файлов, которые соответствуют любым из записей в списке ignore .only : (необязательно) Список префиксов пути и шаблонов глобуса для анализа для этого набора правил . Если указано only , правила в этом наборе правил будут оцениваться только для файлов, которые соответствуют одной из записей.rules : (необязательно) Карта конфигураций правил. Правила, не указанные на этой карте, все еще будут оценены, но с их конфигурацией по умолчанию. Карта в поле rules использует имя правила в качестве ключа, а значения представляют собой карты со следующими полями:
ignore (необязательно) список префиксов пути и шаблонов шарика, чтобы игнорировать это правило . Это правило не будет оцениваться для каких -либо файлов, которые соответствуют любым из записей в списке ignore .only : (необязательно) Список префиксов пути и шаблонов глобуса для анализа этого правила . Если указано only , это правило будет оцениваться только для файлов, которые соответствуют одной из записей.severity : (необязательно) Если предоставлено, переопределите тяжесть нарушений, вызванных этим правилом. Допустимыми строящимися являются ERROR , WARNING , NOTICE и NONE .category : (необязательно) Если предоставлено, переопределите категорию этого правила. Допустимые категории - это BEST_PRACTICES , CODE_STYLE , ERROR_PRONE , PERFORMANCE и SECURITY .arguments : (необязательно) Карта значений для аргументов правила. Карта в поле arguments использует имя аргумента в качестве ключа, а значения - это либо строки, либо карты:
Аннотированный пример файла конфигурации:
# This is a "v1" configuration file.
schema-version : v1
# The list of rulesets to enable for this repository.
rulesets :
# Enable the `python-inclusive` ruleset with the default configuration.
- python-inclusive
# Enable the `python-best-practices` ruleset with a custom configuration.
- python-best-practices :
# Do not apply any of the rules in this ruleset to files that match `src/**/*.generated.py`.
ignore :
- src/**/*.generated.py
rules :
# Special configuration for the `python-best-practices/no-generic-exception` rule.
no-generic-exception :
# Treat violations of this rule as errors (normally "notice").
severity : ERROR
# Classify violations of this rule under the "code style" category.
category : CODE_STYLE
# Only apply this rule to files under the `src/new-code` subtree.
only :
- src/new-code
# Enable the `python-code-style ruleset` with a custom configuration.
- python-code-style :
rules :
max-function-lines :
# Set arguments for the `python-code-style/max-function-lines` rule.
arguments :
# Set the `max-lines` argument to 150 in the whole repository.
max-lines : 150
max-class-lines :
# Set arguments for the `python-code-style/max-class-lines` rule.
arguments :
# Set different values for the `max-lines` argument in different subtrees.
max-lines :
# Set the `max-lines` argument to 100 by default
/ : 100
# Set the `max-lines` argument to 75 under the `src/new-code` subtree.
src/new-code : 75
# Analyze only files in the `src` and `imported` subtrees.
only :
- src
- imported
# Do not analyze any files in the `src/tests` subtree.
ignore :
- src/tests
# Do not add the content of the `.gitignore` file to the `ignore` list.
ignore-gitignore : true
# Do not analyze files larger than 100 kB.
max-file-size-kb : 100Другой пример, который показывает каждую используемой опции:
schema-version : v1
rulesets :
- python-best-practices
- python-code-style :
ignore :
- src/generated
- src/**/*_test.py
only :
- src
- imported/**/new/**
rules :
max-function-lines :
severity : WARNING
category : PERFORMANCE
ignore :
- src/new-code
- src/new/*.gen.py
only :
- src/new
- src/**/new-code/**
arguments :
max-lines : 150
min-lines :
/ : 10
src/new-code : 0
ignore :
- dist
- lib/**/*.py
only :
- src
- imported/**/*.py
ignore-gitignore : true
max-file-size-kb : 256 Существует определение схемы JSON для static-analysis.datadog.yml в подкаталоге schema .
Вы можете использовать его для проверки синтаксиса вашего файла конфигурации:
npm install -g pajv )pajv validate -s schema/schema.json -d path/to/your/static-analysis.datadog.yml Существуют некоторые примеры действительных и недопустимых файлов конфигурации в schema/examples/valid и schema/examples/invalid подкатализаторах соответственно. Если вы внесете изменения в схему JSON, вы можете проверить их на наших примерах:
npm install -g pajv )make -C schema Сканирование Diff Aware-это особенность статического анализатора, чтобы сканировать только файлы, которые были недавно изменены. Сканы Diff AWAR используют предыдущие результаты и добавляют только нарушения из измененных файлов.
Чтобы использовать сканирование Diff Aware, вы должны быть клиентом Datadog.
Для использования сканирования Diff Aware:
DD_SITE в соответствии с использованием DatAdog DataCenter, который вы используете (https://docs.datadoghq.com/getting_started/site/)DD_APP_KEY и DD_API_KEY с вашим приложением Datadog и клавишами API--diff-awareПри использовании Diff-Aware статический анализатор будет подключаться к DataDog и попытаться использовать предыдущий анализ. Если возникает какая-либо проблема и не может быть использовано Diff Aware, анализатор выведет ошибку, подобную этой ниже, и продолжить с полным сканированием.
Вы можете использовать вариант --debug true для дальнейшего устранения неполадок, если это необходимо.
$ datadog-static-analyzer --directory /path/to/code --output output.sarif --format sarif --diff-aware
...
diff aware not enabled (error when receiving diff-aware data from Datadog with config hash 16163d87d4a1922ab89ec891159446d1ce0fb47f9c1469448bb331b72d19f55c, sha 5509900dc490cedbe2bb64afaf43478e24ad144b), proceeding with full scan.
...Экспортные наборы правил из API в файл
cargo run --bin datadog-export-rulesets -- -r < ruleset > -o < file-to-export > См. File Anforming.md для получения дополнительной информации, а также для разработки. MD для всех сведений о рекомендациях по тестированию и кодированию.