Qodana 2024.1 ヘルプ

モノリポジトリプロジェクトをインスペクションする

モノリポジトリは、複数のプロジェクトを含むリポジトリです。例:

root/ backend/ frontend/ .git/

この例では、backend/ フォルダーには Java プロジェクトが含まれ、frontend/ フォルダーには JavaScript プロジェクトが含まれ、.git/ フォルダーには VCS 関連の情報が含まれています。

このセクションでは、以下を使用してモノリポジトリを準備およびインスペクションする方法について説明します。

プロジェクトを準備する

構成ファイル

2 つのプロジェクトをインスペクションするように Qodana を構成するには、各リンターごとに 1 つずつ、2 つの YAML 形式の構成ファイルを作成する必要があります。この例では、これらは qodana-backend.yaml ファイルと qodana-frontend.yaml ファイルになります。

Qodana を実行すると、.git/ フォルダーを使用して、検出された問題を Git リポジトリ内の対応するソースコードにリンクし、IDE 内からインスペクションレポートを探索します。

root/ フォルダーの内容は次のとおりです。

root/ backend/ frontend/ .git/ qodana-backend.yaml qodana-frontend.yaml

Qodana クラウド

Qodana クラウド(英語)を使用してインスペクションレポートを表示できます。Qodana クラウド Web サイトで、frontend プロジェクト用のインスペクションレポートを保存するためのプロジェクトを 1 つ作成し、backend プロジェクト用に別のプロジェクトを作成します。

プロジェクトを作成したら、そのプロジェクトトークンを使用して Qodana を実行できます。

Qodana の実行

各 Qodana リンターは特定のプログラミング言語のセットをインスペクションできるため、Qodana CLI および Qodana の Docker イメージをモノリポジトリ上で 2 回 (モノリポジトリに含まれるプロジェクトごとに 1 回) 実行する必要があります。

これらのスニペットは、プロジェクトトークンを参照する QODANA_TOKEN 変数を使用します。 --source-directory オプションは、インスペクションするプロジェクトフォルダーを指定します。 --config オプションは、使用する Qodana 構成ファイルを指定します。以下は、backend プロジェクトのスニペットです。

qodana scan \   -e QODANA_TOKEN="<cloud-project-token-for-backend-project>" \   --source-directory backend \   --config qodana-backend.yaml

frontend プロジェクトのスニペットは次のとおりです。

qodana scan \   -e QODANA_TOKEN="<cloud-project-token-for-frontend-project>" \   --source-directory frontend \   --config qodana-frontend.yaml

これらのスニペットは、プロジェクトトークンを参照する QODANA_TOKEN 変数を使用します。 --source-directory オプションは、インスペクションするプロジェクトディレクトリを指定します。 --config オプションは、使用する Qodana 構成ファイルを指定します。以下は、backend プロジェクトのスニペットです。

docker run \   -v "$PWD":/data/project/ \   -e QODANA_TOKEN="<cloud-project-token-for-backend-project>" \   jetbrains/qodana-jvm:latest \   --source-directory backend \   --config qodana-backend.yaml

frontend プロジェクトのスニペットは次のとおりです。

docker run \   -v "$PWD":/data/project/ \   -e QODANA_TOKEN="<cloud-project-token-for-frontend-project>" \   jetbrains/qodana-js:latest \   --source-directory frontend \   --config qodana-frontend.yaml

この手順に従って、Qodana スキャン GitHub アクションを使用して、GitHub 上で Qodana を実行できます。

  1. GitHub UI の設定タブで、QODANA_TOKEN_BACKEND および QODANA_TOKEN_FRONTEND 暗号化シークレット(英語)を作成し、Qodana クラウドで生成されたプロジェクトトークンをその値として保存します。

  2. GitHub UI のアクションタブで、新しいワークフローを設定し、.github/workflows/code_quality.yml ファイルを作成します。

  3. このワークフロー構成を .github/workflows/code_quality.yml ファイルに保存します。

    name: Qodana on: workflow_dispatch: pull_request: push: jobs: qodana-backend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: 'Qodana Backend' uses: JetBrains/qodana-action@v2024.1 with: args: | --source-directory,backend,--config,qodana-backend.yaml artifact-name: qodana-backend env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN_BACKEND }} qodana-frontend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: 'Qodana Frontend' uses: JetBrains/qodana-action@v2024.1 with: args: | --source-directory,frontend,--config,qodana-frontend.yaml artifact-name: qodana-frontend env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN_FRONTEND }}

インスペクションの結果を見る

おめでとうございます。これで、Qodana クラウド(英語)に移動して、モノレポプロジェクト内の各プロジェクトのインスペクションの結果を確認できるようになりました。

関連ページ:

Qodana Docker イメージ

基本的に、Docker イメージの名前はリンターの名前と似ています。Qodana リンターには次の Docker イメージが提供されています。JVM 用 Qodana、JVM の Qodana コミュニティ、Android のための Qodana コミュニティ、PHP 用の Qodana、Python 用 Qodana、Python のための Qodana コミュニティ、JS 用 Qodana、Go 用 Qodana、.NET 用 Qodana、.NET の Qodana コミュニティ、...

JetBrains IDE

JetBrains IDE で Qodana を実行して、コードベースをインスペクションできます。Qodana は、JetBrains Toolbox アプリ経由でインストールされたいくつかの JetBrains IDE (IntelliJ IDEA、PhpStorm、WebStorm、Rider、GoLand、PyCharm、Rider など) をサポートします。IDE を使用すると、次のことが可能になります。Qodana をローカルで実行する、Qodana クラウドに接続する、CI パイプライン...

プロジェクト

プロジェクトは、Qodana レポートを蓄積します。各プロジェクトは、プロジェクトトークンによって一意に識別されます。このトークンは、Qodana レポートのアップロードに使用されます。プロジェクトの作成:オンボーディング段階では、Qodana Cloud がすでに最初のプロジェクトの作成を支援しているため、これらの手順は追加のプロジェクトを作成する場合にのみ適用されます。チームページで、ボタンをクリックします。以下で説明するウィザードの手順に従います。Qodana Cloud からアクセスでき...

JVM

すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された IDE に基づいています。Python プロジェクトを分析するには、次のリンターを使用できます。JVM 用の Qodana は IntelliJ IDEA Ultimate に基づいており、Ultimate および Ultimate Plus ライセンスでライセンスされています。Qodana Community for JVM および Qodana Community for Android は、Intel...