Qodana는 버그, 보안 취약점, 복제 및 결함에 대한 수정을 식별하고 제안하는 코드 품질 모니터링 도구입니다.
목차
qodana scan github 동작을 사용하면 github 저장소에서 Qodana를 실행할 수 있습니다.
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 Scan 단계의 env 섹션에 QODANA_TOKEN 변수를 추가하십시오.이 워크 플로를 사용하여 Qodana는 메인 브랜치, 릴리스 브랜치 및 리포지토리에 오는 풀 요청에서 실행됩니다.
참고 : fetch-depth: 0 Qodana가 풀 요청 모드에서 작동하는 경우 (해당 풀 요청에만 나타난 보고서)의 경우 체크 아웃에 필요합니다.
다른 작업이 병렬로 실행되므로 Qodana에 대한 별도의 워크 플로 파일이있는 것이 좋습니다.

Qodana를 자동으로 찾은 문제를 해결하고 변경 사항을 저장소로 밀기 위해서는
qodana.yaml 파일에 fixesStrategy 지정하십시오.args 속성을 빠른 고정 전략으로 설정할 수 있습니다. --apply-fixes 또는 --cleanuppush-fixes 속성을 설정하십시오pull-request : 수정 사항이있는 새 지점을 만들고 원래 지점에 풀 요청을 만듭니다.branch : 원래 분기에 고정을 푸시합니다. 또한 pr-mode false 로 설정하십시오. 현재이 모드는 수정 사항을 적용하는 데 지원되지 않습니다.contents: write , pull-requests: write , checks: write )push-fixes 속성에 pull-request 값을 사용하는 경우 : 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 }} Qodana를 사용하여 프로젝트에 대한 Github 코드 스캔을 설정할 수 있습니다. 이를 위해 Qodana 스캔의 기본 구성 바로 아래의 code_quality.yml 워크 플로 파일 에이 줄을 추가하십시오.
- uses : github/codeql-action/upload-sarif@v2
with :
sarif_file : ${{ runner.temp }}/qodana/results/qodana.sarif.json 이 샘플은 Sarif-Formatted Qodana 보고서를 GitHub에 업로드하기위한 codeql-action 호출하고 sarif_file 키를 사용하여 보고서 파일을 지정합니다.
GitHub 코드 스캔은 검사 결과를 타사 도구로 내보내지 않으므로 Qodana의 추가 처리를 위해이 데이터를 사용할 수 없습니다. 이 경우 검사 결과를 GitHub 코드 스캔에 제출하기 전에 Qodana 측에 기준선 및 품질 게이트 처리를 설정해야합니다. 자세한 내용은 품질 게이트 및 기준선 섹션을 참조하십시오.
Qodana 품질 게이트가 실패한 경우 풀 요청 병합을 차단하기 위해 GitHub를 시행 할 수 있습니다. 이를 위해 아래에 설명 된대로 지점 보호 규칙을 만듭니다.
main 브랜치를 대상으로하는 pull_request 이벤트에서 워크 플로를 실행하도록 설정하십시오. on :
pull_request :
branches :
- main main 대신 여기에서 지점을 지정할 수 있습니다.
fail-threshold 옵션의 문제 수 (정수)를 설정하십시오.main 추가하십시오.Qodana 상태 확인을 검색 한 다음 확인하십시오.품질 게이트 및 기준선 기능을 결합하여 기술 부채를 관리하고 새로운 문제 만보 고하고 너무 많은 문제가 포함 된 당김 요청을 차단할 수 있습니다.
다음 단계에 따라 프로젝트의 기준을 설정하십시오.
cd project
qodana scan --show-report http://localhost:8080/ 에서 보고서를 열고, 기준선에 감지 된 문제를 추가하고 qodana.sarif.json 파일을 다운로드하십시오.
qodana.sarif.json 파일을 GitHub의 프로젝트 루트 폴더에 업로드하십시오.
Append-- --baseline,qodana.sarif.json Qodana 스캔 조치 구성 구성에 대한 args code_quality.yml 파일의 매개 변수 :
- name : Qodana Scan
uses : JetBrains/qodana-action@main
with :
args : --baseline,qodana.sarif.json기준선을 업데이트하려면이 단계를 다시 한 번 반복해야합니다.
이부터 Github은 기준선에 새로운 것으로 추가되지 않은 문제에 대해서만 변경 사항을 생성합니다.
기준선에 추가로 품질 게이트를 설정하려면이 줄을 baseline-path 경로 바로 다음에 code_quality.yml 에 추가하십시오.
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 결과 아티팩트 이름을 지정하십시오. 선택 과목. | qodana-report |
cache-dir | Qodana 캐시를 저장하는 디렉토리. 선택 과목. | ${{ runner.temp }}/qodana/caches |
use-caches | Qodana Runs에 Github 캐시를 사용하십시오. 선택 과목. | 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 수정을 리포지토리에 푸시하고, 현재 분기 branch none pull-request 될 수 있습니다. 선택 과목. | none |
Qodana와 관련된 모든 문제, 기능 요청 및 지원은 YouTrack에서 처리됩니다.
새 문제를 제출하려면 YouTrack 링크를 사용하십시오 | 새로운 문제.