Qodana ist ein Tool zur Überwachung der Codequalität, das Korrekturen für Fehler, Sicherheitslücken, Duplikationen und Unvollkommenheiten identifiziert und vorschlägt.
Inhaltsverzeichnis
Mit der Qodana -Scan -GitHub -Aktion können Sie Qodana auf einem Github -Repository ausführen.
Um den Qodana -Scan zu konfigurieren, speichern Sie die Datei .github/workflows/code_quality.yml die die Workflow -Konfiguration enthält:
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 So setzen Sie QODANA_TOKEN -Umgebungsvariable in der Build -Konfiguration:
QODANA_TOKEN und retten Sie das Projekt -Token als Wert.QODANA_TOKEN -Variable in den env Qodana Scan hinzu:Mit diesem Workflow wird Qodana in der Hauptzweigung ausgeführt, Filialen freigeben und auf den Pull -Anfragen zu Ihrem Repository kommen.
fetch-depth: 0 : Für den Fall, falls Qodana im Pull-Anforderungsmodus funktioniert (Berichte, die nur in dieser Pull-Anfrage angezeigt werden) ist für den Fall erforderlich.
Wir empfehlen Ihnen, eine separate Workflow -Datei für Qodana zu haben, da verschiedene Jobs parallel ausgeführt werden

Um Qodana automatisch gefundene Probleme zu beheben und die Änderungen in Ihr Repository zu verschieben, müssen Sie
fixesStrategy in der Datei qodana.yaml in Ihrem Repository -Root an--cleanup die args mit der Quick --apply-fixes Fixpush-fixes aufpull-request : Erstellen Sie einen neuen Zweig mit Korrekturen und erstellen Sie eine Pull-Anforderung an den ursprünglichen Zweigbranch : Push -Fixes in den ursprünglichen Zweig. Setzen Sie pr-mode auch auf false : Derzeit wird dieser Modus nicht für die Anwendung von Korrekturen unterstützt.contents: write , pull-requests: write , checks: write )pull-request -Wert für push-fixes -Eigenschaft verwenden: GitHub-Aktionen zuzulassen, um Pull-Anfragen zu erstellen und zu genehmigenBeispielkonfiguration:
- name : Qodana Scan
uses : JetBrains/[email protected]
with :
pr-mode : false
args : --apply-fixes
push-fixes : pull-request
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}Hinweis Qodana könnte nicht nur den Code, sondern auch die Konfiguration in
.ideaautomatisch ändern: Wenn Sie diese Änderungen nicht überschreiten möchten, fügen Sie.ideazu Ihrer.gitignore-Datei hinzu.
Wenn Sie im selben Job unterschiedliche git -Operationen durchführen möchten, können Sie push-fixes deaktivieren und die gewünschten Operationen manuell ausführen
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 }} Mit Qodana können Sie GitHub -Code -Scan für Ihr Projekt einrichten. Fügen Sie dazu diese Zeilen der Workflow -Datei code_quality.yml direkt unter der grundlegenden Konfiguration des Qodana -Scans hinzu:
- uses : github/codeql-action/upload-sarif@v2
with :
sarif_file : ${{ runner.temp }}/qodana/results/qodana.sarif.json Dieses Beispiel ruft codeql-action zum Hochladen eines Sarif-formatierten Qodana-Berichts auf GitHub auf und gibt die Berichtsdatei mit der Taste sarif_file an.
Das Scannen von GitHub-Code exportiert keine Inspektionsergebnisse in Tools von Drittanbietern, was bedeutet, dass Sie diese Daten nicht zur weiteren Verarbeitung durch Qodana verwenden können. In diesem Fall müssen Sie die Basis- und Qualitäts -Gate -Verarbeitung auf der Qodana -Seite einrichten, bevor Sie Inspektionsergebnisse an das Scannen von Github -Code einreichen. Weitere Informationen finden Sie im Abschnitt "Quality Gate" und "Baseline".
Sie können GitHub durchsetzen, um die Zusammenführung von Pull -Anfragen zu blockieren, wenn das Qodana -Qualitätstor fehlgeschlagen ist. Erstellen Sie dazu eine Zweigschutzregel, wie nachstehend beschrieben:
pull_request -Ereignisse ein, die auf den main abzielen. on :
pull_request :
branches :
- main Anstelle von main können Sie hier Ihren Zweig angeben.
fail-threshold .main -dem -Zweig -Namensmuster hinzu .Qodana -Statusprüfung und überprüfen Sie sie.Sie können die Quality Gate- und Baseline -Funktionen kombinieren, um Ihre technischen Schulden zu verwalten, nur neue Probleme zu melden und Anfragen zu blockieren, die zu viele Probleme enthalten.
Befolgen Sie die folgenden Schritte, um eine Grundlinie für Ihr Projekt festzulegen:
cd project
qodana scan --show-report Öffnen Sie Ihren Bericht unter http://localhost:8080/ , fügen Sie der Basislinie erkannte Probleme hinzu und laden Sie die Datei qodana.sarif.json herunter.
Laden Sie die Datei qodana.sarif.json in Ihren Projektroot -Ordner auf GitHub hoch.
Append --baseline,qodana.sarif.json Argument zum Qodana Scan args in der Datei code_quality.yml :
- name : Qodana Scan
uses : JetBrains/qodana-action@main
with :
args : --baseline,qodana.sarif.jsonWenn Sie die Grundlinie aktualisieren möchten, müssen Sie diese Schritte noch einmal wiederholen.
Ausgehend davon wird GitHub nur für die Probleme erzeugen, die der Grundlinie nicht als neu hinzugefügt wurden.
Um ein Qualitätstor zusätzlich zur Basislinie festzulegen, fügen Sie diese Zeile direkt nach der baseline-path -Linie zu code_quality.yml hinzu:
fail-threshold : <number-of-accepted-problems> Auf dieser Grundlage können Sie nur neue Probleme bei Pull -Anfragen erkennen, die über die Grundlinie hinausgehen. Gleichzeitig werden Anfragen mit neuen Problemen, die das fail-threshold überschreiten, blockiert und der Workflow fällt aus.
Sie können ein Qodana -Workflow -Abzeichen in Ihrem Repository einrichten, um dies zu tun, folgt folgende Schritte:

Höchstwahrscheinlich benötigen Sie keine anderen Optionen als args : Alle anderen Optionen können hilfreich sein, wenn Sie mehrere Qodana -Scan -Jobs in einem Workflow konfigurieren.
Verwenden Sie with , um alle Aktionsparameter zu definieren:
with :
args : --baseline,qodana.sarif.json
cache-default-branch-only : true| Name | Beschreibung | Standardwert |
|---|---|---|
args | Zusätzliche Qodana-CLI scan Befehlsargumente, teilen Sie die Argumente mit Commas ( , ) auf, z. B. -i,frontend,--print-problems . Optional. | - - |
results-dir | Verzeichnis zum Speichern der Analyseergebnisse. Optional. | ${{ runner.temp }}/qodana/results |
upload-result | Laden Sie Qodana -Ergebnisse (Sarif, andere Artefakte, Protokolle) als Artefakt für den Job hoch. Optional. | false |
artifact-name | Geben Sie Qodana -Ergebnisse Artefaktname an, die zum Hochladen von Ergebnissen verwendet werden. Optional. | qodana-report |
cache-dir | Verzeichnis zum Speichern von Qodana -Cache. Optional. | ${{ runner.temp }}/qodana/caches |
use-caches | Verwenden Sie Github Caches für Qodana -Läufe. Optional. | true |
primary-cache-key | Legen Sie den primären Cache -Schlüssel ein. Optional. | qodana-2024.3-${{ github.ref }}-${{ github.sha }} |
additional-cache-key | Legen Sie den zusätzlichen Cache -Schlüssel ein. Optional. | qodana-2024.3-${{ github.ref }} |
cache-default-branch-only | Laden Sie Cache nur für die Standardzweig hoch. Optional. | false |
use-annotations | Verwenden Sie Annotation, um die Ergebnisse in der GitHub -Benutzeroberfläche zu markieren. Optional. | true |
pr-mode | Analysieren Sie nur geänderte Dateien in einer Pull -Anfrage. Optional. | true |
post-pr-comment | Veröffentlichen Sie einen Kommentar mit der Qodana -Ergebniszusammenfassung in die Pull -Anfrage. Optional. | true |
github-token | Github Token, um auf das Repository zuzugreifen: Postanmerkungen, Kommentare. Optional. | ${{ github.token }} |
push-fixes | Drücken Sie Qodana-Fixes in das Repository, kann none sein, branch zum aktuellen Zweig oder pull-request . Optional. | none |
Alle Probleme, Feature -Anfragen und Unterstützung im Zusammenhang mit Qodana werden auf YouTrack behandelt.
Wenn Sie ein neues Problem einreichen möchten, verwenden Sie bitte den Link YouTrack | Neues Problem.