Qodana 2024.1 ヘルプ

トラブルシューティング

このセクションには、問題のトラブルシューティングに役立つ情報が記載されています。

Docker イメージパス

パス

説明

/data/project

解析対象プロジェクトのルートディレクトリ

/data/results

解析結果を格納するディレクトリ

/opt/idea

IDE ディストリビューションを含むディレクトリ

/root/.config/idea

IDE に設定が含まれるディレクトリ

/data/profile.xml

プロファイルが CLI または qodana.yaml ファイルを通じて以前に設定されていない場合に使用されます。

Maven および Gradle プロジェクトの場合、Qodana は次のディレクトリを使用してサードパーティライブラリにアクセスします。

パス

説明

/data/cache/.m2

Maven プロジェクトの依存関係

/data/cache/gradle

Gradle プロジェクトの依存関係

これらのディレクトリをマウントすると、Qodana がこれらのリンターを使用しているときにすべての依存関係を再度ダウンロードする手間が省けます。

Qodana の動作を調査するためのファイルのリスト

/data/results ディレクトリを使用して Qodana の動作を調べるには、いくつかのオプションがあります。

  • /data/results/projectStructure/Modules.json ファイルには、Qodana によって検出されたすべてのモジュールがリストされます。これは、IDEA でプロジェクトを開いたときに表示されるリストと同じである必要があります。そうでない場合は、Maven の場合は pom.xml を、Gradle 構成の場合は build.gradle ファイルを確認してください。

  • /data/results/ ディレクトリには、考えられる問題を検出した各インスペクションが ID.json という名前の独自のファイルを作成します。ここで、ID は、qodana.yaml でインスペクションを含めるか除外するために使用できるインスペクション名です。インスペクション ID の完全なリストは、/groups/*/inspections/*/shortName パターンを使用して /data/results/.descriptions.json ファイルで検索できます。

  • /data/results/log/idea.log では、疑わしい警告を調査できます。

Qodana Cloud に必要な IP アドレス

コントリビューターカウント機能が正しく動作するようにするには、IP アドレス範囲 54.76.32.8/32 を、ユーザー側で許可される受信接続のリストに追加します。

重大度レベル

この表は、JetBrains IDE、SARIF ファイル、Qodana レポートの重大度間の関係を示しています。

IDE の重大度

SARIF 重大度

コダナレポート重大度

ERROR

ERROR

クリティカル

警告

警告

弱い警告

適度

TYPO

INFORMATION

情報

OTHER

情報

欠落しているファイル、パッケージ、モジュール、クラスに関するエラーメッセージ

インスペクション中に、Qodana は欠落しているファイル、パッケージ、モジュール、クラスについて報告する場合があります。この場合、プロジェクトをコードインスペクション用に準備する必要があります。例: プロジェクトを準備するセクションに示すように、スクリプトを作成し、それを実行するように Qodana を構成できます。

特定のファイルに対して特定のインスペクションを無効にする

特定のファイルに対してインスペクションを無効にするには、次の構成を含む qodana.yaml ファイルをプロジェクトルートに保存します。

exclude: - name: <inspection-name> paths: - <path/to/the/file/from/project/root>

クラスの上に noinspection コメントを追加することで、クラスに対してのみインスペクションを抑制することもできます。

// noinspection <inspection-name> export class WorkflowJobSubject { private static subject: Observable<GithubEvent<WorkflowJobEvent>> | null = null; private static GithubWebhookEventSubject: any;

リポジトリ内の特定のプロジェクトディレクトリをインスペクションする

一般的なプロジェクト構造は、次のようなディレクトリ構造になります。

repo/ .git/ project/ ...

ここで、repo/.git ディレクトリには Qodana がアクセスできる必要がある情報が含まれており、repo/project ディレクトリには Qodana によってインスペクションする必要があるプロジェクトが含まれています。これらすべてのサンプルは、 --project-dir オプションを使用して repo/project ディレクトリをマウントしますが、QODANA_TOKEN 変数は Qodana クラウドプロジェクトトークンを参照します。

docker run \ -v repo/:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --project-dir=/data/project/project/
qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --project-dir=/data/project/project/
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/qodana-action@v2024.1 with: args: --project-dir,project env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}

プロキシサーバーの背後で Qodana を実行する

ニーズに応じて、既存の Qodana Docker イメージを使用してプロキシサーバーの背後で Qodana を実行したり、Docker イメージを最初から作成したりできます。

既存の Qodana Docker イメージをプロキシサーバーの背後で実行できるように準備するには、次の手順に従います。

  1. proxy.settings.xml ファイルを作成し、プロジェクトのルートにある .qodana ディレクトリに保存します。

  2. proxy.settings.xml ファイルに、プロキシサーバーに関する情報を保存します。

    <application> <component name="HttpConfigurable"> <option name="USE_HTTP_PROXY" value="true" /> <option name="PROXY_HOST" value="<ProxyHost>" /> <option name="PROXY_PORT" value="<ProxyPort>" /> <!-- Add more settings as needed --> </component> </application>
  3. qodana.yaml ファイルで、proxy.settings.xml ファイルを Qodana Docker イメージにコピーする次の boostrap コマンドを保存します。

    boostrap: cp .qodana/proxy.settings.xml /root/.config/idea/options/proxy.settings.xml

プロキシサーバー設定を含むカスタム Qodana イメージを作成するには、次の手順に従います。

  1. proxy.settings.xml ファイルを作成し、その中にプロキシサーバー情報を含めます。

    <application> <component name="HttpConfigurable"> <option name="USE_HTTP_PROXY" value="true" /> <option name="PROXY_HOST" value="<ProxyHost>" /> <option name="PROXY_PORT" value="<ProxyPort>" /> <!-- Add more settings as needed --> </component> </application>
  2. このサンプルを使用して Dockerfile を作成します。

    FROM docker.io/jetbrains/qodana-<linter>:2024.1 LABEL version="1.0.0" ##Copy the proxy.settings.xml file COPY proxy.settings.xml /root/.config/idea/options/proxy.settings.xml ##Copy the gradle.properties file (optional) COPY gradle.properties ~/.gradle/gradle.properties ##Install certificates COPY <your_certificate> <path_to_certificate> RUN $JAVA_HOME/bin/keytool -import -trustcacerts -alias dc-ca -keystore $JAVA_HOME/lib/security/cacerts -noprompt -storepass changeit -file <path_to_certificate> COPY <your_certificate> /etc/ssl/certs RUN chmod 444 /etc/ssl/certs/<your_certificate> ##Set proxy ENV http_proxy <proxy> ENV https_proxy <proxy> ENV HTTP_PROXY <proxy> ENV HTTPS_PROXY <proxy> ENV ftp_proxy $http_proxy ENV dns_proxy $http_proxy ENV rsync_proxy $http_proxy

関連ページ:

JVM 用 Qodana

JVM の Qodana は IntelliJ IDEA Ultimate に基づいています。IntelliJ IDEA Ultimate のすべての機能が組み込まれており、次のことに役立ちます。異常なコードと潜在的なバグを検出する、デッドコードを削除する、スペルの問題をハイライトする、全体的なコード構造を改善する、コーディングのベストプラクティスを紹介する、インスペクションの結果を Qodana クラウドにアップロードする、JVM 用 Qodana は、Java 用インスペクション、Kotlin、G...

インスペクションレポート

Qodana を使用すると、ローカルまたは Qodana クラウドで、インタラクティブでユーザーフレンドリーな形式でインスペクションレポートを確認できます。各レポートには次のタブが含まれています。実際の問題は、Qodana が最新のインスペクション中に検出した問題を明らかにします、ベースラインには、ベースラインとしてマークされ、それ以降修正されていない問題がリストされます。構成により、将来の使用に備えて Qodana を構成できます、ライセンス監査は

構造検索

構造検索は、JetBrains IDE に組み込まれた強力で柔軟なメカニズムです。検索テンプレートを使用して、セマンティクスを考慮してコードベースをインスペクションできるようにします。独自の検索テンプレートを作成し、Qodana インスペクションとして使用できます。使い方:例として、次の検索テンプレートを考えてみましょう。$Instance$.$MethodCall$($Parameter$) これにより、Java ステートメントを検出できます。のようなハードコードされたテキストを含むステートメ...