YAML ファイル
デフォルトでは、Qodana はプロジェクトのルートディレクトリに含まれる qodana.yaml
ファイルから構成を読み取ります。--config
オプションを使用してこのファイル名を上書きできます。詳細については、カスタム構成ファイルを参照してください。便宜上、このセクションではデフォルトの qodana.yaml
名を使用して参照します。
qodana.yaml
で適用された構成は、デフォルトのインスペクションプロファイル設定と Qodana リンターのデフォルト構成を上書きします。HTML レポートセクションを使用して構成することができ、すべての変更が自動的に適用されます。
qodana.yaml
の JSON スキーマは SchemaStore(英語) プロジェクトで公開されており、IDE での完成と基本的な検証が可能です。
このカスタマイズされた構成を使用して後続のチェックを実行するには、ファイルをプロジェクトのルートディレクトリに保存します。あるいは、qodana.yaml
構成ファイルを手動で編集することもできます。このセクションでは、必要な設定について説明します。
カスタムコマンドを実行する
qodana.yaml
の bootstrap
キーを使用すると、Qodana は分析を実行する前にアクションを実行できます。
apt
ツールを使用して特定のパッケージを Qodana コンテナーにインストールするには、次の行を qodana.yaml
に追加します。
スクリプトを実行するには、prepare-qodana.sh
スクリプトファイルをプロジェクトディレクトリに保存し、qodana.yaml
で実行を指定します。
ユースケースの詳細については、「プロジェクトを準備する」セクションを参照してください。
プロファイルを設定する
プロファイルの呼び出しについては、インスペクションプロファイルセクションで説明します。カスタムプロファイルに関する情報もここで提供されます。
パスを分析範囲から除外する
インスペクションごとに、またはすべてのインスペクションに対して一度に、ファイルとパスを分析から除外できます。インスペクション ID に関する情報は、Inspectopedia(英語) Web サイトで入手できます。
プロジェクト内のすべてのパスを分析範囲から除外するには、paths
ノードを省略します。
サンプル
指定されたプロジェクトパスのすべてのインスペクションを除外します。
指定されたプロジェクトパスの ID で指定されたインスペクションを除外します。
特定のインスペクション ID は、HTML レポートのプロファイル設定、またはインスペクションプロファイルを含む .xml
ファイルで見つけることができます。
インスペクションを分析範囲に含める
選択したプロファイルに含まれていないインスペクションによって、特定のディレクトリのファイルを分析するように Qodana に指示できます。これはインスペクションごとに実行できます。プロジェクト内のすべてのパスをインスペクションスコープに含めるには、paths
ノードを省略します。インスペクション ID に関する情報は、Inspectopedia(英語) Web サイトで入手できます。
サンプル
この例では、インスペクションを含まない empty
プロファイルが指定されており、SomeInspectionId
インスペクションが tools
ディレクトリの分析範囲に明示的に含まれています。その結果、SomeInspectionId
インスペクションによって実行されるチェック、tools
ディレクトリの内容のみが Qodana の実行に含まれます。
品質ゲートを設定する
品質ゲートを構成するには、いくつかのオプションがあります。
まず、失敗しきい値を追加して、プロジェクト内の問題の総数を制御できます。これはすべてのリンターでサポートされています。
.NET の Qodana コミュニティを除くすべてのリンターでは、次の構成を使用できます。
この構成では、設定制限を 1 つだけ超えるとビルドが失敗します。
severityThresholds:any
オプションを使用すると、問題の総数を構成できます。severityThresholds:critical
などのオプションを使用すると、問題の重大度ごとに品質ゲートを構成できます。testCoverageThresholds:fresh
および testCoverageThresholds:total
オプションを使用すると、複数のリンターでサポートされる合計コードカバレッジと新しいコードカバレッジを構成できます。
デフォルトの実行シナリオをオーバーライドする
標準の Qodana 動作をオーバーライドできます。これは、PHP バージョンの移行の場合に役立ちます。この観点からコードをインスペクションするには、php-migration
シナリオを実行します。
デフォルトでは、Qodana は default
シナリオを採用します。これは、通常の Qodana がこの設定と同等に実行されることを意味します。
さまざまな構成オプションの例
上の例
SomeInspectionId
インスペクションは、プロファイルでは無効になっていますが、すべてのパスに対して明示的に有効になっていますAnnotator
インスペクションはすべてのパスで無効になりますAnotherInspectionId
インスペクションはrelative/path
およびanother/relative/path
では無効ですこれらのパスではインスペクションは実行されません:
asm-test/src/main/java/org
、benchmarks
、tools
リンターを指定する
linter
オプションを使用すると、使用するリンターを指定できます。例:
JDK のバージョンを設定する
これらのリンターの JDK バージョンを構成できます。
projectJDK
オプションを使用して、JDK バージョンを指定します。例:
または:
次の名前を使用して JDK を指定することもできます。
JDK の構成の詳細については、「JDK を設定する」セクションを参照してください。
PHP のバージョンを設定する
PHP 用の Qodana リンターを実行する前に、PHP バージョンを構成できます。
健全性チェックを無効にする
デフォルトでは、Qodana では健全性チェックが有効になっています。次のスニペットを使用して無効にできます。
ライセンス監査を構成する
Qodana のバージョン 2024.1 以降では、ライセンス監査機能がデフォルトで有効になっています。CheckDependencyLicenses
インスペクションを除外することで無効にすることができます。
依存関係を無視する
依存関係を無視して、関連する問題をレポートから非表示にします。
ここで、name
は無視する依存関係の名前です。
上の例では、enry
依存関係が分析から完全に除外されています。考えられるライセンス関連の問題は無視されるため、依存関係はレポートにまったく含まれません。これは、レポートでメンションする必要のない内部依存関係をすばやく非表示にできます。
ライセンスを許可または禁止する
事前定義されたライセンス互換性マトリックスをオーバーライドします。
ここで、keys
はプロジェクトライセンスです。依存関係ライセンスの識別子は allowed
または prohibited
で指定されます。
依存関係ライセンスをオーバーライドする
依存関係ライセンス識別子をオーバーライドします。
ここで、name
は依存関係の名前、version
は依存関係のバージョン、licenses
は再定義された依存関係ライセンスのリストです。
上の例では、CDDL-1.1、クラスパス例外付きの GPL-2.0 を検出し、jaxb-runtime の他のライセンス (2.3.1 のみ) を検出しないように Qodana に「指示」しています。これは、依存関係がデュアルライセンスであり、一部のライセンスを省略したい場合、依存関係ソースからライセンスを正しく検出できない場合に便利です。
カスタム依存関係
現在、Qodana によるライセンス監査は、JPS、Maven、Gradle、npm、yarn、composer プロジェクトでのみ可能です。レポートに記載する必要があるがプロジェクトソースからは検出できない依存関係を含めるには、customDependencies
を使用して指定します。
クイックフィックスを構成する
fixesStrategy
オプションを使用すると、利用可能な即効性のある戦略の中から選択できます。
汚染分析を構成する
qodana.yaml
ファイルで、PhpVulnerablePathsInspection
インスペクションを分析範囲に含めます。
あるいは、qodana.yaml
の inspections
セクションを使用することもできます。
qodana.yaml
ファイルで、JvmTaintAnalysis
インスペクションを分析範囲に含めます。
あるいは、qodana.yaml
の inspections
セクションを使用することもできます。
脆弱性チェッカーを構成する
脆弱性チェッカー機能の使用を開始するには、VulnerableLibrariesGlobal
インスペクションを有効にします。
プラグインの管理
インスペクション中にダウンロードして呼び出すプラグインを指定できます。
ここで、<plugin-id>
は JetBrains マーケットプレイス(英語)のプラグイン ID を表します。例: Grazie Professional(英語) の場合、プラグイン ID は com.intellij.grazie.pro
になります。プラグイン ID を見つけるには、プラグインページで概要タブをクリックし、追加情報セクションに移動します。
プラグインキャッシュは /data/cache/plugins
ディレクトリに保存されます。
プラグインに必要なサードパーティソフトウェアをインストールするには、次の方法があります。
bootstrap
キーを使用するFROM jetbrains/qodana...
で始まるカスタムDockerfile
を開発します。GitHub(英語) で利用可能な QodanaDockerfile
の例を使用できます。
関連ページ:
![](https://pleiades.io/icons/jetbrains_logo.png)
シェルコマンド
このセクションでは、Qodana の Docker イメージと Qodana CLI ツールを構成する方法について説明します。どちらのツールもローカルと CI/CD パイプラインで使用できます。いくつかのオプションは、Qodana CLI でのみ使用できます。場合によっては、このセクションでも説明されているファイルを使用して構成できます。Qodana のバージョン 2022.3 以降、Ultimate と Ultimate Plus リンターではプロジェクトトークンを参照するために変数が必要です。Qoda...
![](https://resources.jetbrains.com/help/img/qodana/2024.3/inspection-profiles-ide-default-profile.png)
インスペクションプロファイル
インスペクションプロファイルは、インスペクション、これらのインスペクションが分析するファイルスコープ、およびインスペクションの重大度を定義します。このセクションでは、既存の Qodana プロファイルを使用する方法、独自のプロファイルを作成する方法、Qodana を使用してプロジェクトを分析するためのプロファイルを設定する方法について説明します。既存の Qodana プロファイル:すぐに使用できる Qodana プロファイルは次のとおりです。プロファイルのサブセット。Qodana ではデフォル...
![](https://resources.jetbrains.com/help/img/qodana/2024.3/teamcity-runner.png)
.NET
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。.NET プロジェクトを分析するには、次の Qodana リンターを使用できます。.NET 用 QodanaJetBrains RiderUltimate と Ultimate Plus ネイティブソリューションと Docker イメージ C#、C/C++、VB.NET、JavaScript、TypeScript.NET の Qodana コミュニティ JetBra...
![](https://resources.jetbrains.com/help/img/qodana/2024.3/language-migration.png)
PHP バージョンの移行
ある PHP バージョンから別のバージョンへの移行がコードの品質にどのような影響を与えるかを確認するには、Qodana シナリオを使用します。このシナリオを実行すると、新しい PHP バージョンにアップグレードした後に発生するコードベースの問題を確認できます。この機能は PHP リンターによってサポートされており、Ultimate および Ultimate Plus ライセンスとその試用版で利用できます。このシナリオは、ファイルで構成することも、CLI を使用して呼び出すこともできます。script:...
![](https://resources.jetbrains.com/help/img/qodana/2024.3/license-audit-overview-tree.png)
ライセンス監査
プロジェクトのライセンスが依存関係のライセンスと互換性があることを確認するのは決して簡単な作業ではありませんが、これは法的な目的のために必要です。このプロセスを自動化して間違いを避けるために、現在いくつかの Qodana リンターによってサポートされているライセンス監査機能を使用できます。JVM 用 QodanaMaven および GradlePHP 用の QodanaComposerJS 用 Qodananpm および YarnPython 用 QodanapipGo 用 QodanaGo モ...