Qodana adalah alat pemantauan kualitas kode yang mengidentifikasi dan menyarankan perbaikan untuk bug, kerentanan keamanan, duplikasi, dan ketidaksempurnaan.
Daftar isi
Tindakan GitHub pemindaian qodana memungkinkan Anda menjalankan qodana pada repositori gitub.
Untuk mengonfigurasi qodana scan, simpan file .github/workflows/code_quality.yml yang berisi konfigurasi alur kerja:
name : Qodana
on :
workflow_dispatch :
pull_request :
push :
branches :
- main
- ' releases/* '
jobs :
qodana :
runs-on : ubuntu-latest
permissions :
contents : write
pull-requests : write
checks : write
steps :
- uses : actions/checkout@v3
with :
ref : ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
fetch-depth : 0 # a full history is required for pull request analysis
- name : ' Qodana Scan '
uses : JetBrains/[email protected]
env :
QODANA_TOKEN : ${{ secrets.QODANA_TOKEN }} # read the steps about it below Untuk mengatur variabel lingkungan QODANA_TOKEN dalam konfigurasi build:
QODANA_TOKEN dan simpan token proyek sebagai nilainya.QODANA_TOKEN ke bagian env pada langkah Qodana Scan :Dengan menggunakan alur kerja ini, Qodana akan berjalan di cabang utama, melepaskan cabang, dan pada permintaan tarik yang datang ke repositori Anda.
Catatan: fetch-depth: 0 Diperlukan untuk checkout jika Qodana bekerja dalam mode permintaan tarik (Laporan masalah yang hanya muncul dalam permintaan tarik itu).
Kami menyarankan Anda memiliki file alur kerja terpisah untuk qodana karena pekerjaan yang berbeda dijalankan secara paralel

Untuk membuat qodana secara otomatis memperbaiki masalah yang ditemukan dan mendorong perubahan pada repositori Anda, Anda perlu
fixesStrategy dalam file qodana.yaml di root repositori Andaargs dengan strategi perbaikan cepat untuk digunakan: --apply-fixes atau --cleanuppush-fixes kepull-request : Buat cabang baru dengan perbaikan dan buat permintaan tarik ke cabang aslibranch : Push perbaikan ke cabang asli. Juga, atur pr-mode ke false : Saat ini, mode ini tidak didukung untuk menerapkan perbaikan.contents: write , pull-requests: write , checks: write )pull-request untuk Properti push-fixes : Izinkan Tindakan GitHub untuk membuat dan menyetujui Permintaan TarikContoh konfigurasi:
- name : Qodana Scan
uses : JetBrains/[email protected]
with :
pr-mode : false
args : --apply-fixes
push-fixes : pull-request
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}Catatan Qodana dapat secara otomatis memodifikasi tidak hanya kode, tetapi juga konfigurasi di
.idea: jika Anda tidak ingin mendorong perubahan ini, tambahkan.ideake file.gitignoreAnda.
Jika Anda ingin melakukan operasi git yang berbeda dalam pekerjaan yang sama, Anda dapat menonaktifkan push-fixes dan melakukan operasi yang diinginkan secara manual
name : Qodana
on :
workflow_dispatch :
pull_request :
push :
branches :
- master
- ' releases/* '
jobs :
qodana :
runs-on : ubuntu-latest
permissions :
contents : write
pull-requests : write
checks : write
steps :
- uses : actions/checkout@v3
with :
ref : ${{ github.event.pull_request.head.sha }}
fetch-depth : 0
- name : ' Qodana Scan '
uses : JetBrains/[email protected]
with :
args : --cleanup
- run : |
git config user.name github-actions
git config user.email [email protected]
git checkout -b quick-fixes-$GITHUB_RUN_ID
git add -- . ':!.idea'
git commit -m "I fixed some issues"
git push origin quick-fixes-$GITHUB_RUN_ID
gh pr create --repo $GITHUB_REPOSITORY --base $GITHUB_REF_NAME --head quick-fixes-$GITHUB_RUN_ID --title "Pull requests" --body "I fixed some issues"
env:
GH_TOKEN: ${{ github.token }} Anda dapat mengatur pemindaian kode github untuk proyek Anda menggunakan qodana. Untuk melakukannya, tambahkan baris ini ke file alur kerja code_quality.yml tepat di bawah konfigurasi dasar pemindaian qodana:
- uses : github/codeql-action/upload-sarif@v2
with :
sarif_file : ${{ runner.temp }}/qodana/results/qodana.sarif.json Sampel ini memanggil codeql-action untuk mengunggah laporan Qodana yang diformat sarif ke GitHub, dan menentukan file laporan menggunakan kunci sarif_file .
Pemindaian kode GitHub tidak mengekspor hasil inspeksi ke alat pihak ketiga, yang berarti Anda tidak dapat menggunakan data ini untuk pemrosesan lebih lanjut oleh Qodana. Dalam hal ini, Anda harus mengatur pemrosesan gerbang dasar dan kualitas di sisi Qodana sebelum mengirimkan hasil inspeksi ke pemindaian kode github, lihat Gerbang Kualitas dan Bagian Baseline untuk detailnya.
Anda dapat menegakkan GitHub untuk memblokir penggabungan permintaan tarik jika gerbang kualitas qodana gagal. Untuk melakukannya, buat aturan perlindungan cabang seperti yang dijelaskan di bawah ini:
pull_request yang menargetkan cabang main . on :
pull_request :
branches :
- main Alih -alih main , Anda dapat menentukan cabang Anda di sini.
fail-threshold .main ke Cabang.Qodana , lalu periksa.Anda dapat menggabungkan fitur Gerbang dan Baseline berkualitas untuk mengelola utang teknis Anda, hanya melaporkan masalah baru, dan memblokir permintaan tarik yang mengandung terlalu banyak masalah.
Ikuti langkah -langkah ini untuk membangun garis dasar untuk proyek Anda:
cd project
qodana scan --show-report Buka laporan Anda di http://localhost:8080/ , tambahkan masalah yang terdeteksi ke baseline, dan unduh file qodana.sarif.json .
Unggah file qodana.sarif.json ke folder root proyek Anda di github.
Tambahkan --baseline,qodana.sarif.json Argumen ke parameter Konfigurasi Tindakan args Qodana dalam file code_quality.yml :
- name : Qodana Scan
uses : JetBrains/qodana-action@main
with :
args : --baseline,qodana.sarif.jsonJika Anda ingin memperbarui baseline, Anda harus mengulangi langkah -langkah ini sekali lagi.
Mulai dari ini, GitHub akan menghasilkan perubahan hanya untuk masalah yang tidak ditambahkan ke garis dasar sebagai baru.
Untuk membangun gerbang berkualitas tambahan ke baseline, tambahkan baris ini ke code_quality.yml tepat setelah garis baseline-path :
fail-threshold : <number-of-accepted-problems> Berdasarkan hal ini, Anda hanya akan dapat mendeteksi masalah baru dalam permintaan tarik yang berada di luar garis dasar. Pada saat yang sama, permintaan tarik dengan masalah baru melebihi batas fail-threshold akan diblokir, dan alur kerja akan gagal.
Anda dapat mengatur lencana alur kerja qodana di repositori Anda, untuk melakukannya, mengikuti langkah -langkah ini:

Kemungkinan besar, Anda tidak akan memerlukan opsi lain selain args : semua opsi lain dapat membantu jika Anda mengkonfigurasi beberapa pekerjaan pemindaian qodana dalam satu alur kerja.
Gunakan with untuk mendefinisikan parameter tindakan apa pun:
with :
args : --baseline,qodana.sarif.json
cache-default-branch-only : true| Nama | Keterangan | Nilai default |
|---|---|---|
args | Tambahan qodana cli scan argumen perintah, membagi argumen dengan koma ( , ), misalnya -i,frontend,--print-problems . Opsional. | - |
results-dir | Direktori untuk menyimpan hasil analisis. Opsional. | ${{ runner.temp }}/qodana/results |
upload-result | Unggah hasil qodana (sarif, artefak lain, log) sebagai artefak untuk pekerjaan. Opsional. | false |
artifact-name | Tentukan nama artefak hasil qodana, digunakan untuk mengunggah hasil. Opsional. | qodana-report |
cache-dir | Direktori untuk menyimpan cache qodana. Opsional. | ${{ runner.temp }}/qodana/caches |
use-caches | Memanfaatkan cache github untuk qodana run. Opsional. | true |
primary-cache-key | Atur kunci cache primer. Opsional. | qodana-2024.3-${{ github.ref }}-${{ github.sha }} |
additional-cache-key | Atur kunci cache tambahan. Opsional. | qodana-2024.3-${{ github.ref }} |
cache-default-branch-only | Unggah cache hanya untuk cabang default. Opsional. | false |
use-annotations | Gunakan anotasi untuk menandai hasil di antarmuka pengguna GitHub. Opsional. | true |
pr-mode | Analisis hanya mengubah file dalam permintaan tarik. Opsional. | true |
post-pr-comment | Posting komentar dengan ringkasan hasil qodana ke permintaan tarik. Opsional. | true |
github-token | Token GitHub Untuk mengakses repositori: Posting anotasi, komentar. Opsional. | ${{ github.token }} |
push-fixes | Dorong perbaikan qodana ke repositori, none , branch ke cabang saat ini, atau pull-request . Opsional. | none |
Semua masalah, permintaan fitur, dan dukungan yang terkait dengan Qodana ditangani di YouTrack.
Jika Anda ingin mengajukan masalah baru, silakan gunakan tautan YouTrack | Masalah baru.