ライセンス監査
プロジェクトのライセンスが依存関係のライセンスと互換性があることを確認するのは決して簡単な作業ではありませんが、これは法的な目的のために必要です。このプロセスを自動化して間違いを避けるために、現在いくつかの Qodana リンターによってサポートされているライセンス監査機能を使用できます。
リンター | サポートされているツール |
|---|---|
Maven および Gradle | |
Composer | |
npm および Yarn | |
pip | |
Go モジュール | |
ナゲット |
サードパーティライセンス監査は、Ultimate Plus ライセンスとその試用版で利用可能で、デフォルトで有効になっています。ライセンスの詳細については、サブスクリプションのオプションと価格ページを参照してください。デモをリクエストすることもできます。
ライセンス監査の仕組み
ライセンス監査は、依存関係管理ツールの構成ファイルとライセンステキストを含むファイルを使用して、プロジェクトと依存関係のライセンスに関する情報を収集します。収集された情報に基づいて、以下に関する情報を含む依存関係ツリーが構築されます。
プロジェクトライセンス
プロジェクト依存関係のライセンス
プロジェクトの依存関係によって呼び出される依存関係のライセンス
このツリーには、プロジェクトライセンスと互換性のない依存関係ライセンスが表示されます。
例: プロジェクトは Apache-2.0 ライセンスに基づいてライセンスされており、MIT、GPL-2.0 のみ、Apache-2.0 ライセンスに基づいてライセンスされている 3 つの依存関係を使用します。この表は、どの依存関係ライセンスがプロジェクトライセンスと互換性があるかを説明します。
ソフトウェア | 以下に基づいてライセンスを取得 | プロジェクトライセンスに対応 |
|---|---|---|
プロジェクトソフトウェア | Apache-2.0 | — |
依存関係 A | MIT | はい |
依存関係 B | GPL-2.0 のみ | いいえ |
依存関係 C | Apache-2.0 | はい |
ライセンス情報の場所に応じて、JVM 用 Qodana リンターは一連の手順を実行してライセンス情報を見つけ出します。まず、LICENSE.* ファイル内のライセンス参照を検索します。次に、pom.xml ファイルを解析します。必要に応じて、依存関係のあるソースファイルも解析します。
npm を使用する JS 用 Qodana リンターは、パッケージ管理ツールの構成ファイルを使用して、プロジェクトと依存関係のライセンスに関する情報を読み取ります。PHP 用の Qodana リンターは、Composer 構成ファイルからライセンス情報も読み取ります。
Yarn を使用する Python 用 Qodana、Go 用 Qodana、JS 用 Qodana リンターでは、プロジェクトルートの LICENSE.* ファイルにプロジェクトライセンスが含まれている必要があります。
JVM 用 Qodana を除くすべてのリンターでは、 qodana.yaml ファイルの bootstrap キーを使用してプロジェクト依存関係もインストールする必要があります。
Qodana がプロジェクトの分析を完了すると、レポートが利用可能になります。
ライセンス監査を実行する
ライセンス監査は、Qodana dy でデフォルトで有効になっています。分析レポートは、Qodana レポートのライセンス監査タブで確認できます。実際の問題タブでも表示するには、設定ファイルで raiseLicenseProblems オプションを有効にしてください。
ライセンス監査を無効にするには、設定ファイルで CheckDependencyLicenses (英語) インスペクションを除外します。例:
パッケージ検索を有効にする
package-search は、結果の不正確さやパフォーマンスの問題のため、デフォルトでは無効になっています。package-search を有効にするには、設定ファイルで enablePackageSearch オプションを有効にしてください。
依存関係を無視する
設定ファイルでは、dependencyIgnores オプションを使用して、プロジェクト内の特定の依存関係のライセンスを無視できます。
依存関係ライセンスを許可または禁止する
構成ファイルでは、ライセンスマトリックスをオーバーライドし、特定のプロジェクトライセンスに対して許可または禁止される依存ライセンスのリストを指定できます。
このスニペットでは、keys キーはアプリケーションライセンスを受け入れ、allowed キーと prohibited キーはそれぞれ、許可される依存関係ライセンスと禁止される依存関係ライセンスのリストを受け入れます。その結果、AGPL-3.0-only は AFL-2.0 プロジェクトライセンスと互換性を持つようになりますが、Apache-1.0 依存関係ライセンスは互換性がなくなります。
このサンプルのすべてのキーは、いくつかの値を受け入れることができます。
依存関係ライセンスをオーバーライドする
構成ファイルでは、依存関係のライセンス識別子を上書きできます。これは、依存関係がデュアルライセンスであり、一部のライセンスを省略する場合、依存関係ソースからライセンス名を正しく検出できない場合に役立ちます。
このサンプルを使用すると、jaxb-runtime バージョン 2.3.1 の CDDL-1.1 ライセンスと GPL-2.0-with-classpath-exception ライセンスのみを検出するように Qodana に指示できます。
このサンプルでは、url はオプションです。
カスタム依存関係を作成する
レポートに記載する必要があるがプロジェクトソースからは検出できない依存関係を含める場合は、構成ファイルで customDependencies キーを使用して指定できます。
データの検証
ライセンス監査結果を表示するには、分析レポートでタブをクリックします。

ライセンス監査レポートは、依存関係ツリーにグループ化されます。
該当する場合は、特定の依存関係を展開して、その依存関係ツリーを表示できます。
を使用すると、すべてのプロジェクトの依存関係と、プロジェクトのライセンスと互換性のないライセンスの依存関係を切り替えることができます。
セクションには、プロジェクト、モジュール、依存関係のライセンスのリストがあります。を使用すると、ライセンスの互換性のルールを表示できます。
ライセンス一覧は様々な形式でダウンロードできます。SPDX(英語) 2.3 JSON 形式をダウンロードするには、
.jsonを選択してください。
関連ページ:
Java、Kotlin、Groovy
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。Java プロジェクトを分析するには、次のリンターを使用できます。リンター名 Docker イメージベースとなるもの IntelliJ IDEA Ultimate ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 Java、Kotlin、Groovy、...
PHP
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク向けに設計された JetBrains IDE に基づいています。PHP プロジェクトを解析するには、以下の特徴を持つ Qodana for PHP リンターを使用できます。リンター名 Docker イメージベースとなるもの PhpStorm ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 PHP、JavaScr...
JavaScript and TypeScript
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク向けに設計された JetBrains IDE に基づいています。JavaScript および TypeScript プロジェクトを解析するには、以下の特徴を持つ Qodana for JS リンターを使用できます。リンター名 Docker イメージベースとなるもの WebStorm ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメー...
Python
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。Python プロジェクトを分析するには、次のリンターを使用できます。リンター名 Docker イメージベースとなるもの PyCharm Professional ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 Python、JavaScript、T...
Go
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク向けに設計された JetBrains IDE に基づいています。Golang プロジェクトを解析するには、以下の特徴を持つ Go 用 Qodana リンターを使用できます。リンター名 Docker イメージベースとなるもの GoLand ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 Golang、JavaSc...
.NET
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。.NET プロジェクトを分析するには、次の Qodana リンターを使用できます。リンター名 Docker イメージ * ベースとなるもの JetBrains Rider ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 C#、C/C++、VB.NET、J...