シェルコマンド
このセクションでは、Qodana の Docker イメージと Qodana CLI(英語) ツールを構成する方法について説明します。どちらのツールもローカルと CI/CD パイプラインで使用できます。いくつかのオプションは、Qodana CLI でのみ使用できます。
場合によっては、このセクションでも説明されている qodana.yaml
ファイルを使用して構成できます。
Qodana のバージョン 2022.3 以降、Ultimate と Ultimate Plus リンターではプロジェクトトークンを参照するために QODANA_TOKEN
変数が必要です。Qodana のコミュニティリンターを実行する場合、Qodana クラウドで Qodana レポートを表示する場合にのみ QODANA_TOKEN
を使用する必要があります。
Qodana CLI
Qodana CLI(英語) はファイルを <userCacheDir>
ディレクトリに保存します。これについては、このセクション全体で何度か説明します。オペレーティングシステムに応じた <userCacheDir>
ディレクトリの場所のリストは次のとおりです。
オペレーティングシステム | パス |
---|---|
macOS |
|
Linux |
|
Windows |
|
プロジェクトディレクトリで qodana init
コマンドを実行すると、Qodana CLI により、インスペクション中に実行されるリンターを選択し、選択内容を qodana.yaml
に保存できます。完了したら、コマンドでリンターを指定する必要はありません。これについては、このセクション全体で説明します。
qodana init
コマンドの詳細な説明は、 プロジェクトの構成セクションで参照できます。
パス
次の表に、Docker イメージと Qodana CLI で使用できるパスを示します。
パス | 説明 |
---|---|
| プロジェクトのルートディレクトリ |
| 解析結果を保存するディレクトリ。Qodana を実行する前に空にする必要があります |
| IDE 配布ディレクトリ |
| IDE 構成ディレクトリ |
| |
| プロファイルファイルをバインドするディレクトリ |
| Maven プロジェクトの依存関係 |
| Gradle プロジェクトの依存関係 |
| NuGet プロジェクトの依存関係 |
| プラグインを含むディレクトリ |
| コードカバレッジファイルをマッピングするためのディレクトリ |
以下に、これらのパスを適用する方法の例をいくつか示します。
デフォルトのインスペクションプロファイルをオーバーライドする
デフォルトでは、Qodana は qodana.starter
プロファイルを採用しますが、代わりに独自のプロファイルをバインドして使用することもできます。
プロファイルの詳細については、このドキュメントのプロファイルを解決する順序およびプロファイルを設定するセクションを参照してください。
Gradle 設定を上書きする
JVM リンターの場合は、デフォルトの Gradle 設定をオーバーライドできます。
プラグインを管理する
必要なプラグインを JetBrains マーケットプレイス(英語)から自動的にダウンロードし、CI/CD パイプラインで使用できます。例: このシェルスクリプトは Twig(英語) プラグインをダウンロードします。
このスクリプトには、以下の表で説明するいくつかの変数が含まれています。
変数 | 説明 | サンプル |
---|---|---|
| プラグインをダウンロードする必要があるリンターの 2 文字のコード。使用可能な値は次のとおりです。
|
|
| JetBrains マーケットプレイス(英語)で利用可能なプラグインページのプラグイン識別子 | Twig(英語) プラグインページの |
| Qodana ログで利用可能な Qodana のビルド ID |
|
プラグインディレクトリにマウントされたプラグインファイルを使用して Qodana を実行できます。
Qodana ログの表示
ツールによっては、Qodana によって生成されたログファイルを表示できます。
$(pwd)/.qodana/results/
ディレクトリを Docker イメージの /data/results
ディレクトリにマウントできます。
Qodana の実行が完了すると、$(pwd)/.qodana/results/
ディレクトリ内のログファイルを表示できます。
Qodana を実行した後、プロジェクトルートで qodana show -d
コマンドを実行して、ログファイルが含まれるディレクトリを開きます。
オプション
Docker イメージは、いくつかの CLI オプションを使用して構成できます。これらすべてのオプションは 3 つのグループに分類できます。
オプション型 | サンプル |
---|---|
オプション名とその引数の間に等号 ( |
|
オプション名とその引数の間にスペース文字 ( |
|
引数は必要ありません |
|
これらすべてのオプションを呼び出すコマンドの例を次に示します。
利用可能なオプションを確認するには、次のコマンドを使用できます。
ディレクトリ
これらのオプションを使用すると、Docker イメージパスセクションで説明されているパスをオーバーライドできます。
オプション | デフォルト設定 | |
---|---|---|
| インスペクションされたプロジェクトのルートディレクトリ。 外部ディレクトリに含まれるファイルとディレクトリは、Qodana の実行中は使用されません。 |
|
| Qodana インスペクションの結果を保存するディレクトリ |
|
| 生成された HTML レポートを保存するディレクトリ。レポートを開くには、 |
|
| キャッシュを保存するディレクトリ |
|
| | なし |
レポートディレクトリを上書きする
この Docker コマンドは、--report-dir
オプションを使用してデフォルトのレポートディレクトリをオーバーライドし、 --save-report
オプションを使用して生成されたレポートをローカルファイルシステムに保存します。
生成されたレポートは、このコマンドの -v <html-report-directory>:/data/results/newreportdir/
行に従ってローカルファイルシステムに保存されます。
キャッシュの依存関係
実行間でキャッシュを保持することで、Qodana のパフォーマンスを向上させることができます。例: Maven、Gradle、npm、Yarn、NuGet などのパッケージおよび依存関係管理ツールは、ダウンロードされた依存関係のローカルキャッシュを保持します。
デフォルトでは、Qodana はコンテナー内の /data/cache
ディレクトリにキャッシュを保存します。 --cache-dir
オプションを使用して、この場所をオーバーライドできます。このデータはリポジトリごとであるため、branch-a
からビルドチェック branch-b
にキャッシュを渡すことができます。この場合、新しい依存関係が追加された場合のみダウンロードされます。
このコマンドは、ローカルディレクトリを Docker イメージの /data/cache
ディレクトリにマップし、キャッシュをローカルファイルシステムに保存します。
--cache-dir
オプションを使用すると、キャッシュディレクトリをオーバーライドできます。
GitHub ワークフローでは、依存関係のキャッシュ(英語)を使用できます。GitLab CI/CD には、プロジェクトディレクトリ内にのみ(英語)保存できるキャッシュ(英語)もあります。この場合、 qodana.yaml
を介してインスペクションからキャッシュディレクトリを除外できます。
プロファイル
デフォルトでは、Qodana は qodana.starter
プロファイルを使用してコードをインスペクションします。
Qodana プロファイルは、 qodana.yaml
ファイル内で構成するか、この表の CLI オプションを使用して構成およびオーバーライドできます。
オプション | 説明 | デフォルト設定 |
---|---|---|
| | 有効 |
| 事前定義された Qodana プロファイルのリストから取得されたプロファイル名、または XML 形式のプロファイルファイルに |
|
| プロファイルファイルへの絶対パス。 | なし |
| | Qodana が |
プロファイル名
--profile-name
オプションを使用すると、デフォルトのプロファイルまたはカスタムプロファイルのプロファイル名を使用して Qodana を実行できます。
このコマンドを使用すると、デフォルトのプロファイルをオーバーライドし、 qodana.recommended
プロファイルを使用して Qodana を実行できます。
カスタムプロファイルで Qodana を実行するには、実際のプロファイル名を使用します。
このコマンドを使用すると、カスタムプロファイルをバインドできます。
プロファイルパス
--profile-path
オプションを使用すると、プロファイルを含むファイルへのパスをオーバーライドできます。
このコマンドを使用すると、ファイルをプロファイルディレクトリにバインドでき、--profile-path
オプションは、どのプロファイルファイルを読み取るかを Qodana に指示します。
カスタム構成ファイル
プロジェクトには、YAML 形式のファイルに含まれる複数の Qodana 構成を含めることができます。これは、モノレポプロジェクトを分析したり、単一の CI ジョブを実行したりする場合に役立ちます。
--config
オプションと、プロジェクトルートからの相対的なファイルへのパスを使用できます。
ベースライン
ベースライン実行モードでは、新しい Qodana 実行がそれぞれ初期実行と比較されます。これは、古い問題を修正する可能性がなく、新しい問題の発生を防ぎたい場合に役立ちます。
ベースライン機能を使用するには、まず Qodana を実行し、レポート UI でベースラインと見なされる問題を選択します。最後に、ベースライン問題を含む SARIF 形式のファイルを保存します。
これはベースライン関連のオプションのリストです。
オプション | 説明 |
---|---|
| Qodana をベースラインモードで実行します。ベースライン状態の計算で使用される既存の SARIF レポートへのパスを指定します |
| 現在の実行には存在しないベースライン実行の結果を出力レポートに含めます |
これは、すべてのベースラインオプションを呼び出すコマンドです。
ここで、<path-to-the-SARIF-file>
はプロジェクトルートを基準とした qodana.sarif.json
ファイルへのパスであり、以前の Qodana 実行から取得されます。--baseline-include-absent
が呼び出されると、インスペクションの結果には、存在しない問題、またはベースライン実行でのみ検出され、現在の実行では検出されなかった問題が含まれます。
この実行に基づいて、SARIF 出力レポートにはベースライン状態に関する問題ごとの情報が含まれます。
コードカバレッジ
コードカバレッジファイルを含むディレクトリを Qodana リンターイメージの /data/coverage
ディレクトリにマッピングすることで、コードカバレッジを実行できます。
レポート
この表には、レポートに関連するオプションが含まれています。
オプション | 説明 |
---|---|
| HTML 形式のレポートを生成して保存する |
| HTML 形式のレポートを提供します。デフォルトでは、ポート |
レポートを保存する
Docker コマンドの --save-report
オプションを使用すると、生成された HTML レポートをローカルファイルシステムに保存できます。
レポートを表示する
このコマンドはホストマシンのポート 4040 で Web サーバーを実行するため、レポートは http://localhost:4040 で利用できるようになります。
あるいは、プロジェクトルートで qodana show
コマンドを実行できます。
Web サーバーを停止するには、Docker コンソールで Ctrl-C を押します。
クオリティゲート
Qodana を使用すると、しきい値として機能する品質ゲートまたは問題の数を構成できます。しきい値を超えると、インスペクションの実行は終了します。
オプション | 説明 |
---|---|
| 品質ゲートとして機能する問題の数を設定します |
以下は、問題の数が 10 を超えた場合にビルドを失敗するように Qodana に指示するコマンドです。
ベースラインモードを有効にして Qodana を実行すると、しきい値は新しい問題と存在しない問題の合計として計算されます。変更されていない結果は無視されます。
クイックフィックス
クイックフィックス戦略をコードベースに適用するには、--fixes-strategy
オプションを呼び出します。
Properties
--property=
オプションを使用すると、さまざまな Qodana パラメーターをオーバーライドできます。
オプション | 説明 |
---|---|
| 次の表記を使用して JVM プロパティを設定します。 --property=property.name=value1,...,valueN このオプションは、複数の JVM プロパティを設定するために複数回繰り返すことができます。 |
INFO メッセージを STDOUT に記録する
STDOUT のデフォルトのログレベルは WARN
です。idea.log.config.file
プロパティを使用してオーバーライドできます。
ユーザー統計を無効にする
使用状況統計のレポートを無効にするには、--property
オプションの idea.headless.enable.statistics
値を調整します。
プラグインの構成
idea.required.plugins.id
および idea.suppressed.plugins.id
プロパティを使用すると、特定の実行に必要なプラグインと、抑制されるプラグインのリストを指定できます。
変化の分析
オプション | 説明 |
---|---|
| 変更セット(マージやプルリクエストなど)に対して増分分析を実行する |
作業を終えて変更を分析したい場合は、--diff-start
オプションを使用して、比較のベースとなるコミットのハッシュを指定できます。
2 つのコミット間の変更セットを分析するには、--diff-start
と --diff-end
の両方のオプションを使用します。
シナリオの実行
オプション | 説明 | デフォルト設定 |
---|---|---|
| デフォルトの実行シナリオをオーバーライドする |
|
default
実行シナリオの適用は、次のコマンドを実行することと同じです。
PHP バージョンの移行シナリオを実行するには、次のコマンドを実行します。
レポートを Qodana クラウドに転送する
レポートを Qodana クラウドに転送するには、フォワードレポートセクションに従って、Docker 環境のリストを設定できます。
ヒープサイズを変更する
デフォルトでは、ヒープサイズはホスト RAM の 80% に設定されています。この設定は、_JAVA_OPTIONS
変数を使用して構成できます。
ヒープの構成の詳細については、Oracle ドキュメントのヒープチューニングパラメーター(英語)を参照してください。
idea.properties ファイルをオーバーライドする
idea.properties
は、IDE ファイルのデフォルトの場所を構成します。
IDEA_PROPERTIES
変数を使用して idea.properties
ファイルをオーバーライドできます。
root ユーザーと非 root ユーザーを構成する
デフォルトでは、Docker コンテナーは root
ユーザーで実行されるため、Qodana はプロジェクト情報を読み取り、インスペクション結果を書き込むことができます。実行後、results/
ディレクトリ内のすべてのファイルは root
ユーザーによって所有されます。
これを解決するには、コンテナーを通常のユーザーとして実行します。
この場合、ホスト上の results/
ディレクトリはすでに作成されており、ユーザーが所有している必要があります。それ以外の場合、Docker はそれを root
ユーザーとして作成し、Qodana はそれに書き込むことができなくなります。
TeamCity および Qodana CLI(英語) は、現在の非 root ユーザーを使用して Qodana を実行します。 bootstrap
セクションで起動した apt
ツールを使用して依存関係をインストールする場合、これは不便な場合があります。
TeamCity で root ユーザーとして Qodana を実行するには、Qodana ランナー構成のフィールドに -u root
オプションを追加します。
Qodana CLI を root ユーザーとして実行するには、qodana scan
コマンドに -u root
オプションを追加します。
Qodana CLI でのみ使用可能なオプション
プロジェクト構成
qodana init <options>
コマンドでは次のオプションを使用できます。
オプション | 説明 |
---|---|
| 強制初期化 (既存の有効な |
| |
| 設定するプロジェクトのルートディレクトリ (デフォルトは |
スキャンプロジェクト
qodana scan <options>
コマンドでは次のオプションを使用できます。
オプション | 説明 |
---|---|
| 使用するリンター(イメージ)を選択します。使用可能なイメージは次のとおりです: |
| コンテナーなしで Qodana を実行するために使用します。インストールされている IDE またはダウンロードされた IDE へのパス: 直接 URL または製品コードを指定します。オプション |
| インスペクション対象プロジェクトのルートディレクトリ (デフォルトの |
| Qodana インスペクションの結果を保存するディレクトリを上書きします (デフォルトの <userCacheDir>/JetBrains/Qodana/<linter>/results) |
| キャッシュディレクトリを上書きする (デフォルトの <userCacheDir>/JetBrains/Qodana/<リンター>/cache) |
| Qodana HTML レポートを保存するディレクトリを上書きします (デフォルトの <userCacheDir>/JetBrains/<linter>/results/report) |
| 見つかったすべての問題を、Qodana によって CLI 出力に出力します。 |
| 分析を実行する前にローカル Qodana キャッシュをクリアします |
| 特定のポートで HTML レポートを提供する |
| レポートを提供するポート (デフォルト 8080) |
| 使用する qodana.yaml 名をオーバーライドします: |
| Qodana クラウドで使用される一意のレポート識別子 (GUID) (デフォルト "<生成された value>") |
| ベースライン状態の計算で使用される既存の SARIF レポートへのパスを指定します |
| 現在の実行には存在しないベースライン実行の結果を出力レポートに含めます |
| 完全なコミット履歴を調べて、各コミットに対して分析を実行します。 |
| 品質ゲートとして機能する問題の数を設定します。この数値に達すると、インスペクションの実行はゼロ以外の終了コードで終了します。 |
| 健全性プロファイルによって構成されたインスペクションの実行をスキップします |
| project-dir ディレクトリ内のディレクトリをインスペクションする必要があります。指定しない場合、プロジェクト全体がインスペクションされます |
| プロジェクトで定義されたプロファイル名 |
| プロファイルファイルへのパス |
| |
| 実行シナリオをオーバーライドする (デフォルトの |
| フォールバックプロファイルファイルへの絶対パス。このオプションは、使用可能なオプションを使用してプロファイルが指定されなかった場合に適用されます。 |
| クリーンアップを含む、利用可能なすべてのクイックフィックスを適用します。 |
| プロジェクトのクリーンアップを実行する |
| |
| HTML レポートを生成する (デフォルトの真) |
| Qodana コンテナーに追加の環境変数を定義します (フラグは複数回使用できます)。CLI は完全なホスト環境変数を読み取らず、セキュリティ上の理由から Qodana コンテナーに渡しません。 |
| Qodana コンテナーの追加ボリュームを定義する (フラグは複数回使用できます) |
| Qodana コンテナーを実行するユーザー。ユーザー ID – |
| 最新の Qodana コンテナーのプルをスキップする |
| GitLab CI/CD でサポートされているコード品質(英語)レポートを生成します。 |
| Bitbucket クラウドでサポートされているコードインサイト(英語)レポートを生成し、Bitbucket Code Insights API を使用して転送します。 |
| |
レポートを表示する
qodana show <options>
コマンドでは次のオプションを使用できます。
オプション | 説明 |
---|---|
| レポートディレクトリのみを開く |
| |
| 使用するリンターをオーバーライドする |
| レポートを提供するポートを指定します (デフォルト 8080) |
| インスペクション対象プロジェクトのルートディレクトリ (デフォルト "。") |
| HTML レポートのパスを指定します ( |
SARIF 形式のファイルを表示する
次のオプションを使用して qodana view <options>
コマンドを実行できます。
オプション | 説明 | デフォルト設定 |
---|---|---|
| SARIF 形式のファイルへのパス |
|
| | なし |
コントリビューターの数を数える
コントリビューターカウントのメカニズムについては、コントリビューターのカウントセクションで説明されています。
Qodana CLI を使用してコントリビューターをカウントするには、次のオプションを指定して qodana contributors <options>
コマンドを実行します。
オプション | 説明 | デフォルト設定 |
---|---|---|
| アクティブな投稿者の数を計算する日数 | 30 |
| | なし |
| 設定するプロジェクトのルートディレクトリ |
|
プロジェクト情報
qodana cloc <options>
コマンドを使用すると、言語やコード行などのプロジェクトに関する情報を表示できます。このコマンドで使用可能なオプションのリストは次のとおりです。
オプション | 説明 |
---|---|
| |
| |
| プロジェクトディレクトリ。このオプションを複数回指定して、複数のプロジェクトをチェックすることができます。指定しない場合は、現在のディレクトリが使用されます。 |
プロファイルを解決する順序
Qodana は、インスペクションプロファイルを解決するための構成パラメーターを次の順序でチェックします。
コマンドラインオプション
--profile-name %\name%
からの%\name%
という名前のプロファイルコマンドラインオプション
--profile-path %\path%
からのパス%\path%
によるプロファイルqodana.yaml
から%\name%
という名前のプロファイルqodana.yaml
から%\path%
のパスによるプロファイル/data/profile.xml
に取り付けられたプロファイルデフォルトの
qodana.recommended
プロファイルの使用にフォールバックします
関連ページ:
![](https://pleiades.io/icons/jetbrains_logo.png)
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 コミュニティ、...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/quickstart-run-in-ide-report-links.png)
クイックスタート
Qodana (2024.1) の現在のバージョンは、Java、Kotlin、Groovy、PHP、JavaScript、TypeScript、C#、Visual Basic、C、C++、Python、Golang プロジェクトを分析できるリンターを提供します。さまざまな機能を使用して、デフォルトのリンター構成を拡張することもできます。例として、このセクションでは、以下を使用して Qodana の操作をすぐに開始できる方法について説明します。JetBrains IDE、コマンドラインインターフェ...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/code-coverage-report-qodana.png)
コードカバレッジ
コードカバレッジは、生成されたレポートを使用して、メソッド、クラス、ファイル内の全体的なコードカバレッジを計算します。また、これらのエンティティにおけるカバレッジの不足に関連する問題についても報告します。この機能は、次のリンターの Ultimate および Ultimate Plus ライセンスで利用できます。JVM 用 QodanaIntelliJ IDEA コードカバレッジエージェントが推奨ツールですが推奨される形式です。もサポートされています。JaCoCoJS 用 QodanaJestPHP...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/inspection-profiles-ide-default-profile.png)
インスペクションプロファイル
インスペクションプロファイルは、インスペクション、これらのインスペクションが分析するファイルスコープ、およびインスペクションの重大度を定義します。このセクションでは、既存の Qodana プロファイルを使用する方法、独自のプロファイルを作成する方法、Qodana を使用してプロジェクトを分析するためのプロファイルを設定する方法について説明します。既存の Qodana プロファイル:すぐに使用できる Qodana プロファイルは次のとおりです。プロファイルのサブセット。Qodana ではデフォル...
![](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/language-migration.png)
PHP バージョンの移行
ある PHP バージョンから別のバージョンへの移行がコードの品質にどのような影響を与えるかを確認するには、Qodana シナリオを使用します。このシナリオを実行すると、新しい PHP バージョンにアップグレードした後に発生するコードベースの問題を確認できます。この機能は PHP 用の Qodana リンターによってサポートされており、Ultimate および Ultimate Plus ライセンスとその試用版で利用できます。このシナリオは、ファイルで構成することも、CLI を使用して呼び出すこともでき...