JVM
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された IDE に基づいています。Python プロジェクトを分析するには、次のリンターを使用できます。
JVM 用の Qodana は IntelliJ IDEA Ultimate に基づいており、Ultimate および Ultimate Plus ライセンスでライセンスされています。
Qodana Community for JVM および Qodana Community for Android は、IntelliJ IDEA Community に基づいており、Community ライセンスに基づいてライセンスされます。
サポートされている機能のリストを表示するには、サポートされているテクノロジーと機能セクションに移動します。
始める前に
Qodana を実行する前に、プロジェクト用に JDK を構成できます。
Qodana の実行
JetBrains IDE
IntelliJ IDEA で Qodana を実行し、保存および分析の目的でインスペクションレポートを Qodana クラウドに送信できます。
IntelliJ IDEA で、
に移動します。ダイアログでは、Qodana を設定できます。
このダイアログには次のコンポーネントが含まれています。
名前
説明
qodana.yaml
ファイルテキストフィールドでは、このファイルで Qodana が使用するコード分析を設定できます。利用可能な設定オプションの詳細について
オプション
Qodana Cloud にレポートを送信する場合は、このオプションをチェックして、Qodana クラウドで生成されたプロジェクトトークンを貼り付けることができます。
オプション
このオプションをチェックすると、このダイアログで作成した Qodana 設定をプロジェクトのプロジェクトルートの
qodana.yaml
ファイルに保存できます。オプション
ベースライン機能を使用すると、特定の問題の分析をスキップできます
コードを分析するには、
をクリックします。インスペクションの結果を確認します。
ツールウィンドウの タブで、
CI/CD
Qodana を実行する前に、Qodana クラウドアカウントを作成します。Qodana Cloud で、ライセンスの識別と検証に Qodana が使用するプロジェクトトークンを生成します。Qodana Cloud で、インスペクションレポートを確認できます。
以下のように Qodana GitHub のスキャンアクション(英語)を使用して Qodana を実行できます。
GitHub UI の
タブで、QODANA_TOKEN
暗号化シークレット(英語)を作成し、プロジェクトトークンをその値として保存します。GitHub UI の
タブで、新しいワークフローを設定し、.github/workflows/code_quality.yml
ファイルを作成します。main
とmaster
ブランチ、およびリリースブランチとリポジトリに届くプルリクエストをインスペクションするには、このワークフロー構成を.github/workflows/code_quality.yml
ファイルに保存します。name: Qodana on: workflow_dispatch: pull_request: push: branches: # Specify your branches here - main # The 'main' branch - master # The 'master' branch - 'releases/*' # The release branches 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/qodana-action@v2024.1 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
さらなる構成例については、GitHub アクションセクションを参照してください。
これらのプラグインが Jenkins インスタンスにインストールされていることを確認してください。
Docker イメージを実行するには Docker(英語) と Docker パイプライン(英語)が必要です。
Jenkins プロジェクトでの git 操作には git(英語) が必要です。
Docker がインストールされており、Jenkins からアクセスできることを確認してください。
該当する場合は、Docker ドキュメントの Docker を非 root ユーザーとして管理する(英語)セクションに従って、jenkins
ユーザーが Docker にアクセスできることを確認してください。
Jenkins ドキュメントポータル(英語)の説明に従って、マルチブランチパイプラインプロジェクトを作成します。
プロジェクトリポジトリのルートディレクトリに、Jenkinsfile
を作成します。
このスニペットを Jenkinsfile
に保存します:
プロジェクトリポジトリが GitLab CI/CD からアクセスできることを確認してください。
プロジェクトのルートディレクトリに .gitlab-ci.yml
ファイルを作成し、次の構成を保存します。
このスニペットでは:
cache
(英語) キーワードは、GitLab CI/CD キャッシュに Qodana キャッシュを保存するように設定し、その後の実行が高速化されます。script
(英語) キーワードはqodana
コマンドを実行し、シェルコマンドセクションで説明されている Qodana 構成オプションを列挙します。variables
キーワードは、プロジェクトトークンを参照するQODANA_TOKEN
変数(英語)を定義します。
ローカルで実行する他の方法
Qodana をローカルで実行するには 2 つのオプションがあります: Qodana CLI(英語) を実行するか、Qodana の Docker イメージを直接使用することができます。Qodana リンターは Docker コンテナーで配布されるため、Docker をローカルマシンにインストールする必要があります。
Linux を使用している場合は、現在の非 root ユーザー(英語)で Docker を実行できるはずです。詳細についてはインストールページ(英語)を確認してください。
Qodana をローカルで実行する方法の例を次に示します。
ここで、QODANA_TOKEN
変数はプロジェクトトークンを参照します。
-l
オプションを省略すると、デフォルトで JVM リンターの Qodana が実行されます。
まず、Docker Hub からイメージをプルします (最新バージョンを取得する場合にのみ必要です)。
source-directory
がプロジェクトのルートを指し、QODANA_TOKEN
がプロジェクトトークンを参照して、ローカル分析を開始します。
ブラウザーで Qodana クラウド(英語)を開き、分析結果を調べて分析を再構成します。詳細については、インスペクションレポートセクションを参照してください。
分析結果を調べる
JetBrains IDE
以下に説明するように、Qodana クラウドから最新の Qodana レポートを IDE に読み込むことができます。
IDE で、
に移動します。ダイアログで、 をクリックします。
これにより、認証ページにリダイレクトされます。
ローカルプロジェクトをリンクする Qodana クラウドプロジェクトを選択します。
オプションをチェックすると、Qodana クラウドから最も実際的で関連性の高いレポートを受け取ることができます。
この場合、IDE は現在のリビジョン ID (HEAD) に対応するリビジョン ID を持つレポートを Qodana クラウドから検索して取得します。このレポートが見つからなかった場合、IDE は現在のリビジョン ID (HEAD) に最も近いリビジョンを持つ前のレポートを選択します。それ以外の場合、IDE は Qodana クラウドから利用可能な最新のレポートを取得します。
分析結果を表示します。
ツールウィンドウの タブで、
Qodana クラウド
Qodana がプロジェクトを分析し、分析結果を Qodana Cloud にアップロードしたら、Qodana クラウド(英語)でプロジェクトに移動し、分析結果レポートを確認します。
![分析レポートの例 Analysis report example](https://resources.jetbrains.com/help/img/qodana/2024.1/qc-report-example.png)
Qodana レポート UI の詳細については、「インスペクションレポート」セクションを参照してください。
Qodana 構成を拡張
分析範囲の調整
Qodana は、GitHub(英語) でホストされる 2 つの定義済みプロファイルをすぐに使用できます。
qodana.starter
はデフォルトのプロファイルであり、より包括的なqodana.recommended
プロファイルのサブセットです。qodana.recommended
は CI/CD パイプラインでの実行に適しており、主にデフォルトの IntelliJ IDEA Ultimate プロファイルを実装します。詳細については、PyCharm のドキュメントを参照してください。
YAML および XML 形式の構成を使用して、Qodana プロファイルをカスタマイズできます。
構成の基本について詳しくは、Qodana を自分好みに設定するセクションを参照してください。完全なガイドは、カスタム YAML プロファイルおよびカスタム XML プロファイルセクションで入手できます。
ベースラインの有効化
ベースライン機能を使用すると、特定の問題の分析をスキップできます。ベースラインに関する情報は、SARIF 形式のファイルに含まれています。
JetBrains IDE
IDE で、
ツールウィンドウに移動します。ツールウィンドウで、 タブをクリックします。
タブで、 ボタンをクリックします。
開いたダイアログで、
セクションを展開し、ベースラインファイルへのパスを指定して、 をクリックします。
CI/CD
このスニペットには、SARIF 形式のベースラインファイルへのパスを指定する args: --baseline,qodana.sarif.json
行が含まれています。
stages
ブロックには、SARIF 形式のベースラインファイルへのパスを指定する --baseline <path/to/qodana.sarif.json>
行が含まれています。
script
ブロックの --baseline <path/to/qodana.sarif.json>
行を使用して、ベースライン機能を呼び出すことができます。
ローカル実行
これらのスニペットでは、--baseline
オプションによって、ベースラインを含む SARIF 形式のファイルへのパスが構成されます。
プルリクエストの分析
CI/CD
GitHub UI の
タブで、QODANA_TOKEN
暗号化シークレット(英語)を作成し、プロジェクトトークンをその値として保存します。GitHub UI の
タブで、新しいワークフローを設定し、.github/workflows/code_quality.yml
ファイルを作成します。このスニペットを
.github/workflows/code_quality.yml
ファイルに追加します。name: Qodana on: workflow_dispatch: pull_request: push: branches: # Specify your branches here - main # The 'main' branch - 'releases/*' # The release branches 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/qodana-action@v2024.1 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
プロジェクトのルートディレクトリに、次のスニペットを含む .gitlab-ci.yml
ファイルを保存します。
ここで、--diff-start
オプションは、比較のベースとして機能するコミットのハッシュを指定します。
ローカル実行
コードの変更を分析するには、--diff-start
オプションを使用し、比較のベースとなるコミットのハッシュを指定します。
サポートされているテクノロジーと機能
へのサポート | 名前 | JVM 用 Qodana | JVM の Qodana コミュニティ | Android のための Qodana コミュニティ |
---|---|---|---|---|
プログラミング言語 | Java Kotlin Groovy | ✔リストのすべて | ✔リストのすべて | ✔リストのすべて |
フレームワークおよびライブラリ | JavaBeans JUnit Lombok TestNG JPA Reactive Streams JavaFX Java EE JAX-RS JSP Spring | ✔ ✔ ✔ ✔ ✔ ✔ ❌ ✔ ✔ ✔ ✔ | ✔ ✔ ✔ ✔ ✔ ✔ ❌ ❌ ❌ ❌ ❌ | ✔ ✔ ❌ ✔ ❌ ❌ ✔ ❌ ❌ ❌ ❌ |
データベースと ORM | Hibernate ORM MongoDB Oracle MySQL PostgreSQL SQL SQL サーバー | ✔リストのすべて | ❌なし | ❌なし |
マークアップ言語 | CSS FreeMarker HTML JSON および JSON5 RELAX NG XML XPath XSLT YAML TOML | ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ | ❌ ❌ ✔ ✔ ✔ ✔ ❌ ❌ ❌ ❌ | ❌ ❌ ✔ ✔ ✔ ✔ ❌ ❌ ✔ ✔ |
スクリプト言語 | シェルスクリプト 式言語 (EL) | ✔ ✔ | ❌ ❌ | ✔ ❌ |
ビルド管理 | Ant Gradle Maven | ✔リストのすべて | ✔リストのすべて | ✔リストのすべて |
Qodana の特徴 | ✔リストのすべて | ✔ ✔ ❌ ❌ ❌ ❌ | ✔ ✔ ❌ ❌ ❌ ❌ |
関連ページ:
![](https://pleiades.io/icons/jetbrains_logo.png)
価格モデル
ニーズに応じて、次の表に示す適切なライセンスを選択できます。Community フリー孤立した問題の解決に最適 Ultimate 詳細については、サブスクリプションのオプションと価格を参照してくださいさまざまなビジネスタスクを解決するために設計されています。試用版をご利用いただけます。Ultimate Plus 詳細については、サブスクリプションのオプションと価格を参照してください Ultimate ライセンスと同じ機能がすべて含まれていますが、追加機能と無制限の履歴データストレージも含まれています。試用...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/qc-about-diagram.png)
Qodana クラウド
Qodana を複数のプロジェクトまたはリポジトリで実行する場合、特にコードベースが複数のサーバーと仮想プライベートネットワークに分散されていて、各チームが独立して作業している場合は、すべての分析レポートを 1 か所に読み込んで集約すると便利です。このような場合、すべての Qodana インスタンスからレポート情報を収集して表示するための集中型ソリューションが役立ちます。Qodana クラウドは、さまざまな Qodana レポートを蓄積し、プロジェクトの進捗状況を一元的に追跡するのに役立つクラウ...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/cloud-forward-reports-teamcity.png)
フォワードレポート
このセクションでは、このソフトウェアを使用して Qodana レポートを Qodana クラウドに転送する方法について説明します。Docker および Qodana CLI、Azure パイプライン、Bitbucket クラウド、CircleCI、GitHub アクション、GitLab CI/CD、Jenkins、Space Automation、TeamCity、これらすべての場合において、このドキュメント
![](https://resources.jetbrains.com/help/img/qodana/2024.1/qc-create-project.png)
プロジェクト
プロジェクトは、Qodana レポートを蓄積します。各プロジェクトは、プロジェクトトークンによって一意に識別されます。このトークンは、Qodana レポートのアップロードに使用されます。プロジェクトの作成:オンボーディング段階では、Qodana Cloud がすでに最初のプロジェクトの作成を支援しているため、これらの手順は追加のプロジェクトを作成する場合にのみ適用されます。チームページで、ボタンをクリックします。以下で説明するウィザードの手順に従います。Qodana Cloud からアクセスでき...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/baseline-enabled.png)
ベースライン
ベースラインは、特定の Qodana 実行時に取得され、ファイルに含まれているコードベースの問題のスナップショットです。ベースライン機能を使用すると、現在のコードとベースラインの状態を比較し、新しい問題、変更されていない問題、解決された問題を確認できます。この機能は、Community、Ultimate、Ultimate Plus ライセンスとその試用版で利用可能なすべてのリンターでサポートされています。使い方:ベースラインなしで Qodana を実行すると、現在の実行時に検出された問題を確認...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/ide-plugin-intro-tool-window.png)
JetBrains IDE
JetBrains IDE で Qodana を実行して、コードベースをインスペクションできます。Qodana は、JetBrains Toolbox アプリ経由でインストールされたいくつかの JetBrains IDE (IntelliJ IDEA、PhpStorm、WebStorm、Rider、GoLand、PyCharm、Rider など) をサポートします。IDE を使用すると、次のことが可能になります。Qodana をローカルで実行する、Qodana クラウドに接続する、CI パイプライン...