提示
Datadog支持开源项目。在Datadog上了解有关开源项目的更多信息。
Datadog静态分析仪是用于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文件,下载扩展名,您可以开始使用它。您可以在下面看到一个建议在使用请求模块获取数据时添加超时的建议。

DataDog VS代码扩展程序允许您直接从VS代码中使用静态分析仪。创建一个static-analysis.datadog.yml文件,下载扩展名,您可以开始使用它。

当您加入DataDog产品时,您可以选择所需/需要的规则集。如果您不直接使用DataDog,则每个语言中可用的Datadog静态分析产品中可用的常用规则集列表。
完整的列表可在我们的文档中找到。
规则集列表可在规则集。md中找到。
从“发行”页面下载最新版本和架构。
要通过Shell获得静态分析仪:
curl -L -O https://www.github.com/DataDog/datadog-static-analyzer/releases/latest/download/datadog-static-analyzer- < target > .zip示例以获取linux的x86_64二进制文件:
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生成一个符合萨里夫的文件-r或--rules :提供一个包含所有规则的文件(可以使用datadog-export-rulesets将规则放入文件中)-c或--cpus :用于分析的内核数(计数约1GB的RAM使用情况)-o或--output :输出文件-p或--ignore-path :要忽略的路径(模式/圈);接受多个-x或--performance-statistics :显示分析仪的性能统计信息-g或--add-git-info :使用-f sarif时,将与GIT相关的信息(SHA等)添加到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选项为true,则不读取.gitignore文件。max-file-size-kb :(可选)文件大于此尺寸的文件,以千字节为单位,将被忽略。默认值为200 kb。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 在schema子目录中有一个static-analysis.datadog.yml的JSON模式定义。
您可以使用它来检查配置文件的语法:
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感知扫描是静态分析仪的一个功能,仅扫描了最近更改的文件。 DIFF感知扫描使用以前的结果,并仅添加更改文件中的违规行为。
为了使用差异扫描,您必须是DataDog客户。
使用差异扫描:
DD_SITE环境变量(https://docs.datadoghq.com/getting_started/site/)DD_APP_KEY和DD_API_KEY环境变量使用DataDog应用程序和API键--diff-aware使用diff-ware时,静态分析仪将连接到datadog,并尝试使用先前的分析。如果发生任何问题并且无法使用差异,则分析仪将输出以下错误,并继续进行完整扫描。
您可以使用该选项 - 如果需要, --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 > 有关更多信息和开发,请参见文件贡献。md。有关测试和编码指南的所有详细信息。