Qodana هي أداة مراقبة جودة الكود التي تحدد وتقترح إصلاحات للأخطاء ، ونقاط الثغرات الأمنية ، والتكرار ، والعيوب.
جدول المحتويات
يتيح لك إجراء Qodana Scanb 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 الذي تم تنظيمه إلى GitHub ، ويحدد ملف التقرير باستخدام مفتاح sarif_file .
لا يقوم مسح رمز Github بتصدير نتائج التفتيش إلى أدوات الطرف الثالث ، مما يعني أنه لا يمكنك استخدام هذه البيانات لمزيد من المعالجة بواسطة Qodana. في هذه الحالة ، يجب عليك إعداد معالجة خط الأساس وجودة بوابة الجودة على جانب Qodana قبل تقديم نتائج التفتيش لمسح رمز Github ، راجع بوابة الجودة وقسم خط الأساس للحصول على التفاصيل.
يمكنك فرض GitHub لمنع دمج طلبات السحب إذا فشلت بوابة جودة Qodana. للقيام بذلك ، قم بإنشاء قاعدة حماية الفرع كما هو موضح أدناه:
pull_request التي تستهدف الفرع main . on :
pull_request :
branches :
- main بدلاً من main ، يمكنك تحديد فرعك هنا.
fail-threshold Qodana.main إلى نمط اسم الفرع .Qodana ، ثم تحقق من ذلك.يمكنك الجمع بين بوابة الجودة وميزات خط الأساس لإدارة ديونك التقنية ، والإبلاغ عن مشاكل جديدة فقط ، وحظر طلبات السحب التي تحتوي على الكثير من المشكلات.
اتبع الخطوات هذه لإنشاء خط أساس لمشروعك:
cd project
qodana scan --show-report افتح تقريرك على http://localhost:8080/ ، أضف مشاكل مكتشفة إلى خط الأساس ، وقم بتنزيل ملف qodana.sarif.json .
قم بتحميل ملف qodana.sarif.json إلى مجلد جذر المشروع على Github.
إلحاق --baseline,qodana.sarif.json الوسيطة إلى معلمة args تكوين إجراءات فحص Qodana في ملف 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 Results Artifact ، يستخدم لتحميل النتائج. خياري. | qodana-report |
cache-dir | دليل لتخزين ذاكرة التخزين المؤقت Qodana. خياري. | ${{ runner.temp }}/qodana/caches |
use-caches | الاستفادة من ذاكرة التخزين المؤقت github ل 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 | قضية جديدة.