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...のような静的チェックツールはありましたが、これらと比較すると以下のようなメリットがあると考えられます。
- Intellij IDEAユーザであれば、手元のコード検査環境と、CI/CDでの検査を同じレベルにできる。
- 非Intellij IDEAユーザーでも、Intellij IDEA相当のコード解析・チェックが可能。
- Dockerイメージで提供されているため、様々なCI/CD環境に組み込むことが可能。
- 開発言語を問わず、同じ解析ツールが使用できる (ようになる予定。現状はJava, Kotlin, PHPなどのみ対応)
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によるチェック結果はこちらにDeployされています。
- 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
Author And Source
この問題について(JetBrains製の静的コード解析ツール Qodana をGitLab CIで使う), 我々は、より多くの情報をここで見つけました https://qiita.com/sashisusesouyu/items/44ee024c674e67b7d510著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .