分析の開始
Qodana は静的解析メカニズムを実装しており、コードベースを自動的に解析します。つまり、Qodana を実行するだけでコードが解析され、改善のための推奨事項が表示されます。追加のスクリプトの実行、外部ライブラリのダウンロード、その他の設定などは一切必要ありません。
分析段階
プロジェクトを分析するために、Qodana はプロジェクト構成とプロジェクト分析の段階を実行します。
プロジェクト構成段階は次の手順で構成されます。
プロジェクトの開始。このステップでは、Qodana がプロジェクトを内部表現に変換し、プロジェクト構造を識別し、特定の言語サポート、ファイル解析、VCS 処理などの各種サービスを設定します。
プロジェクト構成。このステップでは、Qodana がプロジェクトファイルの一覧表示、依存関係の取得、インデックスの作成、言語固有の構成(例: Python SDK の検索場所の特定)を実行します。パフォーマンスに関する詳細は、パフォーマンスの最適化の章を参照してください。
プロジェクト分析段階では、Qodana は列挙されたすべてのファイルを反復処理し、スコープに基づいてフィルタリングし、インスペクションをファイルと照合し、これらのインスペクションを実行します。
分析モード
Qodana は、以下に説明する通常モードと増分モードを使用してコードベースを分析できます。
定期的な分析
通常分析はデフォルトのモードで、コードベースで見つかったすべての問題を報告し、node_modules や build などのディレクトリを除くすべてのプロジェクトファイルを分析範囲に含めます。qodana.yaml ファイルを使用してインスペクションを設定することで、分析範囲を調整できます。
通常モードの利点は次のとおりです。
他のファイルの変更によって生じた問題も含め、コードベース全体のすべての問題を検出します。
プロジェクトを一度だけ開くため、小規模プロジェクトでは増分分析よりもパフォーマンスの観点から有利です。
コード品質の傾向に関するインサイトを提供します
通常モードの欠点は次のとおりです。
大規模プロジェクトでは時間がかかる可能性がある
分析レポートには、現在の変更では発生しない問題が含まれている可能性があります。
誤検知の影響を排除するためにベースラインを設定する必要がある
増分分析
増分分析では、通常の分析範囲が 2 つのコミット間で変更されたファイルに制限されます。これは、デフォルトではマージベースとソースブランチヘッドコミットファイルです。
このモードでは、変更によって発生した問題のみが報告されます。
増分解析を実行するには、Qodana を 2 回実行します。
最初の分析では、マージベースのコミットを使用します
2 番目の分析では、ソースブランチヘッドコミットを使用します。
レポートには、マージベースコミットでは見つからなかったものの、ヘッドコミットでは見つかったすべての問題が含まれます。
増分分析の利点は次のとおりです。
中規模から大規模のコードベースに対してより高速な分析を提供します
開発者の変更に関連する問題のみを報告し、明確なフィードバックを提供する
増分分析の欠点は次のとおりです。
他のファイルの変更によって生じた問題を無視する可能性がある
Qodana の構成が状態間で変更されると、結果が矛盾する可能性があります。
分析を開始
Qodana を使用してプロジェクトを分析するには、以下の手順に従います。
使用したい Qodana リンターを選択します。
使用する Qodana のデプロイメソッドを決定します。
構成の概要セクションに従って、Qodana を構成します。
必要に応じて、Qodana の前に実行されるコマンドのリストを設定します。詳細については、カスタムコマンドを実行するセクションを参照してください。
Qodana Cloud でアカウントを設定し、プロジェクトトークンを取得します。
使用したいリンターページの推奨事項に従います (ここのステップ 1 を参照)。
パフォーマンスの最適化
プロジェクト分析段階でパフォーマンスを向上させるには、次の推奨事項に従ってください。
終了コードのリスト
Qodana は次の終了コードを提供します。
終了コード | 説明 |
|---|---|
| リンターの EAP ライセンスの有効期限が切れています。Docker タグを、 |
| Qodana または Docker はメモリ使用量が多すぎるためクラッシュしました。Docker で使用可能な RAM の量を増やしてください。 |
| Qodana によって検出された問題の数は、品質ゲートによって設定されたしきい値を超えています。 |
Qodana の動作を調査するためのファイルのリスト
/data/results ディレクトリを使用して Qodana の動作を調べるには、いくつかのオプションがあります。
/data/results/projectStructureディレクトリ。このディレクトリにある
Modules.jsonファイルには、Qodana によって検出されたすべてのモジュールのリストが含まれています。これは、IntelliJ IDEA でプロジェクトを開いた際に表示されるリストと一致するはずです。一致しない場合は、Maven の場合はpom.xmlファイル、Gradle 構成の場合はbuild.gradleファイルを確認してください。このディレクトリの
SDKs.jsonファイルには、Python の場合のインタープリターパスが含まれています。/data/results/ディレクトリには、考えられる問題を検出した各インスペクションがID.jsonという名前の独自のファイルを作成します。ここで、IDは、qodana.yamlでインスペクションを含めるか除外するために使用できるインスペクション名です。インスペクション ID の完全なリストは、/groups/*/inspections/*/shortNameパターンを使用して/data/results/.descriptions.jsonファイルで検索できます。/data/results/log/idea.logでは、疑わしい警告を調査できます。
よくある質問
分析時間を短縮する方法はありますか ?
はい、キャッシュを使用できます。これは、Qodana スキャン GitHub アクションでデフォルトで使用できます。それでも問題が解決しない場合は、トラッカーで問題を作成するか、qodana-support@jetbrains.com に連絡して、/data/results ディレクトリのログを添付してください。ログにアクセスするには、ディレクトリをマウントします。GitHub アクションを使用している場合は、ワークフローアーティファクトにアップロードされます。
Qodana はメモリ不足エラーで失敗する
Gradle などの一部のプロジェクトやその中のビルドツールでは、デフォルトの 2 GB より多くのメモリが必要になる可能性があるため、Docker デスクトップの設定でメモリをさらに設定してみてください。
プロキシを使用しているため、Qodana は Gradle をダウンロードできません。
Qodana を起動する前に、ルートフォルダーで ./gradlew コマンドを実行してください。これにより、Qodana はこのダウンロードされたバージョンの Gradle を使用できるようになります。
プロジェクトが Windows で作成された場合は、必ず git update-index --chmod=+x gradlew を実行してファイルを CI 内で実行可能にしてください。
誤って機密データを Qodana Cloud にアップロードしてしまったのですが、どうすればいいですか ?
すべてのデータは保存時も転送時も常に暗号化されます。それでも心配な場合は、Qodana Cloud UI を使用して機密データを含むレポートを削除できます。
関連ページ:
構成の概要
次の構成方法があります。YAML 形式のファイル(通常は)を使用して Qodana を設定する方法は、インスペクションの設定、ブートストラップ、その他他の方法では設定しにくい設定など、長いコマンドを必要とする設定に適しています。YAML 形式の設定を保存すれば、Qodana の異なるインスタンス間で再利用できます。Docker、Qodana CLI、IDE、CI/CD ツールなどの Qodana を実行しているツールの構成機能を使用します。リンターや品質ゲートなどの設定は、どちらの方法でも設定で...
ベースライン
ベースラインとは、特定の Git ブランチに対する特定の Qodana 分析で取得されたコードベースの問題点のスナップショットであり、ファイルに格納されています。ベースライン機能を使用すると、現在のコードとベースラインの状態を比較し、新規の問題、変更されていない問題、解決済みの問題を確認できます。たとえば、ブランチのベースラインを設定・更新することで、プルリクエストやマージリクエストのマージ後の変更を監視できます。必要に応じて、新しいファイルを生成し、Qodana の実行中に使用することで、ベー...
クイックスタート
Qodana Cloud の使用を開始するには、Qodana クラウド Web サイトに移動してください。JetBrains アカウントで続行するボタンをクリックして JetBrains アカウントを作成し、Qodana クラウドにログインできます。未登録ユーザーの場合は、Qodana によってすでに分析されたデモプロジェクトを調べることができます。レポートを詳しく調べるには、レポートセクションを参照してください。Qodana Cloud に初めてログインすると、組織、チーム、プロジェクトを作成す...
GitHub アクション
Qodana Scan GitHub アクションを使用すると、GitHub リポジトリで Qodana を実行できます。プロジェクトを準備する:Qodana クラウドこのセクションのすべての構成例では、Qodana Cloud によって生成されたプロジェクトトークンを使用します。このトークンは、有料の Qodana リンターでは必須であり、コミュニティリンターで使用する場合はオプションです。Qodana Cloud UI でプロジェクトトークンを生成する方法については、次のセクションを参照してく...
オープンソースプロジェクトを分析する
このセクションでは、Qodana を使用してオープンソースプロジェクトを分析する方法、および Qodana Cloud を使用して、オープンソースプロジェクト向けに分析レポートを便利な形式で無料で表示する方法について説明します。始める前に:ニーズに応じて、次の方法を知っておくと役立つ場合があります。コードを分析する Qodana を使用、および構成オプションを使用して Qodana を構成する、CI/CD パイプラインでローカルに Qodana を実行します、レポートを Qodana クラウドに...
分析レポート
Qodana を使用すると、ローカルまたは Qodana クラウドでインタラクティブかつユーザーフレンドリーな形式で分析レポートを確認できます。レポート UI の概要:各レポートには次のタブが含まれています。現在の問題点は、最新のインスペクション中に Qodana が検出した問題を明らかにします。基本的な問題点は、ベースラインとしてマークされ、それ以降修正されていない問題点を一覧にしたものです。インスペクションを使用すると、Qodana を将来使用するために設定できます。