CodeMender menyediakan tiga mode pemindaian berbeda melalui perintah cm find.
Setiap mode dirancang untuk tahap tertentu dalam siklus proses pengembangan software, dengan menyeimbangkan kecepatan, cakupan, dan kedalaman.
Membandingkan mode penemuan
Tabel berikut membandingkan tiga mode pemindaian cm find:
| Mode | Perintah | Cakupan target | Runtime umum | Paling cocok untuk |
|---|---|---|---|---|
| Pemindaian standar | cm find PATH |
Direktori yang ditentukan | Runtime sedang | Penemuan developer lokal, pemeriksaan cepat, ulasan eksploratif |
| Pemindaian perbedaan | cm find PATH --diff[=REF] |
File yang diubah dan file dependen (seperti pemanggil dan yang dipanggil) | Runtime cepat | Pipeline CI/CD permintaan pull (GitHub Actions, Cloud Build), hook pra-commit |
| Pemindaian mendalam | cm find PATH --deep |
Seluruh repositori | Runtime yang lebih lama | Audit terjadwal, kesiapan rilis, sertifikasi kepatuhan (SOC 2, ISO) |
Pindai standar (default)
Pemindaian standar adalah mode default saat Anda menjalankan cm find tanpa memberikan tanda pemindaian tambahan. Fitur ini menjalankan pemindaian otonom satu sesi pada
direktori target yang ditentukan. Selama pemindaian, CodeMender menemukan file sumber, memprioritaskannya berdasarkan pola kerentanan, melakukan analisis keamanan awal, dan melaporkan potensi kerentanan yang dikelompokkan berdasarkan tingkat keparahan dan jenisnya.
Contoh berikut menunjukkan cara menjalankan pemindaian standar pada target direktori:
# Scan a directory using the default model
cm find ./src
# Scan with a specific Gemini model
cm find ./src --model gemini-3.8-flash
Keunggulan
Pemindaian standar berfungsi tanpa konfigurasi dan tanpa flag atau parameter tambahan. Model ini menyeimbangkan kecepatan dan cakupan dengan runtime sedang serta menggunakan token dan komputasi minimal, sehingga hemat biaya untuk pengembangan sehari-hari.
Kompromi dan batasan
Pemindaian standar memiliki perolehan yang lebih rendah pada codebase besar dan mungkin tidak menjelajahi setiap file dalam repositori perusahaan multi-paket yang besar karena beroperasi dalam konteks satu sesi. Selain itu, alat ini terutama berfokus pada pola lokal dalam setiap file, yang membatasi analisis lintas paket dan mungkin melewatkan kerentanan yang mencakup paket yang berjauhan.
Kapan digunakan
Gunakan pemindaian standar dalam skenario berikut:
- Jalankan pemindaian di komputer lokal sebelum melakukan perubahan untuk mendapatkan masukan cepat selama pengembangan lokal.
- Periksa repositori yang baru di-clone atau project kecil untuk penilaian awal postur keamanannya.
- Periksa subdirektori atau modul tertentu saat menyelidiki potensi masalah.
Pemindaian perbedaan
Pemindaian diff melakukan analisis diff Git untuk alur kerja permintaan pull dan pipeline CI/CD dengan memeriksa file yang diubah dan ditambahkan, yang berfokus pada rentang baris (hunk diff) yang tepat yang berubah. Selain memeriksa baris yang diubah, alat ini melakukan analisis dampak untuk menemukan file yang tidak tersentuh di repositori yang memanggil, mengimpor, atau bergantung pada fungsi dan simbol yang diubah. Hal ini membantu memastikan bahwa perubahan yang mengubah kontrak atau tanda tangan fungsi dalam satu file tidak menimbulkan kerentanan dalam file dependen.
Selama pemindaian, CodeMender secara otomatis mengisolasi kerentanan yang sudah ada sebelumnya dalam kode yang tidak tersentuh sehingga masalah lama tidak menyebabkan pemindaian gagal atau memblokir permintaan pull. Kemudian, alat ini mengevaluasi temuan terhadap kebijakan --fail-on Anda dan menampilkan hasil dalam format tabel, JSON, atau SARIF v2.1.0.
Contoh berikut menunjukkan cara menjalankan pemindaian perbedaan terhadap perubahan salinan kerja, perubahan yang di-stage, atau cabang target:
# Scan working copy changes versus HEAD
cm find . --diff
# Scan staged changes only (pre-commit)
cm find . --diff --staged
# Scan a pull request branch against the main branch in CI/CD
cm find . --diff=origin/main --format=sarif --output=results.sarif \
--fail-on=CRITICAL,HIGH
Untuk konfigurasi pipeline end-to-end, lihat Mengintegrasikan dengan CI/CD.
Keunggulan
Pemindaian diff cepat dan deterministik, biasanya selesai dalam waktu kurang dari 2 menit untuk menjaga durasi proses pipeline CI/CD tetap singkat. Tidak seperti pemindai diff yang hanya memeriksa baris yang berubah, --diff memeriksa hubungan pemanggil dan yang dipanggil untuk mendeteksi regresi keamanan lintas file dan pelanggaran kontrak. Karena menekan temuan dalam kode yang tidak tersentuh, pemindaian hanya memblokir permintaan pull pada masalah yang diperkenalkan atau dipengaruhi oleh perubahan, sehingga menghindari laporan yang tidak relevan dan kegagalan build yang tidak perlu. Pemindaian diff juga memancarkan SARIF v2.1.0 untuk integrasi langsung ke anotasi Pemindaian Kode GitHub dan dasbor Cloud Build.
Kompromi dan batasan
Pemindaian diff hanya menganalisis kode dalam area permintaan pull yang terpengaruh dan tidak menemukan kerentanan yang sudah ada di bagian repositori yang tidak tersentuh. Hal ini juga memerlukan repositori Git dengan akses ke referensi dasar target.
Kapan digunakan
Gunakan pemindaian perbedaan dalam skenario berikut:
- Jalankan pemeriksaan otomatis pada setiap permintaan pull di pipeline CI/CD seperti GitHub Actions, Cloud Build, GitLab CI, atau Jenkins.
- Verifikasi bahwa perubahan lokal sudah bersih di hook pra-commit atau pra-push sebelum mendorong kode ke repositori jarak jauh.
- Memvalidasi bahwa penggabungan antara cabang rilis tidak menyebabkan regresi.
Pemindaian mendalam
Pemindaian mendalam adalah mode pemindaian menyeluruh yang dirancang untuk audit keamanan komprehensif di seluruh repositori. Alat ini mengaudit file sumber di seluruh
repositori secara bersamaan menggunakan pekerja paralel (dikonfigurasi dengan
--deep-workers, yang secara default adalah 8 dan mendukung rentang 1 hingga 16). Saat
menemukan temuan kandidat, alat ini akan memvalidasi dan mengonfirmasinya berdasarkan
konteks kode di sekitarnya untuk memfilter positif palsu sebelum melaporkan hasil.
Contoh berikut menunjukkan cara menjalankan pemindaian mendalam di seluruh repositori:
# Run an exhaustive deep scan across the entire repository
cm find . --deep
# Tune concurrency and use the cyber-specialized security model
cm find . --deep --deep-workers=8 --model=gemini-3.8-flash-cyber
Keunggulan
Pemindaian mendalam memberikan perolehan tinggi dan penemuan kerentanan yang komprehensif di seluruh codebase perusahaan besar, yang mengungguli pemindaian sesi tunggal dan menggunakan verifikasi otomatis untuk mempertahankan presisi tinggi. Model ini mendukung beberapa bahasa dan tidak bergantung pada platform, berfungsi di semua bahasa yang didukung oleh Gemini tanpa memerlukan compiler, penyiapan build, atau file tata bahasa khusus bahasa. Selain itu, fitur ini mengoptimalkan penggunaan resource dengan memfokuskan analisis pada kode produksi dan meminimalkan konsumsi komputasi dan token pada file non-produksi.
Kompromi dan batasan
Jangan gunakan pemindaian mendalam sebagai pemeriksaan sinkron yang memblokir permintaan pull. Pemindaian mendalam melakukan analisis menyeluruh di seluruh repositori. Akibatnya, pemindaian ini memerlukan waktu proses yang lebih lama dan pembelanjaan token yang lebih tinggi daripada pemindaian standar atau diff.
Kapan digunakan
Gunakan pemindaian mendalam dalam skenario berikut:
- Menjalankan audit keamanan terjadwal setiap malam atau mingguan di semua repositori produksi.
- Lakukan audit keamanan pra-rilis penuh sebelum rilis versi utama atau deployment produksi.
- Buat bukti audit untuk kepatuhan dan peninjauan sertifikasi SOC 2, ISO 27001, FedRAMP, atau PCI-DSS.
- Menetapkan dasar keamanan awal saat mengaktifkan codebase baru ke CodeMender.
Memilih mode pencarian
Gunakan tabel referensi berikut untuk memilih mode pemindaian yang tepat untuk alur kerja Anda:
| Alur kerja atau lingkungan | Kasus penggunaan dan sasaran | Mode yang direkomendasikan | Contoh perintah |
|---|---|---|---|
| Terminal lokal | Penemuan cepat atau pemeriksaan keyakinan pada modul tertentu | Pemindaian standar | cm find ./src |
| Terminal lokal | Pemeriksaan pra-commit pada perubahan yang di-stage sebelum melakukan push | Pemindaian perbedaan | cm find . --diff --staged |
| Pipeline CI/CD | Penetapan otomatis permintaan pull pada kode dan pemanggil yang diubah | Pemindaian perbedaan |
cm find . --diff=origin/main --fail-on=CRITICAL,HIGH
|
| Pipeline atau audit terjadwal | Audit harian, gerbang pra-rilis, kepatuhan SOC 2 | Pemindaian mendalam | cm find . --deep --deep-workers=8 |
Referensi tanda perintah menurut mode
Tabel berikut menjelaskan tanda command line yang didukung oleh setiap mode pemindaian.
Flag umum (semua mode)
Flag berikut berlaku untuk semua mode pemindaian cm find:
| Flag | Default | Deskripsi |
|---|---|---|
-c, --context TEXT |
"" |
Konteks tambahan untuk memandu agen pemindaian, seperti catatan arsitektur. |
--model MODEL_NAME |
gemini-3.8-flash |
Model Gemini yang akan digunakan (gemini-3.8-flash,
gemini-3.8-flash-cyber).
|
-y, --yes |
false |
Lewati semua perintah konfirmasi interaktif. |
--unrestricted |
false |
Nonaktifkan sandbox sistem file. |
Flag pemindaian perbedaan
Flag berikut mengonfigurasi pemindaian cm find --diff:
| Flag | Default | Deskripsi |
|---|---|---|
--diff[=REF] |
Nonaktif |
Aktifkan mode perbedaan terhadap referensi target, seperti
origin/main atau HEAD~1. Tanpa
REF, membandingkan dengan HEAD. Tidak dapat
digunakan dengan --deep.
|
--staged |
Nonaktif |
Mencakup perbedaan pada indeks bertahap saja (git diff --cached).
Memerlukan --diff.
|
--diff-depth DEPTH |
1 |
Kedalaman penelusuran untuk analisis dampak (1 hingga 3, default: 1-hop). |
--diff-workers COUNT |
4 |
Jumlah worker serentak untuk tugas audit permintaan pull (1 hingga 16). |
--diff-max-neighbors COUNT |
10 |
Jumlah maksimum file pemanggil atau tujuan panggilan yang bergantung untuk diperiksa. |
--fail-on SEVERITIES |
CRITICAL,HIGH |
Tingkat keparahan yang dipisahkan koma yang menyebabkan cm find keluar dengan
kode 1.
|
--fail-on-truncation |
Nonaktif | Keluar dengan kode 1 jika penemuan tetangga melampaui batas. |
--format FORMAT |
table |
Format output: table, json, atau
sarif.
|
--output FILE |
Output standar | Menulis laporan ke file, bukan output standar. |
Tanda pemindaian mendalam
Flag berikut mengonfigurasi pemindaian cm find --deep:
| Flag | Default | Deskripsi |
|---|---|---|
--deep |
false |
Aktifkan pemindaian mendalam yang menyeluruh di seluruh repositori. Tidak dapat digunakan dengan
--diff.
|
--deep-workers COUNT |
8 |
Jumlah pekerja serentak untuk pemindaian mendalam (1 hingga 16). |