Sesuaikan alur kerja pemindaian kode Anda dengan CodeQL - Bagian 1
Alur kerja pemindaian kode yang menggunakan CodeQL memiliki berbagai opsi konfigurasi yang dapat Anda sesuaikan agar lebih sesuai dengan kebutuhan organisasi Anda.
Saat Anda menggunakan CodeQL untuk memindai kode, mesin analisis CodeQL menghasilkan database dari kode dan menjalankan kueri di dalamnya. Analisis CodeQL menggunakan sekumpulan kueri default, tetapi Anda dapat menentukan lebih banyak kueri untuk dijalankan selain kueri default.
Anda dapat menjalankan kueri tambahan jika merupakan bagian dari paket CodeQL (beta) yang diterbitkan ke registri Kontainer GitHub, atau paket QL yang disimpan di repositori.
Ada dua opsi untuk menentukan kueri mana yang ingin Anda jalankan dengan pemindaian kode CodeQL:
- Menggunakan alur kerja pemindaian kode Anda
- Menggunakan file konfigurasi khusus
Di unit ini, Anda akan mempelajari cara mengedit file alur kerja untuk mereferensikan kueri tambahan, cara menggunakan kueri dari paket kueri, dan cara menggabungkan kueri dari file alur kerja dan file konfigurasi kustom.
Tentukan kueri tambahan dalam file alur kerja
Opsi yang tersedia untuk menentukan kueri tambahan yang ingin Anda jalankan adalah:
-
packsuntuk menginstal satu atau beberapa paket kueri CodeQL (beta) dan menjalankan rangkaian kueri default atau kueri bawaan untuk paket tersebut. -
queriesuntuk menentukan satu file.ql, direktori yang berisi beberapa file.ql, file definisi rangkaian kueri.qls, atau kombinasi apa pun.
Anda dapat menggunakan paket dan kueri dalam alur kerja yang sama.
Kami tidak merekomendasikan referensi suite kueri langsung dari repositori github/codeql, seperti github/codeql/cpp/ql/src@main. Kueri tersebut mungkin tidak dikompilasi dengan versi CodeQL yang sama seperti yang digunakan untuk kueri Anda yang lain, yang dapat menyebabkan kesalahan selama analisis.
Gunakan paket kueri CodeQL
Catatan
Fungsionalitas manajemen paket CodeQL, termasuk paket CodeQL, saat ini dalam versi beta dan dapat berubah.
Untuk menambahkan satu atau beberapa paket kueri CodeQL (beta), tambahkan entri with: packs: dalam bagian uses: github/codeql-action/init@v1 alur kerja. Dalam paket, Anda dapat menentukan satu atau beberapa paket untuk digunakan dan, secara opsional, versi mana yang akan diunduh. Jika Anda tidak menentukan versi, versi terbaru akan diunduh. Jika Anda ingin menggunakan paket yang tidak tersedia untuk umum, Anda perlu mengatur GITHUB_TOKEN variabel lingkungan ke rahasia yang memiliki akses ke paket.
Dalam contoh berikut, cakupan adalah organisasi atau akun pribadi yang menerbitkan paket. Saat alur kerja dijalankan, tiga paket kueri CodeQL diunduh dari GitHub dan kueri default atau rangkaian kueri untuk setiap paket dijalankan. Dalam contoh berikut, setiap paket dalam daftar akan diunduh berdasarkan spesifikasinya:
- Versi
pack1terbaru diunduh, dan semua kueri default dijalankan. - Versi 1.2.3
pack2diunduh, dan semua kueri default dijalankan. - Versi
pack3terbaru yang kompatibel dengan versi 3.2.1 diunduh, dan semua kueri dijalankan. - Versi 4.5.6
pack4diunduh, dan hanya kueri yang ditemukan di path/to/queries yang dijalankan.
- uses: github/codeql-action/init@v3
with:
# Comma-separated list of packs to download
packs: scope/pack1,scope/pack2@1.2.3,scope/pack3@~3.2.1,scope/pack4@4.5.6:path/to/queries
Catatan
Untuk alur kerja yang menghasilkan database CodeQL untuk beberapa bahasa, Anda harus menentukan paket kueri CodeQL dalam file konfigurasi.
Gunakan kueri dalam paket QL
Untuk menambahkan satu atau beberapa kueri, tambahkan entri with: queries: dalam bagian uses: github/codeql-action/init@v3 alur kerja. Jika kueri berada dalam repositori pribadi, gunakan parameter external-repository-token untuk menentukan token yang memiliki akses untuk memeriksa repositori pribadi.
- uses: github/codeql-action/init@v3
with:
# Comma-separated list of queries / packs / suites to run.
# This may include paths or a built in suite, for example:
# security-extended or security-and-quality.
queries: security-extended
# Optional. Provide a token to access queries stored in private repositories.
external-repository-token: ${{ secrets.ACCESS_TOKEN }}
Anda juga dapat menentukan suite kueri dalam nilai queries. Suite kueri adalah kumpulan kueri, biasanya dikelompokkan berdasarkan tujuan atau bahasa.
Paket kueri berikut terintegrasi dalam pemindaian kode CodeQL dan siap untuk digunakan:
| Paket kueri | Deskripsi |
|---|---|
security-extended |
Kueri dari rangkaian default, serta kueri dengan tingkat keparahan dan presisi yang lebih rendah |
security-and-quality |
Kueri dari security-extended, ditambah kueri tentang pemeliharaan dan keandalan |
Masing-masing suite kueri ini berisi subset kueri yang berbeda yang disertakan dalam paket kueri CodeQL bawaan untuk bahasa tersebut. Suite kueri dibuat secara otomatis menggunakan metadata untuk setiap kueri.
Saat Anda menentukan rangkaian kueri, mesin analisis CodeQL akan menjalankan kueri yang terkandung dalam rangkaian untuk Anda selain kumpulan kueri default.
Gabungkan kueri dari file alur kerja dan file konfigurasi khusus
Jika Anda juga menggunakan file konfigurasi untuk pengaturan kustom, paket atau kueri tambahan apa pun yang ditentukan dalam alur kerja Anda akan digunakan sebagai ganti yang ditentukan dalam file konfigurasi. Jika Anda ingin menjalankan kumpulan gabungan paket atau kueri tambahan, awali nilai packs atau queries dalam alur kerja dengan + simbol .
Dalam contoh berikut, + simbol memastikan bahwa paket dan kueri tambahan yang ditentukan digunakan bersama dengan yang ditentukan dalam file konfigurasi yang direferensikan:
- uses: github/codeql-action/init@v3
with:
config-file: ./.github/codeql/codeql-config.yml
queries: +security-and-quality,octo-org/python-qlpack/show_ifs.ql@main
packs: +scope/pack1,scope/pack2@1.2.3,scope/pack3@4.5.6:path/to/queries