Qodana เป็นเครื่องมือตรวจสอบคุณภาพรหัสที่ระบุและแนะนำการแก้ไขข้อบกพร่องช่องโหว่ความปลอดภัยการทำซ้ำและความไม่สมบูรณ์
สารบัญ
การดำเนินการของ Qodana Scan GitHub ช่วยให้คุณเรียกใช้ Qodana บนที่เก็บ GitHub
ในการกำหนดค่าการสแกน Qodana ให้บันทึกไฟล์ .github/workflows/code_quality.yml ที่มีการกำหนดค่าเวิร์กโฟลว์:
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 ในการตั้งค่าตัวแปรสภาพแวดล้อม QODANA_TOKEN ในการกำหนดค่าการสร้าง:
QODANA_TOKEN และบันทึกโทเค็นโครงการเป็นมูลค่าQODANA_TOKEN ในส่วน env ของขั้นตอน Qodana Scan :ด้วยการใช้เวิร์กโฟลว์นี้ Qodana จะทำงานบนสาขาหลักกิ่งก้านและคำขอดึงมาที่ที่เก็บของคุณ
หมายเหตุ: fetch-depth: 0 เป็นสิ่งจำเป็นสำหรับการชำระเงินในกรณีที่ Qodana ทำงานในโหมดคำขอดึง (ปัญหารายงานที่ปรากฏเฉพาะในคำขอดึงนั้นเท่านั้น)
เราขอแนะนำให้คุณมีไฟล์เวิร์กโฟลว์แยกต่างหากสำหรับ Qodana เนื่องจากงานที่แตกต่างกันทำงานแบบขนาน

ในการทำให้ Qodana แก้ไขปัญหาที่พบโดยอัตโนมัติและผลักดันการเปลี่ยนแปลงไปยังที่เก็บของคุณ
fixesStrategy ในไฟล์ qodana.yaml ในรูทที่เก็บของคุณargs ด้วยกลยุทธ์การแก้ไขอย่างรวดเร็วที่จะใช้: --apply-fixes หรือ --cleanuppush-fixes เป็นpull-request : สร้างสาขาใหม่พร้อมการแก้ไขและสร้างคำขอดึงไปยังสาขาดั้งเดิมbranch : ผลักดันการแก้ไขไปยังสาขาเดิม นอกจากนี้ตั้งค่า pr-mode เป็น false : ปัจจุบันโหมดนี้ไม่รองรับสำหรับการใช้การแก้ไขcontents: write , pull-requests: write , checks: write )pull-request สำหรับคุณสมบัติ push-fixes : อนุญาตให้การกระทำของ GitHub ในการสร้างและอนุมัติคำขอดึงตัวอย่างการกำหนดค่า:
- name : Qodana Scan
uses : JetBrains/[email protected]
with :
pr-mode : false
args : --apply-fixes
push-fixes : pull-request
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}หมายเหตุ Qodana สามารถแก้ไขได้โดยอัตโนมัติไม่เพียง แต่รหัสเท่านั้น แต่ยังรวมถึงการกำหนดค่าใน
.idea: หากคุณไม่ต้องการผลักดันการเปลี่ยนแปลงเหล่านี้ให้เพิ่ม.ideaลงในไฟล์.gitignoreของคุณ
หากคุณต้องการดำเนินการ git ที่แตกต่างกันในงานเดียวกันคุณสามารถปิด push-fixes และดำเนินการที่ต้องการด้วยตนเอง
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 }} คุณสามารถตั้งค่าการสแกนรหัส GitHub สำหรับโครงการของคุณโดยใช้ Qodana ในการทำเช่นนั้นให้เพิ่มบรรทัดเหล่านี้ในไฟล์เวิร์กโฟลว์ code_quality.yml ด้านล่างการกำหนดค่าพื้นฐานของการสแกน Qodana:
- uses : github/codeql-action/upload-sarif@v2
with :
sarif_file : ${{ runner.temp }}/qodana/results/qodana.sarif.json ตัวอย่างนี้เรียกใช้ codeql-action สำหรับการอัปโหลดรายงาน Qodana แบบ Sarif-formatted ไปยัง GitHub และระบุไฟล์รายงานโดยใช้คีย์ sarif_file
การสแกนรหัส GitHub ไม่ได้ส่งออกผลการตรวจสอบไปยังเครื่องมือของบุคคลที่สามซึ่งหมายความว่าคุณไม่สามารถใช้ข้อมูลนี้สำหรับการประมวลผลเพิ่มเติมโดย Qodana ในกรณีนี้คุณต้องตั้งค่าการประมวลผลเกตพื้นฐานและคุณภาพบนด้าน Qodana ก่อนที่จะส่งผลการตรวจสอบไปยังการสแกนรหัส GitHub ดูที่ประตูคุณภาพและส่วนพื้นฐานสำหรับรายละเอียด
คุณสามารถบังคับใช้ GitHub เพื่อบล็อกการรวมคำขอดึงหากประตูคุณภาพ Qodana ล้มเหลว ในการทำมันให้สร้างกฎการป้องกันสาขาตามที่อธิบายไว้ด้านล่าง:
pull_request ที่กำหนดเป้าหมายสาขา main on :
pull_request :
branches :
- main แทนที่จะเป็น main คุณสามารถระบุสาขาของคุณได้ที่นี่
fail-thresholdmainQodana จากนั้นตรวจสอบคุณสามารถรวมคุณสมบัติคุณภาพและคุณสมบัติพื้นฐานเพื่อจัดการหนี้ทางเทคนิคของคุณรายงานปัญหาใหม่และบล็อกคำขอดึงที่มีปัญหามากเกินไป
ทำตามขั้นตอนเหล่านี้เพื่อสร้างพื้นฐานสำหรับโครงการของคุณ:
cd project
qodana scan --show-report เปิดรายงานของคุณที่ http://localhost:8080/ , เพิ่มปัญหาที่ตรวจพบลงในพื้นฐานและดาวน์โหลดไฟล์ qodana.sarif.json
อัปโหลดไฟล์ qodana.sarif.json ไปยังโฟลเดอร์รูทโครงการของคุณบน GitHub
ผนวก --baseline,qodana.sarif.json อาร์กิวเมนต์ไปยังพารามิเตอร์การตั้งค่าการดำเนินการของ Qodana scan args ในไฟล์ code_quality.yml :
- name : Qodana Scan
uses : JetBrains/qodana-action@main
with :
args : --baseline,qodana.sarif.jsonหากคุณต้องการอัปเดตพื้นฐานคุณต้องทำซ้ำขั้นตอนเหล่านี้อีกครั้ง
เริ่มต้นจากสิ่งนี้ GitHub จะสร้างการเปลี่ยนแปลงเฉพาะสำหรับปัญหาที่ไม่ได้เพิ่มลงในพื้นฐานเป็นใหม่
ในการสร้างเกตคุณภาพเพิ่มเติมไปยังพื้นฐานให้เพิ่มบรรทัดนี้ลงใน code_quality.yml ทันทีหลังจากบรรทัด baseline-path :
fail-threshold : <number-of-accepted-problems> จากสิ่งนี้คุณจะสามารถตรวจจับปัญหาใหม่ในคำขอดึงที่อยู่ไกลเกินกว่าพื้นฐาน ในเวลาเดียวกันคำขอดึงที่มีปัญหา ใหม่ เกินขีด จำกัด fail-threshold จะถูกบล็อกและเวิร์กโฟลว์จะล้มเหลว
คุณสามารถตั้งค่าป้ายเวิร์กโฟลว์ Qodana ในที่เก็บของคุณทำตามขั้นตอนเหล่านี้:

เป็นไปได้มากว่าคุณจะไม่ต้องการตัวเลือกอื่น ๆ นอกเหนือจาก args : ตัวเลือกอื่น ๆ ทั้งหมดจะมีประโยชน์หากคุณกำหนดค่างานสแกน Qodana หลายงานในเวิร์กโฟลว์เดียว
ใช้ with กำหนดพารามิเตอร์การดำเนินการใด ๆ :
with :
args : --baseline,qodana.sarif.json
cache-default-branch-only : true| ชื่อ | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
args | ข้อโต้แย้งคำสั่ง qodana CLI scan เพิ่มเติมแยกอาร์กิวเมนต์ด้วยเครื่องหมายจุลภาค ( , ) ตัวอย่างเช่น -i,frontend,--print-problems ไม่จำเป็น. | - |
results-dir | ไดเรกทอรีเพื่อเก็บผลการวิเคราะห์ ไม่จำเป็น. | ${{ runner.temp }}/qodana/results |
upload-result | อัปโหลดผลลัพธ์ Qodana (Sarif, สิ่งประดิษฐ์อื่น ๆ , บันทึก) เป็นสิ่งประดิษฐ์ในงาน ไม่จำเป็น. | false |
artifact-name | ระบุชื่อสิ่งประดิษฐ์ Qodana ผลลัพธ์ที่ใช้สำหรับการอัปโหลดผลลัพธ์ ไม่จำเป็น. | qodana-report |
cache-dir | ไดเรกทอรีเพื่อเก็บแคช Qodana ไม่จำเป็น. | ${{ runner.temp }}/qodana/caches |
use-caches | ใช้ประโยชน์จาก GitHub Caches สำหรับการวิ่ง Qodana ไม่จำเป็น. | true |
primary-cache-key | ตั้งค่าคีย์แคชหลัก ไม่จำเป็น. | qodana-2024.3-${{ github.ref }}-${{ github.sha }} |
additional-cache-key | ตั้งค่าคีย์แคชเพิ่มเติม ไม่จำเป็น. | qodana-2024.3-${{ github.ref }} |
cache-default-branch-only | อัปโหลดแคชสำหรับสาขาเริ่มต้นเท่านั้น ไม่จำเป็น. | false |
use-annotations | ใช้คำอธิบายประกอบเพื่อทำเครื่องหมายผลลัพธ์ในส่วนต่อประสานผู้ใช้ GitHub ไม่จำเป็น. | true |
pr-mode | วิเคราะห์เฉพาะไฟล์ที่เปลี่ยนแปลงในคำขอดึง ไม่จำเป็น. | true |
post-pr-comment | โพสต์ความคิดเห็นด้วยสรุปผลลัพธ์ Qodana ไปยังคำขอดึง ไม่จำเป็น. | true |
github-token | โทเค็น GitHub เพื่อเข้าถึงที่เก็บ: โพสต์คำอธิบายประกอบความคิดเห็น ไม่จำเป็น. | ${{ github.token }} |
push-fixes | กด Qodana แก้ไขไปยังที่เก็บ none branch ไปยังสาขาปัจจุบันหรือ pull-request ไม่จำเป็น. | none |
ปัญหาทั้งหมดคำขอคุณสมบัติและการสนับสนุนที่เกี่ยวข้องกับ Qodana ได้รับการจัดการบน YouTrack
หากคุณต้องการยื่นปัญหาใหม่โปรดใช้ลิงค์ YouTrack | ปัญหาใหม่