よくある質問
ここでは、Qodana の基本概念をより深く理解するのに役立つ質問への回答をまとめています。
一般的な質問
Qodana を実行するにはどうすればよいですか ?
ニーズに応じて、次を使用して Qodana を実行できます。
JetBrains IDE、Qodana CLI(英語) ツール、または利用可能な Docker イメージ
ネイティブモードは .NET 用 Qodana リンターで利用可能
Qodana を <CI/CD 名> パイプラインに構築するにはどうすればよいですか ?
Qodana リンターは Linux Docker イメージであるため、Docker をサポートするすべての CI/CD プラットフォームで実行できるはずです。Qodana をさまざまな CI/CD プラットフォームと統合する方法の最良の例を提供するために、ドキュメントの拡張に取り組んでいます。問題が発生した場合は、サポート (qodana-support@jetbrains.com
) までご連絡ください。
Qodana のセルフホストバージョンまたはオンプレミスバージョンのオプションはありますか ?
Qodana のオンプレミスバージョンは現在開発中で、2024 年にリリースする予定です。このソリューションに興味がある場合は、Qodana チームにお問い合わせください。
Qodana クラウドアカウントを作成する必要がないコミュニティライセンスで Qodana を実行することもできます。ただし、このオプションでは提供される機能が制限されます。
JetBrains アカウントと Qodana エンティティの関係は何ですか ?
デプロイと構成
Qodana をすぐに実行できますか ? Qodana の設定はどのくらい難しいですか ?
Qodana は、クイックスタートページに従って、さまざまな方法で実行できます。Qodana の構成をできるだけ簡単にするよう努めているため、これらの方法はすべて最小限の準備手順で済みます。
各 Qodana リンターは何を表しますか ?
リンターは、特定のテクノロジーを表す Qodana コンポーネントです。例: JVM 用 Qodana リンターを使用すると、Java、Kotlin、Groovy コードを含むコードベースを分析できます。一方、JS 用 Qodana リンターを使用すると、JavaScript および TypeScript コードをチェックできます。リンターページには、利用可能なすべてのリンターのリストと、それぞれの詳細な説明へのリンクがあります。
1 つのプロジェクトで複数のリンターを使用できますか ?
はい、モノリポジトリプロジェクトをインスペクションするセクションに従って、1 つのプロジェクトで複数のリンターを使用できます。
Qodana によって実行されるチェックをカスタマイズするにはどうすればよいですか ?
カスタム YAML プロファイルページの説明に従って、インスペクションプロファイルを構成できます。
既存のインスペクションがニーズに合わない場合は、独自の構造検索インスペクションを開発してインスペクションプロファイルに追加するか、Qodana のインスペクション機能を拡張するプラグインを使用できます。あるいは、独自のプラグイン(英語)を開発し、そのインスペクションを Qodana とともに使用することもできます。
リポジトリに SSH キーを設定する必要があるのはなぜですか ?
SSH キーを使用すると、Qodana は分析対象プロジェクトのリポジトリに接続し、すべての種類のライセンスの要件であるコントリビューターの数を計算できます。
コードのインスペクションを実行
プロファイルとは何ですか ?
Qodana インスペクションプロファイルは、状態、構成オプション、適用先のパスを含む、事前構成されたインスペクションのセットです。Qodana インスペクションプロファイルは IntelliJ IDEA インスペクションプロファイルと同じであり、再利用できます。
Qodana はどのようなインスペクションプロファイルを提供しますか ?
デフォルトの Qodana インスペクションプロファイルのリストは既存の Qodana プロファイルページにあり、デフォルトのプロファイルの設定方法もここで確認できます。
プロジェクトに最適なプロファイルを選択するにはどうすればよいですか ?
qodana.recommended
プロファイルを使用することをお勧めします。これは、デフォルトの JetBrains IDE プロファイルによって呼び出される最も使用可能なインスペクションがすでに提供されており、追加の構成は必要ないためです。
あるいは、ニーズに最適な独自のプロファイルを作成することもできます。
他の解析ツールの SARIF を Qodana にインポートできますか ?
現在、Qodana UI で外部解析ツールの結果を表示することはできませんが、現在対応中です。
Qodana インスペクションについて詳しくはどこで確認できますか ?
インスペクトペディア (英語) Web サイトにアクセスして、インスペクションと Qodana でのその可用性について読むことができます。
ライセンス
一人でプロジェクトに取り組んでいますが、Qodana を使用できますか ?
はい。ただし、最小請求オプションは 3 人のコントリビューターに対するものです。
Qodana はコントリビューターをどのようにカウントしますか ?
コントリビューターカウントのメカニズムについては、このドキュメントのコントリビューターのカウントセクションで説明されています。
Qodana を開始する前に、リポジトリ内のコントリビューターの数を確認する方法はありますか ?
はい、次のコマンドを使用してコントリビューターの数を確認できます。
Qodana CLI アプリケーションでは、 contributors
(英語) コマンドを使用してアクティブなコントリビューターをカウントできます。例:
Qodana の使用を開始するには何が必要ですか ?
JetBrains Web サイトのサブスクリプションのオプションと価格ページに移動し、使用するサブスクリプションオプションを選択できます。
コミュニティライセンス、または Ultimate ライセンスまたは Ultimate Plus ライセンスの試用版を選択した場合は、Qodana Cloud オンボーディングページにリダイレクトされます。
Ultimate または Ultimate Plus ライセンスを購入したい場合は、JetBrains アカウントページにリダイレクトされ、支払いの詳細を入力します。支払いが完了すると、Qodana クラウドオンボーディングページにリダイレクトされます。
Qodana Cloud Web サイトのオンボーディング段階で、Qodana が接続できるようにリポジトリに追加する公開キーと、最初のプロジェクトに Qodana レポートをアップロードするためのプロジェクトトークンが生成されます。
ライセンスを購入する前に Qodana を試すことはできますか ?
はい、Ultimate または Ultimate Plus トライアルライセンスを選択し、60 日間のトライアル期間付きで Qodana を無料で使い始めることができます。この期間中、これらのライセンスを 1 回切り替えることができます。60 日後、プロジェクトで Qodana を引き続き使用するには、Ultimate または Ultimate Plus ライセンスを購入する必要があります。
コミュニティライセンスを選択することもできますが、Ultimate ライセンスや Ultimate Plus ライセンスと比べて提供される機能が制限されていることに注意してください。Ultimate または Ultimate Plus ライセンスからコミュニティライセンスに切り替えると、試用版ライセンスが不可逆的に終了することになります。
Qodana リンターと Qodana クラウドは何のために設計されていますか ?
Qodana リンターと Qodana クラウドは両方とも、Qodana という名前の製品の重要な部分です。Qodana リンターを使用してコードベースをインスペクションでき、Qodana クラウドを使用してプロジェクトとライセンスを管理したり、Qodana レポートを 1 か所に収集したりできます。詳細については、Qodana クラウドドキュメントの Qodana クラウドの使用例ページを参照してください。
Qodana クラウドアカウントを作成せずに Qodana リンターを使用できますか ?
すべてのライセンスでは、Qodana Cloud でアカウントを作成し、オンボーディングステージを完了する必要があります (詳細については、この質問を参照してください)。それに加えて、Qodana Cloud を使用すると、Qodana レポートを 1 か所で表示でき、Qodana リンターが提供するすべての機能にアクセスできます。最後に、IDE 内から Qodana レポートを開くには、Qodana Cloud アカウントが必要です。
Qodana Cloud を除外するには、JVM の Qodana コミュニティ、Android のための Qodana コミュニティ、Python のための Qodana コミュニティなどの Qodana のコミュニティリンターをライセンスなしでローカルにダウンロードして実行できます。
Qodana クラウドを使い始めるために実行する必要がある最小限の手順は何ですか ?
必要な手順はすべて、Qodana クラウドドキュメントのクイックスタートセクションで説明されています。
トライアルライセンスとは何ですか ?
試用版ライセンスは、Ultimate ライセンスまたは Ultimate Plus ライセンスの期間限定バージョンです。各試用ライセンスの期間は 60 日間に制限されており、Ultimate から Ultimate Plus、またはその逆に 1 回だけ変更できます。試用期間が終了すると、このタイプのライセンスは無効になり、使用できなくなります。Qodana を引き続き使用するには、フルバージョンのライセンスを購入する必要があります。
試用版ライセンスの期間が終了すると通知されますか ?
はい、試用期間が終了すると通知が届きます。
有効期限が切れたら、Ultimate または Ultimate Plus ライセンスを購入する必要があります。期限切れの試用ライセンスを延長することはできません。
試用版ライセンスの支払いの詳細を提供する必要がありますか ?
いいえ、Qodana の Ultimate または Ultimate Plus バージョンのライセンスの購入を決定するまで、支払いの詳細を入力する必要はありません。試用期間終了後に購入することができます。
ライセンスを切り替えることはできますか ?
はい、JetBrains アカウントを使用して、Ultimate ライセンスと Ultimate Plus ライセンスの試用版を切り替えることができますが、これは 1 回しか実行できないことに注意してください。
Ultimate および Ultimate Plus ライセンスの試用版からコミュニティライセンスに 1 回だけ切り替えることもできます。試用版ライセンスをコミュニティライセンスに変換すると、そのプロセスを元に戻すことはできません。情報に基づいた意思決定を行っていることを確認してください。コミュニティライセンスは、Ultimate または Ultimate Plus サブスクリプションで利用可能なすべての機能をサポートするわけではないことに注意してください。変換後に Ultimate または Ultimate Plus サブスクリプションに戻したい場合は、有料サブスクリプションに移行する必要があります。
試用期間が終了すると、この 1 回限りの制限はなくなり、無制限にサブスクリプションプランを切り替えることができます。ただし、この場合、購入したすべてのサブスクリプションは返金されません。
ライセンスのコストはどのように計算されますか ?
ライセンスの合計コストは、アクティブなコントリビューターの数に基づきます。アクティブなコントリビューターとは、同じ組織内で、単一のライセンスに基づいて、過去 90 日間の任意の時点で任意の数の Qodana Cloud プロジェクトにコミットした個人 / ボットです。オンボーディング段階および新しいプロジェクトの作成中に、Qodana Cloud はコントリビューターを計算するためにリポジトリ URL をリクエストします。ライセンスに使用されるコントリビューターの最小数は 3 です。
実際のコントリビューターの数は、サブスクリプションプランに基づいて計算されます。例: 月次サブスクリプションを使用して、月の初日に 10 人のコントリビューター用のライセンスを購入しました。同じ月内に、Qodana はあなたのプロジェクトに 20 人のアクティブなコントリビューターがいることを発見しました。この場合、翌月のライセンス費用は 20 人の投稿者に対して再計算されます。2 か月目の終わりに、実際のアクティブなコントリビューターの数に基づいてライセンス費用が再計算されます。
詳細については、Qodana 利用規約(英語)の セクションを参照してください。
サブスクリプションの請求について知っておくべきことは何ですか ?
Qodana 利用規約(英語)から抜粋した請求の説明は次のとおりです。
– 各サブスクリプション期間の開始時に、アクティブなコントリビューターの予想数 (3 人以上) を指定します。サブスクリプション期間の終了時には、決定したアクティブコントリビューターの数に基づいて、サブスクリプションプランに従ってサブスクリプション料金が請求されます。Qodana は、各サブスクリプション期間の終了時にアクティブなコントリビューターの実際の数をチェックします。その数が、そのサブスクリプション期間に指定したアクティブコントリビューターの数よりも多い場合、超過分の料金は請求されません。ただし、次のサブスクリプション期間に指定するアクティブな投稿者の数は、前のサブスクリプション期間の実際の数よりも少なくすることはできません。
の料金には、顧客が選択した一定数のアクティブコントリビューターに対する前払いと、サブスクリプション期間中にその制限を超えて追加のアクティブコントリビューターに対する追加料金 (超過使用量) が含まれます。
– アクティブなコントリビューターの予想される月間数 (3 人以上) に基づいて、サブスクリプションの各月のアクティブなコントリビューターごとの月額料金で年間サブスクリプションを前払いします。
– Qodana は毎月アクティブな投稿者の数を監視します。アクティブな投稿者の数が顧客の月間制限を超えた場合、次の月に追加のアクティブな投稿者ごとにサブスクリプション料金が適用されます。ユーザーには自動的に料金が請求されることはありません。代わりに、提供されたメールリンクを通じて、または JetBrains アカウント内で追加のライセンスを購入できます。
ユーザーがサブスクリプションの延長料金を支払わない場合、当社は、顧客が追加のコントリビューターの料金を支払うまで、Qodana サービスを 3 か月間一時停止することがあります。サブスクリプションは、当社が規約を終了する権利を行使しない限り、停止後 3 か月後に、顧客が支払ったアクティブなコントリビューターの数に応じて (または顧客がサブスクリプションを延長したとき) 自動的に再アクティブ化されます。
月中のアクティブな投稿者の数が前払い制限を下回った場合、返金やクレジットは発行されません。
Qodana はライセンス情報をどこに保存しますか ?
Qodana クラウドには、ライセンスに関するすべての情報が保存されます。これは、Qodana を実行する前に Qodana クラウドアカウントを作成する必要がある理由を説明しています。この機能とは別に、Qodana Cloud は他の機能も提供します。
ライセンスはリンター機能にどのような影響を与えますか ?
タスクに基づいて、適切なライセンスで Qodana リンターを実行することをお勧めします。
JVM 用 Qodana、JS 用 Qodana、PHP 用の Qodana などの有料リンターは、Ultimate および Ultimate Plus ライセンスを使用した場合のみ実行できます。コミュニティライセンスを使用している場合は、実行することはできません。
JVM の Qodana コミュニティ、Android のための Qodana コミュニティ、Python のための Qodana コミュニティなどのコミュニティリンターは、コミュニティライセンスがあれば、またはライセンスなしで使用できます。
JVM の Qodana コミュニティのようなリンターは既存の機能を拡張しないため、Ultimate または Ultimate Plus ライセンスで実行する必要はありません。
1 つの JetBrains アカウントでコミュニティライセンスをいくつ保有できますか ?
JetBrains アカウントでは最大 5 つのコミュニティライセンスを持つことができます。
コミュニティライセンスの使用に制限はありますか ?
いいえ、Qodana コミュニティライセンスは、オープンソースプロジェクトまたは独自プロジェクトの作業に使用できます。
CI/CD パイプラインにはどのようなライセンスが統合されていますか ?
すべての Qodana サブスクリプションは、CI システムとの統合セクションで説明されている CI/CD ソリューションとの統合をサポートしています。
オープンソースプロジェクトで Qodana を無料で使用できますか ?
はい、コミュニティ Qodana リンターはコミュニティライセンスに基づいて実行できます。詳しくは各ライセンスで利用可能なリンターのページを参照してください。
Qodana はどのようなデータを Qodana クラウドに転送しますか ?
何よりもまず、Qodana Cloud は、リポジトリのアクティブなコントリビューターに関する情報とプロジェクトトークンを収集します。この情報は、ライセンスコストの計算と有料機能の有効化に使用されます。
さらに、Qodana は SARIF 形式のインスペクションレポートを Qodana クラウドに転送するため、Qodana クラウド UI を使用してインスペクションの結果を表示できます。
トラブルシューティング
分析時間を短縮する方法はありますか ?
はい、キャッシュを使用できます。これは 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 内で実行可能にしてください。
関連ページ:
CI システムとの統合
すべての Qodana リンターは Docker イメージとして利用できるため、任意の CI/CD ツールに統合して実行できます。Docker コンテナーの実行方法の詳細については、CI/CD システムのドキュメントを参照してください。いくつかのツールについては、ネイティブソリューションを提供しています。これまでに、次の CI/CD ツールの統合ガイドを開発しました。Azure パイプライン、Bitbucket クラウド、CircleCI、GitHub アクション、GitLab CI/CD、Jenk...
JetBrains IDE
JetBrains IDE で Qodana を実行して、コードベースをインスペクションできます。Qodana は、JetBrains Toolbox アプリ経由でインストールされたいくつかの JetBrains IDE (IntelliJ IDEA、PhpStorm、WebStorm、Rider、GoLand、PyCharm、Rider など) をサポートします。IDE を使用すると、次のことが可能になります。Qodana をローカルで実行する、Qodana クラウドに接続する、CI パイプライン...
組織
組織は、Qodana クラウドのすべてのエンティティのトップレベルの構造を提供します。すべての組織は、特定の JetBrains アカウントに基づいて作成されます。選択に応じて、プライベートまたはパブリックになります。Qodana Cloud のすべてのアカウントは、デフォルトの組織となる組織に基づいています。Qodana クラウド UI の左側にあるリストを使用して、組織間を移動できます。組織を作成する:民間組織または公的組織を作成できます。プライベート組織に保存されているレポートには、組織...
オンボーディング
オンボーディングは、プロジェクトで作業するために Qodana を準備するための重要なステップであり、次のことが可能になります。プロジェクトリポジトリを Qodana クラウドに接続します、Qodana Cloud 組織、チーム、プロジェクトを作成する、Ultimate および Ultimate Plus リンターに必要なプロジェクトトークンを生成する、セットアップコードインスペクション、オンボーディングでは、JetBrains アカウントの情報 (ライセンスや会社など) が使用されます。以下に手...
クイックスタート
Qodana (2024.1) の現在のバージョンは、Java、Kotlin、Groovy、PHP、JavaScript、TypeScript、C#、Visual Basic、C、C++、Python、Golang プロジェクトを分析できるリンターを提供します。さまざまな機能を使用して、デフォルトのリンター構成を拡張することもできます。例として、このセクションでは、以下を使用して Qodana の操作をすぐに開始できる方法について説明します。JetBrains IDE、コマンドラインインターフェ...
構造検索
構造検索は、JetBrains IDE に組み込まれた強力で柔軟なメカニズムです。検索テンプレートを使用して、セマンティクスを考慮してコードベースをインスペクションできるようにします。独自の検索テンプレートを作成し、Qodana インスペクションとして使用できます。使い方:例として、次の検索テンプレートを考えてみましょう。$Instance$.$MethodCall$($Parameter$) これにより、Java ステートメントを検出できます。のようなハードコードされたテキストを含むステートメ...