Cycode
resmiTingkatkan keamanan dalam siklus hidup pengembangan Anda melalui pemindaian SAST, SCA, Secrets, dan IaC dengan Cycode.
Apa yang bisa Anda lakukan dengan Cycode MCP?
- Memindai jalur repositori untuk mencari rahasia yang dikodekan keras — Minta asisten untuk menjalankan
cycode_secret_scanpada direktori lokal untuk mendeteksi kredensial yang terekspos. - Memeriksa dependensi untuk kerentanan yang diketahui — Jalankan
cycode_sca_scanterhadap jalur proyek untuk mengidentifikasi paket sumber terbuka yang rentan atau tidak sesuai. - Mengaudit file Infrastructure as Code untuk kesalahan konfigurasi — Gunakan
cycode_iac_scanpada direktori Terraform atau CloudFormation untuk menampilkan pengaturan berisiko. - Meninjau kode sumber untuk celah keamanan — Jalankan
cycode_sast_scanpada basis kode untuk menemukan kelemahan tingkat kode dan masalah kualitas. - Memverifikasi autentikasi CLI dan status versi — Panggil
cycode_statusuntuk mengonfirmasi koneksi ke Cycode dan versi mana yang aktif.
Dokumentasi
Panduan Pengguna Cycode CLI
Cycode Command Line Interface (CLI) adalah aplikasi yang dapat Anda instal secara lokal untuk memindai repositori Anda terhadap rahasia, kesalahan konfigurasi Infrastructure as Code, kerentanan Software Composition Analysis, dan masalah Static Application Security Testing.
Panduan ini akan memandu Anda melalui instalasi dan penggunaan.
Daftar Isi
- Prasyarat
- Instalasi
- Perintah Cycode CLI
- Perintah MCP
- Perintah Platform
- AI Guardrails
- Perintah Scan
- Perintah Report
- Perintah Import
- Log Pemindaian
- Bantuan Sintaks
Prasyarat
- Aplikasi Cycode CLI memerlukan Python versi 3.9 atau lebih baru. Perintah MCP hanya tersedia untuk Python 3.10 ke atas. Jika Anda menggunakan versi Python yang lebih lama, perintah ini tidak akan tersedia.
- Gunakan perintah
cycode authuntuk mengautentikasi ke Cycode dengan CLI- Atau, Anda bisa mendapatkan Cycode Client ID dan Client Secret Key dengan mengikuti langkah-langkah yang dijelaskan di halaman Token Akun Layanan dan Token Akses Pribadi, yang berisi detail tentang cara mendapatkan nilai-nilai ini.
Instalasi
Langkah-langkah instalasi berikut berlaku untuk sistem operasi Windows dan UNIX / Linux.
[!NOTE] Langkah-langkah berikut mengasumsikan penggunaan
python3danpip3untuk perintah terkait Python; namun, beberapa sistem mungkin menggunakan perintahpythondanpip, tergantung pada konfigurasi lingkungan Python Anda.
Instal Cycode CLI
Untuk menginstal aplikasi Cycode CLI di mesin lokal Anda, lakukan langkah-langkah berikut:
-
Buka command line atau aplikasi terminal Anda.
-
Jalankan salah satu perintah berikut:
-
Untuk menginstal dari PyPI:
pip3 install cycode -
Untuk menginstal dari Homebrew:
brew install cycode -
Untuk menginstal dari GitHub Releases arahkan dan unduh file yang dapat dieksekusi untuk sistem operasi dan arsitektur Anda, lalu jalankan perintah berikut:
cd /path/to/downloaded/cycode-cli chmod +x cycode ./cycode -
-
Terakhir, autentikasi CLI. Ada tiga metode untuk mengatur ID klien dan kredensial Cycode (client secret atau token ID OIDC):
- cycode auth (Direkomendasikan)
- cycode configure
- Tambahkan ke variabel lingkungan Anda
Menggunakan Perintah Auth
[!NOTE] Ini adalah metode yang direkomendasikan untuk menyiapkan mesin lokal Anda untuk mengautentikasi dengan Cycode CLI.
-
Ketik perintah berikut ke jendela terminal/command line Anda:
cycode auth -
Jendela browser akan muncul, meminta Anda untuk masuk ke Cycode (seperti yang terlihat di bawah):
-
Masukkan kredensial login Anda di halaman ini dan masuk.
-
Anda akhirnya akan dibawa ke halaman di bawah ini, di mana Anda akan diminta untuk memilih grup bisnis yang ingin Anda otorisasi dengan Cycode (jika berlaku):
[!NOTE] Ini akan menjadi metode default untuk mengautentikasi dengan Cycode CLI.
-
Klik tombol Allow untuk mengotorisasi Cycode CLI pada grup bisnis yang dipilih.
-
Setelah selesai, Anda akan melihat layar berikut jika berhasil dipilih:
-
Di layar terminal/command line, Anda akan melihat yang berikut ini saat keluar dari jendela browser:
Successfully logged into cycode
Menggunakan Perintah Configure
[!NOTE] Jika Anda sudah mengatur Cycode Client ID dan Client Secret Anda melalui variabel lingkungan Linux atau Windows, kredensial tersebut akan diutamakan daripada metode ini.
-
Ketik perintah berikut ke jendela terminal/command line Anda:
cycode configure -
Masukkan nilai URL API Cycode Anda (Anda dapat mengosongkannya untuk menggunakan nilai default).
Cycode API URL [https://api.cycode.com]: https://api.onpremise.com -
Masukkan nilai URL APP Cycode Anda (Anda dapat mengosongkannya untuk menggunakan nilai default).
Cycode APP URL [https://app.cycode.com]: https://app.onpremise.com -
Masukkan nilai Cycode Client ID Anda.
Cycode Client ID []: 7fe5346b-xxxx-xxxx-xxxx-55157625c72d -
Masukkan nilai Cycode Client Secret Anda (lewati jika Anda berencana menggunakan token ID OIDC).
Cycode Client Secret []: c1e24929-xxxx-xxxx-xxxx-8b08c1839a2e -
Masukkan nilai Token ID OIDC Cycode Anda (opsional).
Cycode ID Token []: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9... -
Jika nilai-nilai berhasil dimasukkan, Anda akan melihat pesan berikut:
Successfully configured CLI credentials!atau/dan
Successfully configured Cycode URLs!
Jika Anda masuk ke folder .cycode di bawah folder pengguna Anda, Anda akan menemukan kredensial ini dibuat dan ditempatkan di file credentials.yaml di folder tersebut.
URL ditempatkan di file config.yaml di folder tersebut.
Tambahkan ke Variabel Lingkungan
Di Unix/Linux:
export CYCODE_CLIENT_ID={your Cycode ID}
dan
export CYCODE_CLIENT_SECRET={your Cycode Secret Key}
Jika organisasi Anda menggunakan autentikasi OIDC, Anda dapat memberikan token ID sebagai gantinya (atau sebagai tambahan):
export CYCODE_ID_TOKEN={your Cycode OIDC ID token}
Di Windows
-
Dari Control Panel, arahkan ke menu System:
-
Selanjutnya, klik Advanced system settings:
-
Di jendela System Properties yang terbuka, klik tombol Environment Variables:
-
Buat variabel
CYCODE_CLIENT_IDdanCYCODE_CLIENT_SECRETdengan nilai yang sesuai dengan ID dan Secret Key Anda. Jika Anda mengautentikasi melalui OIDC, tambahkan jugaCYCODE_ID_TOKENdengan nilai token ID OIDC Anda:
-
Masukkan
cycode.exeke dalam path untuk menyelesaikan instalasi.
Instal Pre-Commit Hook
Pre-commit dan pre-push hook Cycode dapat diatur dalam repositori lokal Anda sehingga aplikasi Cycode CLI akan mengidentifikasi masalah apa pun dengan kode Anda secara otomatis sebelum Anda melakukan commit atau push ke basis kode Anda.
[!NOTE] Pre-commit dan pre-push hook tidak tersedia untuk pemindaian IaC.
Lakukan langkah-langkah berikut untuk menginstal pre-commit hook:
Menginstal Pre-Commit Hook
-
Instal framework pre-commit (Python 3.9 atau lebih tinggi harus diinstal):
pip3 install pre-commit -
Arahkan ke direktori teratas dari repositori Git lokal yang ingin Anda konfigurasi.
-
Buat file YAML baru bernama
.pre-commit-config.yaml(sertakan awalan.) di direktori teratas repositori yang berisi yang berikut:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.5.0 hooks: - id: cycode stages: [pre-commit] -
Ubah file yang dibuat sesuai kebutuhan spesifik Anda. Gunakan ID hook
cycodeuntuk mengaktifkan pemindaian Rahasia. Gunakan ID hookcycode-scauntuk mengaktifkan pemindaian SCA. Gunakan ID hookcycode-sastuntuk mengaktifkan pemindaian SAST. Jika Anda ingin mengaktifkan semua jenis pemindaian, gunakan konfigurasi ini:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.5.0 hooks: - id: cycode stages: [pre-commit] - id: cycode-sca stages: [pre-commit] - id: cycode-sast stages: [pre-commit] -
Instal hook Cycode:
pre-commit installInstalasi hook yang berhasil akan menghasilkan pesan:
Pre-commit installed at .git/hooks/pre-commit. -
Perbarui pre-commit hook:
pre-commit autoupdateIni akan secara otomatis menaikkan
revdi.pre-commit-config.yamlke versi terbaru Cycode CLI yang tersedia.
[!NOTE] Pemicu terjadi pada perintah
git commit. Hook hanya memicu pada file yang staged untuk commit.
Menginstal Pre-Push Hook
Untuk menginstal pre-push hook sebagai tambahan atau pengganti pre-commit hook:
-
Tambahkan pre-push hook ke file
.pre-commit-config.yamlAnda:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.5.0 hooks: - id: cycode-pre-push stages: [pre-push] -
Instal pre-push hook:
pre-commit install --hook-type pre-push -
Untuk kedua pre-commit dan pre-push hook, gunakan:
pre-commit install pre-commit install --hook-type pre-push
[!NOTE] Pre-push hook memicu pada perintah
git pushdan hanya memindai commit yang akan di-push.
Perintah Cycode CLI
Berikut adalah opsi dan perintah yang tersedia dengan aplikasi Cycode CLI:
| Opsi | Deskripsi |
|---|---|
-v, --verbose | Tampilkan log detail. |
--no-progress-meter | Jangan tampilkan pengukur kemajuan. |
--no-update-notifier | Jangan periksa pembaruan CLI. |
-o, --output [rich|text|json|table] | Tentukan jenis output. Defaultnya adalah rich. |
--client-id TEXT | Tentukan ID klien Cycode untuk eksekusi pemindaian spesifik ini. |
--client-secret TEXT | Tentukan client secret Cycode untuk eksekusi pemindaian spesifik ini. |
--id-token TEXT | Tentukan token ID OIDC Cycode untuk eksekusi pemindaian spesifik ini. |
--install-completion | Instal completion untuk shell saat ini. |
--show-completion [bash|zsh|fish|powershell|pwsh] | Tampilkan completion untuk shell yang ditentukan, untuk menyalinnya atau menyesuaikan instalasi. |
-h, --help | Tampilkan opsi untuk perintah yang diberikan. |
| Perintah | Deskripsi |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| auth | Autentikasi mesin Anda untuk mengaitkan CLI dengan akun Cycode Anda. |
| configure | Perintah awal untuk mengonfigurasi autentikasi klien CLI Anda. |
| ignore | Abaikan nilai, jalur, atau ID aturan tertentu. |
| mcp | Mulai server Model Context Protocol (MCP) untuk mengaktifkan integrasi AI dengan kemampuan pemindaian Cycode. |
| scan | Pindai konten untuk pelanggaran Secrets/IaC/SCA/SAST. Anda perlu menentukan jenis pemindaian yang akan dilakukan: commit-history/path/repository/dll. |
| report | Buat laporan. Anda perlu menentukan jenis laporan yang akan dilakukan sebagai SBOM. |
| status | Tampilkan status CLI dan keluar. |
Perintah MCP [EKSPERIMEN]
[!WARNING] Perintah MCP hanya tersedia untuk Python 3.10 ke atas. Jika Anda menggunakan versi Python yang lebih lama, perintah ini tidak akan tersedia.
Perintah Model Context Protocol (MCP) memungkinkan Anda memulai server MCP yang mengekspos kemampuan pemindaian Cycode ke sistem dan aplikasi AI. Ini memungkinkan model AI untuk berinteraksi dengan alat CLI Cycode melalui protokol standar.
[!TIP] Untuk pengalaman terbaik, instal Cycode CLI secara global di sistem Anda menggunakan
pip install cycodeataubrew install cycode, lalu autentikasi sekali dengancycode auth. Setelah instalasi dan autentikasi global, Anda tidak perlu mengonfigurasi variabel lingkunganCYCODE_CLIENT_IDdanCYCODE_CLIENT_SECRETdi file konfigurasi MCP Anda.
Memulai Server MCP
Untuk memulai server MCP, gunakan perintah berikut:
cycode mcp
Secara default, ini memulai server menggunakan transport stdio, yang cocok untuk integrasi lokal dan aplikasi AI yang dapat menjalankan subproses.
Opsi yang Tersedia
| Opsi | Deskripsi |
|---|---|
-t, --transport | Jenis transport untuk server MCP: stdio, sse, atau streamable-http (default: stdio) |
-H, --host | Alamat host untuk mengikat server (hanya digunakan untuk transport non-stdio) (default: 127.0.0.1) |
-p, --port | Nomor port untuk mengikat server (hanya digunakan untuk transport non-stdio) (default: 8000) |
--help | Tampilkan pesan bantuan dan opsi yang tersedia |
Alat MCP
Server MCP menyediakan alat berikut yang dapat digunakan oleh sistem AI:
| Nama Alat | Deskripsi |
|---|---|
cycode_secret_scan | Pindai rahasia yang dikodekan secara keras (hardcoded secrets) |
cycode_sca_scan | Pindai Analisis Komposisi Perangkat Lunak (SCA) - kerentanan dan masalah lisensi |
cycode_iac_scan | Pindai Infrastruktur sebagai Kode (IaC) untuk kesalahan konfigurasi |
cycode_sast_scan | Pindai Pengujian Keamanan Aplikasi Statis (SAST) - kualitas kode dan kelemahan keamanan |
cycode_status | Dapatkan versi CLI Cycode, status autentikasi, dan informasi konfigurasi |
Setiap alat pindai menerima dua mode input yang saling eksklusif:
paths(lebih disukai) — satu atau lebih jalur file atau direktori yang ada di disk. Direktori dipindai secara rekursif. Mesin Cycode menangani penemuan dan penyaringan file, seperti yang dilakukancycode scan -t <type> path ./srcdari CLI.files(alternatif) — kamus yang memetakan jalur file ke konten lengkapnya sebagai string. Gunakan ini hanya jika file tidak tersedia di disk (mis. pengeditan dalam memori yang belum disimpan).
[!TIP] Gunakan
pathsbila memungkinkan. Melewatkan file besar (sepertipackage-lock.json) sebagai konten sebaris dapat melebihi batas token dan memperlambat klien AI. Denganpaths, mesin Cycode membaca file langsung dari disk.
Semua alat pindai mengembalikan objek JSON yang menyertakan bidang "summary" dengan jumlah pelanggaran yang dapat dibaca manusia (mis. "Cycode found 3 violations: 1 CRITICAL, 2 HIGH.") selain array "detections" lengkap.
Contoh Penggunaan
Contoh Perintah Dasar
Mulai server MCP dengan pengaturan default (transport stdio):
cycode mcp
Mulai server MCP dengan transport stdio eksplisit:
cycode mcp -t stdio
Mulai server MCP dengan transport Server-Sent Events (SSE):
cycode mcp -t sse -p 8080
Mulai server MCP dengan transport HTTP streamable pada host dan port kustom:
cycode mcp -t streamable-http -H 0.0.0.0 -p 9000
Pelajari lebih lanjut tentang jenis Transport MCP di Spesifikasi Protokol MCP – Transport.
Contoh Konfigurasi
Menggunakan MCP dengan Cursor/VS Code/Claude Desktop/dll (mcp.json)
[!NOTE] Untuk lingkungan Cycode EU, pastikan untuk mengatur nilai
CYCODE_API_URLdanCYCODE_APP_URLyang sesuai di variabel lingkungan (mis.,https://api.eu.cycode.comdanhttps://app.eu.cycode.com).
Ikuti panduan ini untuk mengonfigurasi server MCP di VS Code/GitHub Copilot Anda. Perlu diingat bahwa di settings.json, ada objek mcp yang berisi sub-objek servers bersarang, bukan objek mcpServers mandiri.
Untuk transport stdio (eksekusi langsung):
{
"mcpServers": {
"cycode": {
"command": "cycode",
"args": ["mcp"],
"env": {
"CYCODE_CLIENT_ID": "your-cycode-id",
"CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
"CYCODE_API_URL": "https://api.cycode.com",
"CYCODE_APP_URL": "https://app.cycode.com"
}
}
}
}
Untuk transport stdio dengan instalasi pipx:
{
"mcpServers": {
"cycode": {
"command": "pipx",
"args": ["run", "cycode", "mcp"],
"env": {
"CYCODE_CLIENT_ID": "your-cycode-id",
"CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
"CYCODE_API_URL": "https://api.cycode.com",
"CYCODE_APP_URL": "https://app.cycode.com"
}
}
}
}
Untuk transport stdio dengan instalasi uvx:
{
"mcpServers": {
"cycode": {
"command": "uvx",
"args": ["cycode", "mcp"],
"env": {
"CYCODE_CLIENT_ID": "your-cycode-id",
"CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
"CYCODE_API_URL": "https://api.cycode.com",
"CYCODE_APP_URL": "https://app.cycode.com"
}
}
}
}
Untuk transport SSE (Server-Sent Events):
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8000/sse"
}
}
}
Untuk transport SSE pada port kustom:
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8080/sse"
}
}
}
Untuk transport HTTP streamable:
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8000/mcp"
}
}
}
Menjalankan Server MCP di Latar Belakang
Untuk transport SSE (mulai server terlebih dahulu, lalu konfigurasi klien):
# Start the MCP server in the background
cycode mcp -t sse -p 8000 &
# Configure in mcp.json
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8000/sse"
}
}
}
Untuk transport HTTP streamable:
# Start the MCP server in the background
cycode mcp -t streamable-http -H 127.0.0.2 -p 9000 &
# Configure in mcp.json
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.2:9000/mcp"
}
}
}
Konfigurasi Lanjutan
Sertifikat Kustom dan Timeout (Lingkungan Proxy)
Jika organisasi Anda menggunakan proxy perusahaan atau bundel CA kustom untuk inspeksi HTTPS, Anda perlu memberi tahu Cycode CLI (dan tumpukan TLS Python yang mendasarinya) di mana menemukan bundel sertifikat tepercaya. Anda juga dapat meningkatkan timeout panggilan alat MCP jika pemindaian terpotong.
| Variabel Lingkungan | Deskripsi |
|---|---|
REQUESTS_CA_BUNDLE | Jalur ke file bundel CA kustom (.pem atau .crt). Digunakan oleh pustaka requests untuk semua panggilan HTTPS yang dilakukan oleh Cycode CLI. |
SSL_CERT_FILE | Jalur ke file bundel CA kustom. Digunakan oleh modul ssl tingkat rendah Python. Atur ini bersama REQUESTS_CA_BUNDLE untuk cakupan penuh. |
MCP_TOOL_TIMEOUT | Timeout (dalam detik) yang ditunggu oleh klien MCP seperti Claude dan GitHub Copilot untuk menyelesaikan panggilan alat. Tingkatkan ini jika pemindaian yang berjalan lama terpotong sebelum selesai. |
[!TIP] Atur
REQUESTS_CA_BUNDLEdanSSL_CERT_FILEke jalur bundel CA yang sama.REQUESTS_CA_BUNDLEmencakup lapisan HTTP;SSL_CERT_FILEmencakup lapisan TLS tingkat rendah. Hanya menggunakan salah satu mungkin masih menyebabkan kesalahan sertifikat di beberapa lingkungan.
Contoh konfigurasi mcp.json dengan sertifikat kustom dan timeout yang lebih lama:
{
"mcpServers": {
"cycode": {
"command": "cycode",
"args": ["mcp"],
"env": {
"REQUESTS_CA_BUNDLE": "/path/to/your/corporate-ca-bundle.pem",
"SSL_CERT_FILE": "/path/to/your/corporate-ca-bundle.pem",
"MCP_TOOL_TIMEOUT": "1800"
}
}
}
}
[!NOTE] Server MCP memerlukan autentikasi CLI Cycode yang tepat untuk berfungsi. Pastikan Anda telah melakukan autentikasi menggunakan
cycode authatau mengonfigurasi kredensial Anda sebelum memulai server MCP.
Pra-otorisasi Alat untuk Subagen (Claude Code)
Ketika Claude Code mendelegasikan pekerjaan ke subagen latar belakang (mis. untuk menjalankan pemindaian secara paralel), subagen tersebut tidak dapat menampilkan prompt izin interaktif. Jika alat Cycode belum disetujui sebelumnya, pemindaian akan gagal secara diam-diam dalam konteks subagen.
Untuk pra-otorisasi alat MCP Cycode agar berfungsi di semua konteks termasuk subagen, tambahkan ke daftar allowedTools di pengaturan Claude Code Anda (~/.claude/settings.json):
{
"allowedTools": [
"mcp__cycode__cycode_secret_scan",
"mcp__cycode__cycode_sca_scan",
"mcp__cycode__cycode_iac_scan",
"mcp__cycode__cycode_sast_scan",
"mcp__cycode__cycode_status"
]
}
Setelah ditambahkan, Claude Code tidak akan meminta persetujuan saat alat ini dipanggil, dan mereka akan bekerja dengan benar di dalam subagen.
Pemecahan Masalah MCP
Jika Anda mengalami masalah dengan server MCP, Anda dapat mengaktifkan pencatatan debug untuk mendapatkan informasi lebih rinci tentang apa yang terjadi. Ada dua cara untuk mengaktifkan pencatatan debug:
- Menggunakan flag
-vatau--verbose:
cycode -v mcp
- Menggunakan variabel lingkungan
CYCODE_CLI_VERBOSE:
CYCODE_CLI_VERBOSE=1 cycode mcp
Log debug akan menampilkan informasi rinci tentang:
- Startup dan konfigurasi server
- Percobaan dan status koneksi
- Eksekusi dan hasil alat
- Setiap kesalahan atau peringatan yang terjadi
Informasi ini dapat membantu ketika:
- Mendiagnosis masalah koneksi
- Memahami mengapa alat tertentu tidak berfungsi
- Mengidentifikasi masalah autentikasi
- Men-debug masalah spesifik transport
Konfigurasi MCP
Perintah Platform [BETA]
[!WARNING] Perintah
platformdalam tahap beta. Perintah, argumen, dan format output dihasilkan secara dinamis dari spesifikasi API Cycode dan dapat berubah antar rilis tanpa pemberitahuan. Jangan mengandalkannya dalam otomatisasi produksi dulu.
Perintah cycode platform mengekspos API baca platform Cycode sebagai perintah CLI. Ini mengelompokkan endpoint berdasarkan sumber daya (mis. projects, violations, workflows) dan mengubah parameter setiap endpoint menjadi argumen CLI bertipe dan flag --option.
cycode platform projects list --page-size 50
cycode platform violations count
cycode platform workflows view <workflow-id>
Spesifikasi OpenAPI diambil dari API Cycode pada penggunaan pertama dan di-cache di ~/.cycode/openapi-spec.json selama 24 jam. Perintah yang tidak terkait (cycode scan, cycode status, dll.) tidak memicu pengambilan.
[!NOTE] Anda harus diautentikasi (
cycode authatau variabel lingkunganCYCODE_CLIENT_ID/CYCODE_CLIENT_SECRET) agarcycode platformdapat menemukan dan menjalankan perintah. Perintah CLI Cycode lainnya berfungsi tanpa autentikasi.
Menemukan Perintah
Karena perintah dihasilkan dari spesifikasi, sumber kebenaran untuk apa yang tersedia adalah --help:
cycode platform --help # list all resource groups
cycode platform projects --help # list actions on a resource
cycode platform projects list --help # list options/arguments for an action
Contoh Platform
# List projects with pagination
cycode platform projects list --page-size 25
# View a single project by ID
cycode platform projects view <project-id>
# Count violations across the tenant
cycode platform violations count
# Filter using query parameters (see `--help` for what each endpoint supports)
cycode platform violations list --severity CRITICAL
Semua output adalah JSON secara default — salurkan melalui jq untuk pemfilteran ad-hoc:
cycode platform projects list --page-size 100 | jq '.items[].name'
Catatan & Batasan Platform
- Hanya-baca saat ini. Hanya endpoint
GETyang diekspos dalam beta ini. - Didorong oleh spesifikasi. Menambahkan endpoint baru ke API akan memunculkannya secara otomatis saat cache berikutnya disegarkan.
- Tidak ada spesifikasi yang dibundel. Pemanggilan
cycode platformpertama setelah instalasi (atau setelah cache 24 jam kedaluwarsa) melakukan pengambilan jaringan. Pada koneksi lambat, panggilan pertama ini mungkin memakan waktu beberapa detik; panggilan berikutnya hampir instan hingga cache kedaluwarsa. - Timpa TTL cache dengan
CYCODE_SPEC_CACHE_TTL=<seconds>.
Pagar Pembatas AI [BETA]
AI Guardrails memasang hook ke agen coding AI yang didukung (Claude Code, Cursor, Copilot, Codex) sehingga prompt, file yang dibaca agen, dan argumen alat MCP dipindai untuk mendeteksi rahasia sebelum mencapai model.
Data yang Dikumpulkan oleh AI Guardrails
Pemindaian terjadi di sisi server, sehingga konten yang dipindai meninggalkan mesin: teks prompt, isi file yang dibaca agen, dan argumen alat MCP dikirim ke tenant Cycode Anda untuk diperiksa rahasianya.
Setiap peristiwa juga dilaporkan dengan konteks tentang pengembang dan mesin, sehingga temuan dapat diatribusikan ke perangkat dan pengguna asalnya. Sebagian dari ini adalah data pribadi:
- Pengidentifikasi perangkat — nama host mesin dan nomor seri perangkat keras.
- Pengidentifikasi pengguna — alamat email pengguna yang masuk ke agen coding AI, dan nama pengguna sistem operasi lokal.
- Detail lingkungan — sistem operasi dan versinya, agen AI, versinya dan model yang digunakan, isi file konfigurasi MCP agen, dan plugin yang diaktifkan.
Nomor seri perangkat keras di-cache dalam file sementara lokal, hanya dapat dibaca oleh pengguna yang menjalankan perintah, sehingga pemanggilan hook berulang tidak perlu menanyakan ulang perangkat keras.
Jika pengumpulan data ini tidak dapat diterima di lingkungan Anda, jangan pasang hook guardrails
(cycode ai-guardrails uninstall menghapus hook yang sudah terpasang).
Perintah Scan
Menjalankan Scan
Aplikasi CLI Cycode menawarkan beberapa jenis pemindaian sehingga Anda dapat memilih opsi yang paling sesuai dengan kasus Anda. Berikut adalah opsi dan perintah yang tersedia saat ini:
| Opsi | Deskripsi |
|---|---|
-t, --scan-type [secret|iac|sca|sast] | Tentukan pemindaian yang ingin Anda jalankan (secret/iac/sca/sast), defaultnya adalah secret. |
--show-secret BOOLEAN | Tampilkan rahasia dalam teks biasa. Lihat bagian Tampilkan/Sembunyikan Rahasia untuk detail lebih lanjut. |
--soft-fail BOOLEAN | Jalankan pemindaian tanpa gagal, selalu kembalikan kode status non-error. Lihat bagian Soft Fail untuk detail lebih lanjut. |
--severity-threshold [INFO|LOW|MEDIUM|HIGH|CRITICAL] | Hanya tampilkan pelanggaran pada level yang ditentukan atau lebih tinggi. |
--sca-scan | Tentukan pemindaian SCA yang ingin Anda jalankan (package-vulnerabilities/license-compliance). Defaultnya adalah keduanya. |
--monitor | Jika ditentukan, hasil pemindaian akan dicatat di Cycode. |
--cycode-report | Tampilkan tautan ke laporan pemindaian di platform Cycode pada output konsol. |
--no-restore | Jika ditentukan, Cycode tidak akan menjalankan perintah restore. Ini HANYA akan memindai dependensi langsung! |
--stop-on-error | Batalkan pemindaian jika terjadi kegagalan pengumpulan file atau pemulihan dependensi, alih-alih melewati file yang gagal dan melanjutkan. |
--gradle-all-sub-projects | Jalankan perintah gradle restore untuk semua sub proyek. Ini harus dijalankan dari |
--maven-settings-file | Hanya untuk Maven, memungkinkan penggunaan file settings.xml kustom saat memindai dependensi |
--help | Tampilkan opsi untuk perintah yang diberikan. |
| Perintah | Deskripsi |
|---|---|
| commit-history | Pindai riwayat commit atau lakukan pemindaian diff antara commit tertentu |
| path | Pindai file di jalur yang diberikan dalam perintah |
| pre-commit | Gunakan perintah ini untuk memindai konten yang belum di-commit |
| repository | Pindai repositori git termasuk riwayatnya |
Opsi
Opsi Severity
Untuk membatasi hasil pemindaian ke ambang batas keparahan tertentu, argumen --severity-threshold dapat ditambahkan ke perintah scan.
Misalnya, perintah berikut akan memindai repositori untuk pelanggaran kebijakan yang memiliki tingkat keparahan Medium atau lebih tinggi:
cycode scan --severity-threshold MEDIUM repository ~/home/git/codebase
Opsi Monitor
[!NOTE] Opsi ini hanya tersedia untuk pemindaian SCA.
Untuk mendorong hasil pemindaian yang terkait dengan kebijakan SCA yang ditemukan dalam pemindaian tipe SCA ke Cycode, tambahkan argumen --monitor ke perintah scan.
Misalnya, perintah berikut akan memindai repositori untuk pelanggaran kebijakan SCA dan mendorongnya ke platform Cycode:
cycode scan -t sca --monitor repository ~/home/git/codebase
Opsi Cycode Report
Untuk setiap pemindaian yang dilakukan menggunakan CLI Cycode, laporan dibuat secara otomatis dan hasilnya dikirim ke Cycode. Hasil ini terkait dengan kebijakan yang relevan (misalnya, kebijakan SCA untuk pemindaian Repositori) dalam platform Cycode.
Untuk mencetak URL langsung ke laporan Cycode ini di output CLI Anda setelah pemindaian selesai, tambahkan argumen --cycode-report ke perintah scan Anda.
cycode scan --cycode-report repository ~/home/git/codebase
Semua hasil pemindaian dari CLI akan muncul di bagian CLI Logs Cycode. Jika Anda menyertakan flag --cycode-report dalam perintah Anda, tautan langsung ke laporan spesifik akan ditampilkan di terminal Anda setelah hasil pemindaian.
[!WARNING] Anda harus memiliki peran
owneratauadmindi Cycode untuk melihat halaman ini.

Halaman laporan akan terlihat seperti di bawah ini:

Opsi Package Vulnerabilities
[!NOTE] Opsi ini hanya tersedia untuk pemindaian SCA.
Untuk memindai kerentanan paket tertentu dari repositori lokal Anda, tambahkan argumen --sca-scan package-vulnerabilities setelah opsi -t sca atau --scan-type sca.
Pada contoh sebelumnya, jika Anda hanya ingin menjalankan pemindaian SCA pada kerentanan paket, Anda dapat menjalankan yang berikut:
cycode scan -t sca --sca-scan package-vulnerabilities repository ~/home/git/codebase
Opsi License Compliance
[!NOTE] Opsi ini hanya tersedia untuk pemindaian SCA.
Untuk memindai cabang tertentu dari repositori lokal Anda, tambahkan argumen --sca-scan license-compliance diikuti dengan nama cabang yang ingin Anda pindai.
Pada contoh sebelumnya, jika Anda hanya ingin memindai cabang bernama dev, Anda dapat menjalankan yang berikut:
cycode scan -t sca --sca-scan license-compliance repository ~/home/git/codebase -b dev
Opsi Lock Restore
[!NOTE] Opsi ini hanya tersedia untuk pemindaian SCA.
Saat menjalankan pemindaian SCA, CLI Cycode secara otomatis mencoba memulihkan (menghasilkan) file kunci dependensi untuk setiap file manifes yang didukung yang ditemukannya. Ini memungkinkan pemindaian dependensi transitif, bukan hanya yang tercantum langsung di manifes. Untuk melewati langkah ini dan hanya memindai dependensi langsung, gunakan flag --no-restore.
Ekosistem berikut mendukung pemulihan file kunci otomatis:
| Ekosistem | File manifes | File kunci yang dihasilkan | Alat yang dipanggil (saat file kunci tidak ada) |
|---|---|---|---|
| npm | package.json | package-lock.json | npm install --package-lock-only --ignore-scripts --no-audit |
| Yarn | package.json | yarn.lock | yarn install --ignore-scripts |
| pnpm | package.json | pnpm-lock.yaml | pnpm install --ignore-scripts |
| Deno | deno.json / deno.jsonc | deno.lock | (hanya baca file kunci yang ada) |
| Go | go.mod | go.mod.graph | go list -m -json all + go mod graph |
| Maven | pom.xml | bcde.mvndeps | mvn dependency:tree |
| Gradle | build.gradle / build.gradle.kts | gradle-dependencies-generated.txt | gradle dependencies -q --console plain |
| SBT | build.sbt | build.sbt.lock | sbt dependencyLockWrite |
| NuGet | *.csproj | packages.lock.json | dotnet restore --use-lock-file |
| Ruby | Gemfile | Gemfile.lock | bundle --quiet |
| Poetry | pyproject.toml | poetry.lock | poetry lock |
| pip | pyproject.toml / requirements.txt | pylock.toml | pip lock . / pip lock -r requirements.txt -o pylock.toml |
| Pipenv | Pipfile | Pipfile.lock | pipenv lock |
| PHP Composer | composer.json | composer.lock | composer update --no-cache --no-install --no-scripts --ignore-platform-reqs |
Jika file kunci sudah ada bersama manifes, Cycode membacanya langsung tanpa menjalankan perintah instalasi apa pun.
Prasyarat SBT: Plugin sbt-dependency-lock harus diinstal. Tambahkan baris berikut ke project/plugins.sbt:
addSbtPlugin("software.purpledragon" % "sbt-dependency-lock" % "1.5.1")
Opsi Stop on Error
Secara default, Cycode terus memindai meskipun file tidak dapat dibaca (misalnya karena kesalahan izin) atau file kunci dependensi tidak dapat dihasilkan selama pemindaian SCA. Item yang gagal dilewati dengan peringatan dan pemindaian dilanjutkan dengan file yang tersisa.
Gunakan --stop-on-error untuk mengubah perilaku ini: pemindaian dibatalkan segera pada kegagalan pertama tersebut dan melaporkan kesalahan.
cycode scan -t sca --stop-on-error path ~/home/git/codebase
Ini berguna dalam pipeline CI di mana kegagalan diam-diam akan menghasilkan hasil pemindaian yang tidak lengkap. Saat --stop-on-error dipicu, Anda dapat memperbaiki masalah yang mendasarinya atau, khusus untuk kegagalan pemulihan SCA, tambahkan --no-restore untuk melewati pembuatan file kunci dan hanya memindai dependensi langsung.
Saat --stop-on-error digunakan, CLI membedakan antara kesalahan pemindaian dan pelanggaran kebijakan melalui kode keluar:
| Kode keluar | Arti |
|---|---|
0 | Pemindaian selesai tanpa pelanggaran |
1 | Pemindaian selesai dan ditemukan pelanggaran |
2 | Pemindaian dibatalkan karena kesalahan (hanya saat --stop-on-error diatur) |
Pemindaian Repositori
Pemindaian repositori memeriksa seluruh repositori lokal untuk setiap rahasia yang terekspos atau kesalahan konfigurasi yang tidak aman. Jenis pemindaian yang lebih holistik ini melihat semuanya: status terkini repositori Anda dan riwayat commit-nya. Ini akan mencari tidak hanya rahasia yang saat ini terekspos di dalam repositori tetapi juga rahasia yang sebelumnya dihapus.
Untuk menjalankan pemindaian repositori penuh, jalankan yang berikut:
cycode scan repository {{path}}
Misalnya, jika Anda ingin memindai repositori yang disimpan di ~/home/git/codebase, Anda dapat menjalankan yang berikut:
cycode scan repository ~/home/git/codebase
Opsi berikut tersedia untuk digunakan dengan perintah ini:
| Opsi | Deskripsi |
|---|---|
-b, --branch TEXT | Cabang yang akan dipindai, jika tidak diatur, memindai cabang default |
Opsi Branch
Untuk memindai cabang tertentu dari repositori lokal Anda, tambahkan argumen -b (sebagai alternatif, --branch) diikuti dengan nama cabang yang ingin Anda pindai.
Berdasarkan contoh sebelumnya, jika Anda hanya ingin memindai cabang bernama dev, Anda dapat menjalankan yang berikut:
cycode scan repository ~/home/git/codebase -b dev
Pemindaian Path
Pemindaian path memeriksa direktori lokal tertentu dan semua isinya, alih-alih hanya berfokus pada repositori GIT.
Untuk menjalankan pemindaian direktori, jalankan yang berikut:
cycode scan path {{path}}
Misalnya, pertimbangkan skenario di mana Anda ingin memindai direktori yang terletak di ~/home/git/codebase. Anda kemudian dapat menjalankan yang berikut:
cycode scan path ~/home/git/codebase
Pemindaian Terraform Plan
CLI Cycode mendukung pemindaian rencana Terraform (mendukung Terraform 0.12 dan yang lebih baru)
File rencana Terraform harus dalam format JSON (memiliki ekstensi .json)
Jika Anda hanya memiliki file konfigurasi, Anda dapat membuat rencana dengan melakukan hal berikut:
-
Inisialisasi direktori kerja yang berisi file konfigurasi Terraform:
terraform init -
Buat rencana eksekusi Terraform dan simpan output biner:
terraform plan -out={tfplan_output} -
Ubah file output biner menjadi JSON yang dapat dibaca:
terraform show -json {tfplan_output} > {tfplan}.json -
Pindai
{tfplan}.jsonAnda dengan CLI Cycode:cycode scan -t iac path ~/PATH/TO/YOUR/{tfplan}.json
Pemindaian Riwayat Komit
[!NOTE] Pemindaian Riwayat Komit tidak tersedia untuk pemindaian IaC.
Perintah pemindaian riwayat komit menyediakan dua kemampuan utama:
- Pemindaian Riwayat Penuh: Menganalisis semua komit dalam riwayat repositori
- Pemindaian Diff: Hanya memindai perubahan antara komit tertentu
Pemindaian rahasia dapat menganalisis semua komit dalam riwayat repositori karena rahasia yang diperkenalkan dan kemudian dihapus masih dapat bocor atau terekspos. Untuk pemindaian SCA dan SAST, perintah riwayat komit berfokus pada pemindaian perbedaan/perubahan antar komit, menjadikannya sempurna untuk tinjauan pull request dan pemindaian inkremental.
Pemindaian riwayat komit memeriksa riwayat komit repositori Git Anda dan dapat digunakan baik untuk analisis historis komprehensif maupun pemindaian diff yang ditargetkan pada perubahan tertentu.
Untuk menjalankan pemindaian riwayat komit, jalankan perintah berikut:
cycode scan commit-history {{path}}
Sebagai contoh, pertimbangkan skenario di mana Anda ingin memindai riwayat komit untuk repositori yang disimpan di ~/home/git/codebase. Anda kemudian dapat menjalankan perintah berikut:
cycode scan commit-history ~/home/git/codebase
Opsi berikut tersedia untuk digunakan dengan perintah ini:
| Opsi | Deskripsi |
|---|---|
-r, --commit-range TEXT | Pindai rentang komit di repositori git ini, secara default cycode memindai semua riwayat komit (contoh: HEAD~1) |
Opsi Rentang Komit (Pemindaian Diff)
Opsi rentang komit mengaktifkan pemindaian diff – hanya memindai perubahan antara komit tertentu alih-alih seluruh riwayat repositori. Ini sangat berguna untuk:
- Validasi pull request: Hanya memindai perubahan yang diperkenalkan dalam PR
- Pemindaian CI/CD inkremental: Fokus pada perubahan terbaru daripada seluruh basis kode
- Tinjauan cabang fitur: Membandingkan perubahan terhadap cabang main/master
- Optimasi kinerja: Pemindaian lebih cepat dengan membatasi cakupan pada perubahan yang relevan
Sintaks Rentang Komit
Opsi --commit-range (-r) mendukung sintaks revisi Git standar:
| Sintaks | Deskripsi | Contoh |
|---|---|---|
commit1..commit2 | Perubahan dari komit1 ke komit2 | abc123..def456 |
commit1...commit2 | Perubahan di komit2 yang tidak ada di komit1 | main...feature-branch |
commit | Perubahan dari komit ke HEAD | HEAD~1 |
branch1..branch2 | Perubahan dari cabang1 ke cabang2 | main..feature-branch |
Contoh Pemindaian Diff
Pindai perubahan di komit terakhir:
cycode scan commit-history -r HEAD~1 ~/home/git/codebase
Pindai perubahan antara dua komit tertentu:
cycode scan commit-history -r abc123..def456 ~/home/git/codebase
Pindai perubahan di cabang fitur Anda dibandingkan dengan main:
cycode scan commit-history -r main..HEAD ~/home/git/codebase
Pindai perubahan antara main dan cabang fitur:
cycode scan commit-history -r main..feature-branch ~/home/git/codebase
Pindai semua perubahan dalam 3 komit terakhir:
cycode scan commit-history -r HEAD~3..HEAD ~/home/git/codebase
[!TIP] Untuk pipeline CI/CD, Anda dapat menggunakan variabel lingkungan seperti
${{ github.event.pull_request.base.sha }}..${{ github.sha }}(GitHub Actions) atau$CI_MERGE_REQUEST_TARGET_BRANCH_SHA..$CI_COMMIT_SHA(GitLab CI) untuk hanya memindai perubahan PR/MR.
Pemindaian Pra-Komit
Pemindaian pra-komit secara otomatis mengidentifikasi masalah apa pun sebelum Anda mengkomit perubahan ke repositori Anda. Tidak perlu menjalankan pemindaian ini secara manual; konfigurasikan hook pra-komit seperti yang dijelaskan di bagian Instalasi panduan ini.
Setelah menginstal hook pra-komit, Anda mungkin sesekali ingin melewatkan pemindaian selama komit tertentu. Untuk melakukannya, tambahkan yang berikut ini ke perintah git Anda untuk melewatkan pemindaian untuk satu komit:
SKIP=cycode git commit -m <your commit message>`
Pemindaian Pra-Push
Pemindaian pra-push secara otomatis mengidentifikasi masalah apa pun sebelum Anda mendorong perubahan ke repositori jarak jauh. Hook ini berjalan di sisi klien dan hanya memindai komit yang akan didorong, menjadikannya efisien untuk menangkap masalah sebelum mencapai repositori jarak jauh.
[!NOTE] Hook pra-push tidak tersedia untuk pemindaian IaC.
Hook pra-push terintegrasi dengan kerangka kerja pra-komit dan dapat dikonfigurasi untuk berjalan sebelum operasi git push apa pun.
Menginstal Hook Pra-Push
Untuk menyiapkan hook pra-push menggunakan kerangka kerja pra-komit:
-
Instal kerangka kerja pra-komit (jika belum terinstal):
pip3 install pre-commit -
Buat atau perbarui file
.pre-commit-config.yamlAnda untuk menyertakan hook pra-push:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.5.0 hooks: - id: cycode-pre-push stages: [pre-push] -
Untuk beberapa jenis pemindaian, gunakan konfigurasi ini:
repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.5.0 hooks: - id: cycode-pre-push # Secrets scan stages: [pre-push] - id: cycode-sca-pre-push # SCA scan stages: [pre-push] - id: cycode-sast-pre-push # SAST scan stages: [pre-push] -
Instal hook pra-push:
pre-commit install --hook-type pre-pushInstalasi yang berhasil akan menghasilkan pesan:
Pre-push installed at .git/hooks/pre-push. -
Jaga hook pra-push tetap terbarui:
pre-commit autoupdate
Cara Kerja Pemindaian Pra-Push
Hook pra-push:
- Menerima informasi tentang komit apa yang sedang didorong
- Menghitung rentang komit yang sesuai untuk dipindai
- Untuk cabang baru: memindai semua komit dari basis penggabungan dengan cabang default
- Untuk cabang yang sudah ada: hanya memindai komit baru sejak push terakhir
- Menjalankan pemindaian komprehensif yang sama seperti mode pemindaian Cycode lainnya
Deteksi Cabang Default Cerdas
Hook pra-push secara cerdas mendeteksi cabang default untuk perhitungan basis penggabungan menggunakan urutan prioritas ini:
- Variabel Lingkungan:
CYCODE_DEFAULT_BRANCH- memungkinkan penggantian manual - Git Remote HEAD: Menggunakan
git symbolic-ref refs/remotes/origin/HEADuntuk mendeteksi cabang default jarak jauh yang sebenarnya - Git Remote Info: Jatuh kembali ke
git remote show originjika symbolic-ref gagal - Fallback Hardcoded: Menggunakan nama cabang default umum (origin/main, origin/master, main, master)
Mengatur Cabang Default Kustom:
export CYCODE_DEFAULT_BRANCH=origin/develop
Deteksi cerdas ini memastikan hook pra-push bekerja dengan benar terlepas dari apakah repositori Anda menggunakan main, master, develop, atau nama cabang default lainnya.
Melewatkan Pemindaian Pra-Push
Untuk melewatkan pemindaian pra-push untuk operasi push tertentu, gunakan:
SKIP=cycode-pre-push git push
Atau untuk melewatkan semua hook pra-push:
git push --no-verify
[!TIP] Hook pra-push dipicu pada perintah
git pushdan hanya memindai komit yang akan didorong, menjadikannya lebih efisien daripada memindai seluruh repositori.
Mengecualikan Jalur Dari Pemindaian
Anda dapat menggunakan file .cycodeignore untuk memberi tahu CLI Cycode file dan direktori mana yang akan dikecualikan dari pemindaian.
Ini berfungsi seperti file .gitignore. Ini membantu Anda memfokuskan pemindaian pada kode yang relevan dan mencegah jalur tertentu memicu pelanggaran secara lokal.
Cara Kerjanya
- Buat file bernama
.cycodeignoredi folder kerja Anda. - Daftarkan file dan direktori yang ingin Anda kecualikan, menggunakan pola yang sama seperti
.gitignore. - Tempatkan file ini di direktori tempat Anda berencana menjalankan perintah pemindaian cycode.
[!WARNING]
- File tidak valid: Jika file
.cycodeignoreberisi kesalahan sintaks, pemindaian CLI akan gagal dan mengembalikan kesalahan.- Mengabaikan jalur vs. pelanggaran: File ini untuk mengecualikan jalur. Ini berbeda dari kemampuan CLI untuk mengabaikan pelanggaran tertentu (misalnya, dengan menggunakan flag --ignore-violation).
Pemindai yang Didukung
- SAST
- IaC (segera hadir)
- SCA (segera hadir)
Hasil Pemindaian
Setiap pemindaian akan selesai dengan pesan yang menyatakan apakah ada masalah yang ditemukan atau tidak.
Jika tidak ada masalah yang ditemukan, pemindaian berakhir dengan pesan sukses berikut:
Good job! No issues were found!!! 👏👏👏
Jika masalah ditemukan, kartu pelanggaran akan muncul setelah selesai. Dalam hal ini Anda harus meninjau file yang dimaksud untuk baris spesifik yang disorot oleh pesan hasil. Terapkan perubahan apa pun yang diperlukan untuk menyelesaikan masalah, lalu jalankan pemindaian lagi.
Tampilkan/Sembunyikan Rahasia
Dalam contoh di bawah, sebuah rahasia ditemukan di file secret_test, yang terletak di subfolder cli. Bagian kedua dari pesan menunjukkan baris spesifik tempat rahasia muncul, yang dalam hal ini adalah nilai yang ditetapkan ke googleApiKey.
Perhatikan bagaimana contoh tersebut mengaburkan nilai rahasia sebenarnya, mengganti sebagian besar rahasia dengan tanda bintang. Pemindaian mengaburkan rahasia secara default, tetapi Anda dapat secara opsional menonaktifkan fitur ini untuk melihat rahasia lengkap (dengan asumsi mesin tempat Anda melihat hasil pemindaian cukup aman dari mata-mata).
Untuk menonaktifkan pengaburan rahasia, tambahkan argumen --show-secret ke jenis pemindaian apa pun.
Dalam contoh berikut, Pemindaian Jalur dijalankan terhadap subdirektori cli dengan opsi diaktifkan untuk menampilkan rahasia apa pun yang ditemukan secara lengkap:
cycode scan --show-secret path ./cli
Hasilnya kemudian tidak akan dikaburkan.
Soft Fail
Dalam operasi normal, CLI akan mengembalikan kode keluar 1 ketika masalah ditemukan dalam hasil pemindaian. Tergantung pada pengaturan CI/CD Anda, ini biasanya akan mengakibatkan kegagalan keseluruhan. Jika Anda tidak ingin ini terjadi, Anda dapat menggunakan fitur soft fail.
Dengan menambahkan opsi --soft-fail ke jenis pemindaian apa pun, kode keluar akan dipaksa menjadi 0 terlepas dari apakah ada hasil yang ditemukan.
Contoh Hasil Pemindaian
Contoh Hasil Rahasia
╭─────────────────────────────────────────────────────────────── Hardcoded generic-password is used ───────────────────────────────────────────────────────────────╮
│ Violation 12 of 12 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Severity 🟠 MEDIUM │ │ 34 }; │ │
│ │ In file /Users/cycodemacuser/NodeGoat/test/s │ │ 35 │ │
│ │ ecurity/profile-test.js │ │ 36 var sutUserName = "user1"; │ │
│ │ Secret SHA b4ea3116d868b7c982ee6812cce61727856b │ │ ❱ 37 var sutUserPassword = "Us*****23"; │ │
│ │ 802b3063cd5aebe7d796988552e0 │ │ 38 │ │
│ │ Rule ID 68b6a876-4890-4e62-9531-0e687223579f │ │ 39 chrome.setDefaultService(service); │ │
│ ╰────────────────────────────────────────────────────╯ │ 40 │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ A generic secret or password is an authentication token used to access a computer or application and is assigned to a password variable. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Contoh Hasil IaC
╭──────────── Enable Content Encoding through the attribute 'MinimumCompressionSize'. This value should be greater than -1 and smaller than 10485760. ─────────────╮
│ Violation 45 of 110 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Severity 🟠 MEDIUM │ │ 20 BinaryMediaTypes: │ │
│ │ In file ...ads-copy/iac/cft/api-gateway/ap │ │ 21 - !Ref binaryMediaType1 │ │
│ │ i-gateway-rest-api/deploy.yml │ │ 22 - !Ref binaryMediaType2 │ │
│ │ IaC Provider CloudFormation │ │ ❱ 23 MinimumCompressionSize: -1 │ │
│ │ Rule ID 33c4b90c-3270-4337-a075-d3109c141b │ │ 24 EndpointConfiguration: │ │
│ │ 53 │ │ 25 Types: │ │
│ ╰────────────────────────────────────────────────────╯ │ 26 - EDGE │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ This policy validates the proper configuration of content encoding in AWS API Gateway. Specifically, the policy checks for the attribute │ │
│ │ 'minimum_compression_size' in API Gateway REST APIs. Correct configuration of this attribute is important for enabling content encoding of API responses for │ │
│ │ improved API performance and reduced payload sizes. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Contoh Hasil SCA
╭─────────────────────────────────────────────────────── [CVE-2019-10795] Prototype Pollution in undefsafe ────────────────────────────────────────────────────────╮
│ Violation 172 of 195 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Severity 🟠 MEDIUM │ │ 26758 "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", │ │
│ │ In file /Users/cycodemacuser/Node │ │ 26759 "dev": true │ │
│ │ Goat/package-lock.json │ │ 26760 }, │ │
│ │ CVEs CVE-2019-10795 │ │ ❱ 26761 "undefsafe": { │ │
│ │ Package undefsafe │ │ 26762 "version": "2.0.2", │ │
│ │ Version 2.0.2 │ │ 26763 "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", │ │
│ │ First patched version Not fixed │ │ 26764 "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", │ │
│ │ Dependency path nodemon 1.19.1 -> │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │ undefsafe 2.0.2 │ │
│ │ Rule ID 9c6a8911-e071-4616-86db-4 │ │
│ │ 943f2e1df81 │ │
│ ╰────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ undefsafe before 2.0.3 is vulnerable to Prototype Pollution. The 'a' function could be tricked into adding or modifying properties of Object.prototype using │ │
│ │ a __proto__ payload. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Contoh Hasil SAST
╭───────────────────────────────────────────── [CWE-208: Observable Timing Discrepancy] Observable Timing Discrepancy ─────────────────────────────────────────────╮
│ Violation 24 of 49 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Severity 🟠 MEDIUM │ │ 173 " including numbers, lowercase and uppercase letters."; │ │
│ │ In file /Users/cycodemacuser/NodeGoat/app │ │ 174 return false; │ │
│ │ /routes/session.js │ │ 175 } │ │
│ │ CWE CWE-208 │ │ ❱ 176 if (password !== verify) { │ │
│ │ Subcategory Security │ │ 177 errors.verifyError = "Password must match"; │ │
│ │ Language js │ │ 178 return false; │ │
│ │ Security Tool Bearer (Powered by Cycode) │ │ 179 } │ │
│ │ Rule ID 19fbca07-a8e7-4fa6-92ac-a36d15509 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │ fa9 │ │
│ ╰────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Observable Timing Discrepancy occurs when the time it takes for certain operations to complete can be measured and observed by attackers. This vulnerability │ │
│ │ is particularly concerning when operations involve sensitive information, such as password checks or secret comparisons. If attackers can analyze how long │ │
│ │ these operations take, they might be able to deduce confidential details, putting your data at risk. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Panduan Remediasi Kustom Perusahaan
Jika perusahaan Anda telah menetapkan panduan remediasi kustom dalam kebijakan yang relevan melalui portal Cycode, Anda akan melihat bidang untuk "Panduan Perusahaan" yang berisi panduan remediasi yang Anda tambahkan. Perhatikan bahwa jika Anda belum menambahkan panduan perusahaan apa pun, bidang ini tidak akan muncul di alat CLI.
Mengabaikan Hasil Pemindaian
Aturan pengabaian dapat ditambahkan untuk mengabaikan nilai rahasia tertentu, nilai SHA512 tertentu, jalur tertentu, dan ID aturan rahasia dan IaC Cycode tertentu. Ini akan menyebabkan pemindaian tidak memperingatkan nilai-nilai ini. Aturan pengabaian ditulis dan disimpan secara lokal di file ./.cycode/config.yaml.
[!WARNING] Menambahkan nilai untuk diabaikan harus dilakukan dengan pertimbangan cermat terhadap nilai, jalur, dan kebijakan untuk memastikan bahwa pemindaian akan mendeteksi positif sejati.
Berikut adalah opsi yang tersedia untuk perintah cycode ignore:
| Opsi | Deskripsi |
|---|---|
--by-value TEXT | Abaikan nilai tertentu saat memindai secret. Lihat Mengabaikan Nilai Secret untuk detail lebih lanjut. |
--by-sha TEXT | Abaikan representasi SHA512 tertentu dari sebuah string saat memindai secret. Lihat Mengabaikan Nilai SHA Secret untuk detail lebih lanjut. |
--by-path TEXT | Hindari pemindaian jalur tertentu. Perlu menentukan tipe pemindaian. Lihat Mengabaikan Jalur untuk detail lebih lanjut. |
--by-rule TEXT | Abaikan pemindaian ID aturan secret/IaC/SCA tertentu. Lihat Mengabaikan Aturan Secret atau IaC untuk detail lebih lanjut. |
--by-package TEXT | Abaikan pemindaian versi paket tertentu saat menjalankan pemindaian SCA. Pola yang diharapkan - name@version. Lihat Mengabaikan Paket untuk detail lebih lanjut. |
--by-cve TEXT | Abaikan pemindaian CVE tertentu saat menjalankan pemindaian SCA. Pola yang diharapkan: CVE-YYYY-NNN. |
-t, --scan-type [secret|iac|sca|sast] | Tentukan pemindaian yang ingin Anda jalankan (secret/iac/sca/sast). Nilai default adalah secret. |
-g, --global | Tambahkan aturan pengabaian dan perbarui di file konfigurasi global .cycode. |
Mengabaikan Nilai Secret
Untuk mengabaikan nilai secret tertentu, Anda perlu menggunakan flag --by-value. Ini akan mengabaikan nilai secret yang diberikan dari semua pemindaian mendatang. Gunakan perintah berikut untuk menambahkan nilai secret yang akan diabaikan:
cycode ignore --by-value {{secret-value}}
Pada contoh di bagian atas seksi ini, perintah untuk mengabaikan nilai secret tertentu adalah sebagai berikut:
cycode ignore --by-value h3110w0r1d!@#$350
Pada contoh di atas, ganti nilai h3110w0r1d!@#$350 dengan nilai secret Anda yang tidak dimasking. Lihat opsi pemindaian Cycode untuk detail tentang cara melihat nilai secret di hasil pemindaian.
Mengabaikan Nilai SHA Secret
Untuk mengabaikan nilai SHA secret tertentu, Anda perlu menggunakan flag --by-sha. Ini akan mengabaikan nilai SHA secret yang diberikan dari semua pemindaian mendatang. Gunakan perintah berikut untuk menambahkan nilai SHA secret yang akan diabaikan:
cycode ignore --by-sha {{secret-sha-value}}
Pada contoh di bagian atas seksi ini, perintah untuk mengabaikan nilai SHA secret tertentu adalah sebagai berikut:
cycode ignore --by-sha a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0
Pada contoh di atas, ganti nilai a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 dengan nilai SHA secret Anda.
Mengabaikan Jalur
Untuk mengabaikan jalur tertentu untuk pemindaian secret, IaC, atau SCA, Anda perlu menggunakan flag --by-path bersama dengan flag -t, --scan-type (Anda harus menentukan tipe pemindaian). Ini akan mengabaikan jalur yang diberikan dari semua pemindaian mendatang untuk tipe pemindaian yang diberikan. Gunakan perintah berikut untuk menambahkan jalur yang akan diabaikan:
cycode ignore -t {{scan-type}} --by-path {{path}}
Pada contoh di bagian atas seksi ini, perintah untuk mengabaikan jalur tertentu untuk secret adalah sebagai berikut:
cycode ignore -t secret --by-path ~/home/my-repo/config
Pada contoh di atas, ganti nilai ~/home/my-repo/config dengan nilai jalur Anda.
Pada contoh di bagian atas seksi ini, perintah untuk mengabaikan jalur tertentu dari pemindaian IaC adalah sebagai berikut:
cycode ignore -t iac --by-path ~/home/my-repo/config
Pada contoh di atas, ganti nilai ~/home/my-repo/config dengan nilai jalur Anda.
Pada contoh di bagian atas seksi ini, perintah untuk mengabaikan jalur tertentu dari pemindaian SCA adalah sebagai berikut:
cycode ignore -t sca --by-path ~/home/my-repo/config
Pada contoh di atas, ganti nilai ~/home/my-repo/config dengan nilai jalur Anda.
Mengabaikan Aturan Secret, IaC, SCA, atau SAST
Untuk mengabaikan aturan secret, IaC, SCA, atau SAST tertentu, Anda perlu menggunakan flag --by-rule bersama dengan flag -t, --scan-type (Anda harus menentukan tipe pemindaian). Ini akan mengabaikan nilai ID aturan yang diberikan dari semua pemindaian mendatang. Gunakan perintah berikut untuk menambahkan nilai ID aturan yang akan diabaikan:
cycode ignore -t {{scan-type}} --by-rule {{rule-ID}}
Pada contoh di bagian atas seksi ini, perintah untuk mengabaikan ID aturan secret tertentu adalah sebagai berikut:
cycode ignore -t secret --by-rule ce3a4de0-9dfc-448b-a004-c538cf8b4710
Pada contoh di atas, ganti nilai ce3a4de0-9dfc-448b-a004-c538cf8b4710 dengan ID aturan yang ingin Anda abaikan.
Pada contoh di bagian atas seksi ini, perintah untuk mengabaikan ID aturan IaC tertentu adalah sebagai berikut:
cycode ignore -t iac --by-rule bdaa88e2-5e7c-46ff-ac2a-29721418c59c
Pada contoh di atas, ganti nilai bdaa88e2-5e7c-46ff-ac2a-29721418c59c dengan ID aturan yang ingin Anda abaikan.
Pada contoh di bagian atas seksi ini, perintah untuk mengabaikan ID aturan SCA tertentu adalah sebagai berikut:
cycode ignore -t sca --by-rule dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b
Pada contoh di atas, ganti nilai dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b dengan ID aturan yang ingin Anda abaikan.
Mengabaikan Paket
[!NOTE] Opsi ini hanya tersedia untuk pemindaian SCA.
Untuk mengabaikan paket tertentu dalam pemindaian SCA, Anda perlu menggunakan flag --by-package bersama dengan flag -t, --scan-type (Anda harus menentukan tipe pemindaian sca). Ini akan mengabaikan paket yang diberikan, menggunakan format {{package_name}}@{{package_version}}, dari semua pemindaian mendatang. Gunakan perintah berikut untuk menambahkan paket dan versi yang akan diabaikan:
cycode ignore --scan-type sca --by-package {{package_name}}@{{package_version}}
ATAU
cycode ignore -t sca --by-package {{package_name}}@{{package_version}}
Pada contoh di bawah, perintah untuk mengabaikan paket SCA tertentu adalah sebagai berikut:
cycode ignore --scan-type sca --by-package pyyaml@5.3.1
Pada contoh di atas, ganti pyyaml dengan nama paket dan 5.3.1 dengan versi paket yang ingin Anda abaikan.
Mengabaikan melalui file konfigurasi
Aturan pengabaian yang diterapkan disimpan dalam file konfigurasi yang disebut config.yaml.
File ini dapat dengan mudah dibagikan antar pengembang atau bahkan di-commit ke Git remote.
File-file ini selalu terletak di folder .cycode.
Folder dimulai dengan titik (.), dan Anda harus mengaktifkan tampilan file tersembunyi untuk melihatnya.
Jalur file konfigurasi
Secara default, semua perintah cycode ignore menyimpan aturan pengabaian ke direktori saat ini tempat CLI dijalankan.
Contoh: menjalankan perintah CLI pengabaian dari /Users/name/projects/backend akan membuat config.yaml di /Users/name/projects/backend/.cycode
➜ backend pwd
/Users/name/projects/backend
➜ backend cycode ignore --by-value test-value
➜ backend tree -a
.
└── .cycode
└── config.yaml
2 directories, 1 file
Opsi kedua adalah menyimpan aturan pengabaian ke file konfigurasi global.
Jalur konfigurasi global adalah ~/.cycode/config.yaml,
di mana ~ berarti users home directory, for example, /Users/name` di macOS.
Penyimpanan ke ruang global dapat dilakukan dengan flag -g dari perintah cycode ignore.
Contoh: cycode ignore -g --by-value test-value.
Direktori kerja yang tepat
Sangat penting untuk menempatkan folder .cycode dan menjalankan CLI dari tempat yang sama.
Anda harus memeriksa ulang saat bekerja dengan lingkungan yang berbeda seperti CI/CD (GitHub Actions, Jenkins, dll.).
Anda dapat meng-commit folder .cycode ke root repositori Anda. Dalam skenario ini, Anda harus menjalankan pemindaian CLI dari root repositori. Jika itu tidak sesuai dengan kebutuhan Anda, Anda dapat menyalin sementara folder .cycode ke mana pun Anda inginkan dan melakukan pemindaian CLI dari folder ini.
Struktur aturan pengabaian di konfigurasi
Penting untuk memahami bagaimana CLI menyimpan aturan yang diabaikan agar dapat membaca file konfigurasi ini atau bahkan memodifikasinya tanpa CLI.
Struktur YAML abstrak:
exclusions:
{scanTypeName}:
{ignoringType}:
- someIgnoringValue1
- someIgnoringValue2
Nilai yang mungkin dari scanTypeName: iac, sca, sast, secret.
Nilai yang mungkin dari ignoringType: paths, values, rules, packages, shas, cves.
[!WARNING] Nilai untuk "abaikan berdasarkan nilai" tidak disimpan sebagai teks biasa! CLI menyimpan hash sha256 dari nilai tersebut. Anda harus memasukkan hash dari string saat memodifikasi file konfigurasi secara manual.
Contoh config.yaml nyata:
exclusions:
iac:
rules:
- bdaa88e2-5e7c-46ff-ac2a-29721418c59c
sca:
packages:
- pyyaml@5.3.1
secret:
paths:
- /Users/name/projects/build
rules:
- ce3a4de0-9dfc-448b-a004-c538cf8b4710
shas:
- a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0
values:
- a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
- 60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752
Perintah Report
Menghasilkan Laporan SBOM
Software bill of materials (SBOM) adalah inventaris semua komponen penyusun dan dependensi perangkat lunak yang terlibat dalam pengembangan dan pengiriman aplikasi. Dengan menggunakan perintah ini, Anda dapat membuat laporan SBOM untuk proyek lokal Anda atau untuk URI repositori Anda.
Opsi berikut tersedia untuk digunakan dengan perintah ini:
| Opsi | Deskripsi | Diperlukan | Default |
|---|---|---|---|
-f, --format [spdx-2.2|spdx-2.3|cyclonedx-1.4] | Format SBOM | Ya | |
-o, --output-format [JSON] | Tentukan format file output | Tidak | json |
--output-file PATH | File output | Tidak | nama file otomatis disimpan ke direktori saat ini |
--include-vulnerabilities | Sertakan kerentanan | Tidak | False |
--include-dev-dependencies | Sertakan dependensi dev | Tidak | False |
Perintah berikut tersedia untuk digunakan dengan perintah ini:
| Perintah | Deskripsi |
|---|---|
path | Hasilkan laporan SBOM untuk jalur yang disediakan dalam perintah |
repository-url | Hasilkan laporan SBOM untuk URI repositori yang disediakan dalam perintah |
Repositori
Untuk membuat laporan SBOM untuk URI repositori:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> repository_url <repository url>
Contoh:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies repository_url https://github.com/cycodehq/cycode-cli.git
Proyek Lokal
Untuk membuat laporan SBOM untuk sebuah jalur:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> path </path/to/project>
Contoh:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies path /path/to/local/project
Subperintah path mendukung opsi tambahan berikut:
| Opsi | Deskripsi |
|---|---|
--no-restore | Lewati restorasi lockfile dan pindai hanya dependensi langsung. Lihat Opsi Lock Restore untuk detail. |
--gradle-all-sub-projects | Jalankan perintah restore Gradle untuk semua sub-proyek (gunakan dari root build Gradle multi-proyek). |
--maven-settings-file | Hanya untuk Maven, memungkinkan penggunaan file settings.xml kustom saat membangun pohon dependensi. |
Perintah Import
Mengimpor SBOM
Software bill of materials (SBOM) adalah inventaris semua komponen penyusun dan dependensi perangkat lunak yang terlibat dalam pengembangan dan pengiriman aplikasi. Dengan menggunakan perintah ini, Anda dapat mengimpor file SBOM dari sistem file Anda ke Cycode.
Opsi berikut tersedia untuk digunakan dengan perintah ini:
| Opsi | Deskripsi | Wajib | Default |
|---|---|---|---|
-n, --name TEXT | Nama tampilan SBOM | Ya | |
-v, --vendor TEXT | Nama entitas yang menyediakan SBOM | Ya | |
-l, --label TEXT | Lampirkan label ke SBOM | Tidak | |
-o, --owner TEXT | Alamat email pengguna Cycode yang menjadi narahubung untuk SBOM ini | Tidak | |
-b, --business-impact [High | Medium | Low] | Dampak Bisnis | Tidak | Medium |
Sebagai contoh:
cycode import sbom --name example-sbom --vendor cycode -label tag1 -label tag2 --owner example@cycode.com /path/to/local/project
Log Pemindaian
Semua pemindaian CLI dicatat di Cycode. Log dapat ditemukan di Pengaturan > Log CLI.
Bantuan Sintaks
Anda dapat menambahkan argumen --help ke perintah apa pun kapan saja untuk melihat pesan bantuan yang akan menampilkan opsi yang tersedia dan sintaksnya.
Untuk melihat bantuan umum, cukup masukkan perintah:
cycode --help
Untuk melihat opsi pemindaian, masukkan:
cycode scan --help
Untuk melihat opsi yang tersedia untuk jenis pemindaian tertentu, masukkan:
cycode scan {{option}} --help
Sebagai contoh, untuk melihat opsi yang tersedia untuk Pemindaian Jalur, Anda akan memasukkan:
cycode scan path --help
Untuk melihat opsi yang tersedia untuk fungsi abaikan pemindaian, gunakan perintah ini:
cycode ignore --help
Untuk melihat opsi yang tersedia untuk laporan, gunakan perintah ini:
cycode report --help
Untuk melihat opsi yang tersedia untuk jenis laporan tertentu, masukkan:
cycode scan {{option}} --help