Tip
Datadog mendukung proyek open source. Pelajari lebih lanjut tentang DataDog untuk proyek open source.
Datadog-Static-Analyzer adalah mesin penganalisa statis untuk analisis statis 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 csvUntuk informasi lebih lanjut tentang wadah Docker, lihat dokumentasi di sini.
Jika Anda mengalami masalah, baca pertanyaan yang sering diajukan terlebih dahulu, itu mungkin berisi solusi untuk masalah Anda.
Anda dapat memilih aturan yang akan digunakan untuk memindai repositori Anda dengan membuat file static-analysis.datadog.yml .
Pertama, pastikan Anda mengikuti dokumentasi dan membuat file static-analysis.datadog.yml di akar proyek Anda dengan aturan yang ingin Anda gunakan.
Semua aturan dapat ditemukan di dokumentasi Datadog. static-analysis.datadog.yml Anda hanya mungkin berisi aturan yang tersedia dari dokumentasi dataDog
Contoh file YAML
schema-version : v1
rulesets :
- python-code-style
- python-best-practices
- python-inclusive
ignore :
- testsAnda dapat menggunakannya di pipa CI/CD Anda menggunakan integrasi kami:
Jika Anda menggunakannya dalam pipa CI/CD Anda sendiri, Anda dapat mengintegrasikan alat secara langsung: lihat dokumentasi DataDog untuk informasi lebih lanjut.
Ekstensi DataDog IntelliJ memungkinkan Anda untuk menggunakan penganalisa statis langsung dari semua produk JetBrains. Buat file static-analysis.datadog.yml , unduh ekstensi dan Anda dapat mulai menggunakannya. Anda dapat melihat di bawah contoh saran untuk menambahkan batas waktu saat mengambil data dengan Python dengan modul permintaan.

Ekstensi kode DATADOG vs memungkinkan Anda menggunakan penganalisa statis langsung dari kode VS. Buat file static-analysis.datadog.yml , unduh ekstensi dan Anda dapat mulai menggunakannya.

Saat Anda berada di atas produk DataDog, Anda dapat memilih aturan yang Anda inginkan/butuhkan. Jika Anda tidak menggunakan DataDog secara langsung, ada daftar aturan yang digunakan umum yang tersedia dalam produk analisis statis DataDog per bahasa.
Daftar lengkap tersedia dalam dokumentasi kami.
Daftar aturan tersedia dalam aturan.md.
Unduh rilis terbaru untuk sistem dan arsitektur Anda dari halaman rilis.
Untuk mendapatkan penganalisa statis melalui shell:
curl -L -O https://www.github.com/DataDog/datadog-static-analyzer/releases/latest/download/datadog-static-analyzer- < target > .zipContoh untuk mendapatkan biner x86_64 untuk 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 > Agar alat berfungsi, Anda harus memiliki file <directory>/static-analysis.datadog.yml yang mendefinisikan konfigurasi penganalisa. File ini akan menunjukkan aturan yang akan Anda gunakan untuk proyek Anda.
Anda bisa mendapatkan informasi lebih lanjut tentang konfigurasi pada dokumentasi Datadog.
Biner tidak dapat dieksekusi sebagaimana adanya. Anda perlu menandai biner sebagai aman untuk dieksekusi menggunakan perintah berikut.
xattr -dr com.apple.quarantine datadog-static-analyzer-f atau --format : Format file output. -f sarif menghasilkan file yang sesuai sarif-r atau --rules : Menyediakan file yang berisi semua aturan (aturan dapat dimasukkan ke dalam file menggunakan datadog-export-rulesets )-c atau --cpus : Jumlah inti yang digunakan untuk menganalisis (hitung sekitar 1GB penggunaan RAM per inti)-o atau --output : file output-p atau --ignore-path : jalur (pola/glob) untuk diabaikan; menerima banyak-x atau --performance-statistics : Tampilkan statistik kinerja untuk penganalisa-g atau --add-git-info : tambahkan informasi terkait git (SHA, dll) ke dalam laporan sarif saat menggunakan -f sarif--fail-on-any-violation : Jadikan program keluar dari kode keluar non-nol jika ada setidaknya satu pelanggaran keparahan yang diberikan.-w atau --diff-aware : Aktifkan pemindaian Diff-Aware (lihat catatan khusus di bawah) Atur variabel berikut untuk mengonfigurasi analisis:
DD_SITE : Parameter situs DataDog yang digunakan untuk mengambil aturan (Daftar Lihat) (default: datadoghq.com ) Analisis statis dapat dikonfigurasi menggunakan file static-analysis.datadog.yml di direktori root repositori. Ini adalah file YAML dengan entri berikut:
rulesets : (Diperlukan) Daftar dengan semua aturan untuk digunakan untuk repositori ini (lihat Dokumentasi DataDog untuk daftar lengkap). Elemen -elemen dari daftar ini harus string atau peta yang berisi konfigurasi untuk aturan (dijelaskan di bawah.)ignore : (opsional) Daftar prefiks jalur dan pola glob untuk diabaikan. File yang cocok dengan salah satu entri tidak akan dianalisis.only : (opsional) Daftar prefiks jalur dan pola Glob untuk dianalisis. Jika only ditentukan, hanya file yang cocok dengan salah satu entri yang akan dianalisis.ignore-gitignore : (Opsional) Secara default, entri apa pun yang ditemukan dalam file .gitignore ditambahkan ke daftar ignore . Jika opsi ignore-gitignore benar, file .gitignore tidak dibaca.max-file-size-kb : (Opsional) yang lebih besar dari ukuran ini, dalam kilobytes, akan diabaikan. Nilai standarnya adalah 200 kb.schema-version : (opsional) Versi skema yang diikuti oleh file konfigurasi ini. Jika ditentukan, itu harus v1 . Entri dari daftar rulesets harus berupa string yang berisi nama aturan untuk mengaktifkan, atau peta yang berisi konfigurasi untuk aturan. Peta ini berisi bidang -bidang berikut:
ignore : (Opsional) Daftar prefiks jalur dan pola Glob yang harus diabaikan untuk aturan ini . Aturan dalam aturan ini tidak akan dievaluasi untuk file apa pun yang cocok dengan salah satu entri dalam daftar ignore .only : (Opsional) Daftar Prefix Path dan Pola Glob untuk menganalisis aturan ini . Jika only ditentukan, aturan dalam aturan ini hanya akan dievaluasi untuk file yang cocok dengan salah satu entri.rules : (Opsional) Peta konfigurasi aturan. Aturan yang belum ditentukan dalam peta ini masih akan dievaluasi, tetapi dengan konfigurasi default mereka. Peta di bidang rules menggunakan nama aturan sebagai kuncinya, dan nilainya peta dengan bidang berikut:
ignore (opsional) Daftar awalan jalur dan pola Glob untuk diabaikan untuk aturan ini . Aturan ini tidak akan dievaluasi untuk file apa pun yang cocok dengan salah satu entri dalam daftar ignore .only : (opsional) Daftar prefiks jalur dan pola Glob untuk menganalisis aturan ini . Jika only ditentukan, aturan ini hanya akan dievaluasi untuk file yang cocok dengan salah satu entri.severity : (Opsional) Jika disediakan, ganti keparahan pelanggaran yang dihasilkan oleh aturan ini. Keparahan yang valid adalah ERROR , WARNING , NOTICE , dan NONE .category : (Opsional) Jika disediakan, ganti kategori aturan ini. Kategori yang valid adalah BEST_PRACTICES , CODE_STYLE , ERROR_PRONE , PERFORMANCE , dan SECURITY .arguments : (Opsional) Peta nilai untuk argumen aturan. Peta di bidang arguments menggunakan nama argumen sebagai kuncinya, dan nilainya baik string atau peta:
Contoh file konfigurasi yang beranotasi:
# 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 : 100Contoh lain yang menunjukkan setiap opsi yang digunakan:
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 Ada definisi skema JSON untuk static-analysis.datadog.yml dalam subdirektori schema .
Anda dapat menggunakannya untuk memeriksa sintaksis file konfigurasi Anda:
npm install -g pajv )pajv validate -s schema/schema.json -d path/to/your/static-analysis.datadog.yml Ada beberapa contoh file konfigurasi yang valid dan tidak valid dalam schema/examples/valid dan schema/examples/invalid . Jika Anda membuat perubahan pada skema JSON, Anda dapat mengujinya terhadap contoh kami:
npm install -g pajv )make -C schema Pemindaian Diff-Ware adalah fitur dari statis-analyzer untuk hanya memindai file yang baru-baru ini diubah. Pemindaian Diff-Aware Gunakan hasil sebelumnya dan tambahkan hanya pelanggaran dari file yang diubah.
Untuk menggunakan pemindaian yang berbeda, Anda harus menjadi pelanggan DataDog.
Untuk menggunakan pemindaian yang berbeda:
DD_SITE sesuai dengan pusat data datadog yang Anda gunakan (https://docs.datadoghq.com/getting_started/site/)DD_APP_KEY dan DD_API_KEY dengan aplikasi DataDog dan kunci API Anda--diff-awareSaat menggunakan Diff-Aware, penganalisa statis akan terhubung ke DataDog dan mencoba analisis sebelumnya untuk digunakan. Jika ada masalah yang terjadi dan disadari tidak dapat digunakan, penganalisa akan menghasilkan kesalahan seperti yang di bawah ini dan melanjutkan dengan pemindaian penuh.
Anda dapat menggunakan opsi --debug true untuk memecahkan masalah lebih lanjut jika diperlukan.
$ 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.
...Ekspor aturan dari API ke dalam file
cargo run --bin datadog-export-rulesets -- -r < ruleset > -o < file-to-export > Lihat File Contributing.md untuk informasi lebih lanjut serta pengembangan.md untuk semua detail tentang panduan pengujian dan pengkodean.