팁
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 csvDocker 컨테이너에 대한 자세한 내용은 여기 문서를 참조하십시오.
문제가 발생하면 먼저 자주 묻는 질문을 읽으십시오. 문제에 대한 해결책이 포함될 수 있습니다.
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 Code Extension을 사용하면 VS Code에서 직접 정적 분석기를 사용할 수 있습니다. static-analysis.datadog.yml 파일을 만들고 확장자를 다운로드하면 사용을 시작할 수 있습니다.

Datadog 제품을 사용하면 원하는/필요한 규칙 세트를 선택할 수 있습니다. Datadog를 직접 사용하지 않는 경우 언어 당 Datadog 정적 분석 제품에 사용 가능한 일반적인 사용 규칙 세트 목록이 있습니다.
전체 목록은 문서에서 사용할 수 있습니다.
규칙 세트 목록은 Rulesets.md에서 사용할 수 있습니다.
릴리스 페이지에서 시스템 및 아키텍처의 최신 릴리스를 다운로드하십시오.
쉘을 통해 정적 분석기를 얻으려면 :
curl -L -O https://www.github.com/DataDog/datadog-static-analyzer/releases/latest/download/datadog-static-analyzer- < target > .zipLinux 용 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 sarif 호환 파일을 생성합니다-r 또는 --rules : 모든 규칙이 포함 된 파일을 제공합니다 ( datadog-export-rulesets 사용하여 규칙을 파일에 넣을 수 있음)-c 또는 --cpus : 분석에 사용되는 코어 수 (코어 당 약 1GB RAM 사용량 계산)-o 또는 --output : 출력 파일-p 또는 --ignore-path : 무시할 경로 (패턴/글로벌); 다수를 허용합니다-x 또는 --performance-statistics : 분석기의 성능 통계 표시-g 또는 --add-git-info : -f sarif를 사용할 때 sarif 보고서에 git 관련 정보 (sha 등) 추가--fail-on-any-violation : 주어진 심각도를 하나 이상 위반하는 경우 프로그램을 0이 아닌 출구 코드로 나누십시오.-w 또는 --diff-aware : 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 : (선택 사항) 킬로 바이트 로이 크기보다 큰 파일은 무시됩니다. 기본값은 200kb입니다.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-Aware Scanning은 최근 변경된 파일 만 스캔하는 정적 분석기의 기능입니다. Diff-Aware 스캔은 이전 결과를 사용하고 변경된 파일의 위반 만 추가합니다.
다른 인식 스캔을 사용하려면 Datadog 고객이어야합니다.
DIFF 인식 스캔 사용 :
DD_SITE 환경 변수를 설정하십시오.DD_APP_KEY 및 DD_API_KEY 환경 변수를 설정하십시오.--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 Contributing.md를 참조하십시오.