JetBrains의 정적 코드 분석 도구 Qodana를 GitLab CI에서 사용
TL;DR
설정해 본 리포지토리는 이쪽.
- h.yoshida/qodana-sample · GitLab
- 2021/03/14 시점에서 굉장한 상태입니다. 앞으로 Qodana는 여전히 early access program의 서비스입니다 Qodana의 Docker Image 버전 업데이트, GitLab Runner 버전 업데이트로 작동하지 않을 수 있습니다.
.gitlab-ci.yml은 다음과 같습니다.
# 実際はstageを分けて使うのを推奨。
pages:
stage: deploy
image:
name: jetbrains/qodana:2020.3-eap
entrypoint: [""]
script:
- /opt/idea/bin/entrypoint --results-dir=$CI_PROJECT_DIR/qodana --save-report --report-dir=$CI_PROJECT_DIR/qodana/report
- ls -la
- mv qodana/report public
artifacts:
paths:
- public
only:
- master
이러한 화면에서 해석 결과가 나옵니다.
1. about Qodana
Qodana
는 JetBrains (Intellij IDEA와 같은 개발자)가 현재 개발중인 정적 코드 분석 도구입니다.
공식적으로 Docker 이미지가 제공되고, 이 Docker 이미지 안에서 Intellij에 의한 코드 해석이 실행되어 HTML 형식으로 리포트가 출력되도록 되어 있습니다.
종래부터, Java에서는 FindBugs, SpotBugs, PMD, etc...와 같은 정적 체크 툴은 있었습니다만, 이것들과 비교하면 이하와 같은 이점이 있다고 생각됩니다.
# 実際はstageを分けて使うのを推奨。
pages:
stage: deploy
image:
name: jetbrains/qodana:2020.3-eap
entrypoint: [""]
script:
- /opt/idea/bin/entrypoint --results-dir=$CI_PROJECT_DIR/qodana --save-report --report-dir=$CI_PROJECT_DIR/qodana/report
- ls -la
- mv qodana/report public
artifacts:
paths:
- public
only:
- master
Qodana
는 JetBrains (Intellij IDEA와 같은 개발자)가 현재 개발중인 정적 코드 분석 도구입니다.공식적으로 Docker 이미지가 제공되고, 이 Docker 이미지 안에서 Intellij에 의한 코드 해석이 실행되어 HTML 형식으로 리포트가 출력되도록 되어 있습니다.
종래부터, Java에서는 FindBugs, SpotBugs, PMD, etc...와 같은 정적 체크 툴은 있었습니다만, 이것들과 비교하면 이하와 같은 이점이 있다고 생각됩니다.
2. 사용법
공식 리포지토리에, 각종 CI 서비스로 사용하기 위한 샘플이 써 있어, 이것에 따르면 움직일 것입니다.
- JetBrains/Qodana: Source repository of Qodana Help
- Qodana/Docker at main · JetBrains/Qodana
다만, GitLab CI로 움직이는 경우는 latest의 Docker Image에서는 움직이지 않는 경우가 있는 것 같습니다. (그 중 latest에 받아들여질 것)
- Make Qodana docker image more usable to use in GitLab CI : QD-638
- GitLab CI does not work with 2021.1-eap : QD-728
설정해 보았습니다.
아래의 리포지토리에 코드, 설정 파일을 배치했습니다.
- h.yoshida/qodana-sample · GitLab
Qodana의 체크 결과는 여기에 배포됩니다.
- Qodana
다음과 같은주의 사항이 있습니다.
- CI 설정에서 캐시를 설정하지 않았기 때문에 매번 시간이 걸립니다. 그 중 대응합니다.
- GitLab CI로 이동했을 때, 위의 QD-638의 Issue에 있는 내용과 같은 내용을 밟고, 60분간 Runner가 계속 움직여 Time Out에서 강제 종료한 적이 있었으므로, Time Out을 15 분으로 설정합니다.
- 아직 EAP이므로 동작이 불안정해질 가능성이 있으므로, Runner의 가동 시간을 신경쓰는 사람은 일단 짧게 설정해 두는 것이 좋을지도 모릅니다.
3. 사용해 본 감상, 신경이 쓰이는 점
사실상 표준이 될지 모르겠지만, Intellij IDEA 사용자에게는 수중과 CI 측의 검사 레벨을 동일하게 할 수 있는 것이 꽤 좋을 것이라고 생각합니다.
아직 EAP이므로 사용시는 매뉴얼과 공식 YouTrack도 확인하면서 사용해야 할 것 같습니다.
Qodana 공식 리포지토리 및 JetBrains의 EAP에 대한 설명 등은 충분히 확인한 후 사용을 부탁드립니다.
By using Qodana, you agree to the JetBrains EAP user agreement and JetBrains privacy policy. JetBrains/Qodana: Source repository of Qodana Help
아래의 리포지토리에 코드, 설정 파일을 배치했습니다.
- h.yoshida/qodana-sample · GitLab
Qodana의 체크 결과는 여기에 배포됩니다.
- Qodana
다음과 같은주의 사항이 있습니다.
- CI 설정에서 캐시를 설정하지 않았기 때문에 매번 시간이 걸립니다. 그 중 대응합니다.
- GitLab CI로 이동했을 때, 위의 QD-638의 Issue에 있는 내용과 같은 내용을 밟고, 60분간 Runner가 계속 움직여 Time Out에서 강제 종료한 적이 있었으므로, Time Out을 15 분으로 설정합니다.
- 아직 EAP이므로 동작이 불안정해질 가능성이 있으므로, Runner의 가동 시간을 신경쓰는 사람은 일단 짧게 설정해 두는 것이 좋을지도 모릅니다.
3. 사용해 본 감상, 신경이 쓰이는 점
사실상 표준이 될지 모르겠지만, Intellij IDEA 사용자에게는 수중과 CI 측의 검사 레벨을 동일하게 할 수 있는 것이 꽤 좋을 것이라고 생각합니다.
아직 EAP이므로 사용시는 매뉴얼과 공식 YouTrack도 확인하면서 사용해야 할 것 같습니다.
Qodana 공식 리포지토리 및 JetBrains의 EAP에 대한 설명 등은 충분히 확인한 후 사용을 부탁드립니다.
By using Qodana, you agree to the JetBrains EAP user agreement and JetBrains privacy policy. JetBrains/Qodana: Source repository of Qodana Help
Reference
이 문제에 관하여(JetBrains의 정적 코드 분석 도구 Qodana를 GitLab CI에서 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sashisusesouyu/items/44ee024c674e67b7d510텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)