Qodana 2026.1 ヘルプ

ライセンス監査

プロジェクトのライセンスが依存関係のライセンスと互換性があることを確認するのは決して簡単な作業ではありませんが、これは法的な目的のために必要です。このプロセスを自動化して間違いを避けるために、現在いくつかの Qodana リンターによってサポートされているライセンス監査機能を使用できます。

リンター

サポートされているツール

JVM 用 Qodana

Maven および Gradle

PHP 用の Qodana

Composer

JS 用 Qodana

npm および Yarn

Python 用 Qodana

pip

Go 用 Qodana

Go モジュール

.NET 用 Qodana

ナゲット

サードパーティライセンス監査は、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 用 QodanaGo 用 QodanaJS 用 Qodana リンターでは、プロジェクトルートの LICENSE.* ファイルにプロジェクトライセンスが含まれている必要があります。

JVM 用 Qodana を除くすべてのリンターでは、 qodana.yaml ファイルの bootstrap キーを使用してプロジェクト依存関係もインストールする必要があります。

Qodana がプロジェクトの分析を完了すると、レポートが利用可能になります。

ライセンス監査を実行する

ライセンス監査は、Qodana dy でデフォルトで有効になっています。分析レポートは、Qodana レポートのライセンス監査タブで確認できます。実際の問題タブでも表示するには、設定ファイルraiseLicenseProblems オプションを有効にしてください。

raiseLicenseProblems: true

ライセンス監査を無効にするには、設定ファイル CheckDependencyLicenses (英語) インスペクションを除外します。例:

exclude:   - name: CheckDependencyLicenses

package-search は、結果の不正確さやパフォーマンスの問題のため、デフォルトでは無効になっています。package-search を有効にするには、設定ファイルenablePackageSearch オプションを有効にしてください。

enablePackageSearch: true

依存関係を無視する

設定ファイルでは、dependencyIgnores オプションを使用して、プロジェクト内の特定の依存関係のライセンスを無視できます。

dependencyIgnores: - name: "aapt2-proto" - name: "dexlib2"

依存関係ライセンスを許可または禁止する

構成ファイルでは、ライセンスマトリックスをオーバーライドし、特定のプロジェクトライセンスに対して許可または禁止される依存ライセンスのリストを指定できます。

このスニペットでは、keys キーはアプリケーションライセンスを受け入れ、allowed キーと prohibited キーはそれぞれ、許可される依存関係ライセンスと禁止される依存関係ライセンスのリストを受け入れます。その結果、AGPL-3.0-onlyAFL-2.0 プロジェクトライセンスと互換性を持つようになりますが、Apache-1.0 依存関係ライセンスは互換性がなくなります。

licenseRules: - keys: - "AFL-2.0" allowed: - "AGPL-3.0-only" prohibited: - "Apache-1.0"

このサンプルのすべてのキーは、いくつかの値を受け入れることができます。

licenseRules: - keys: - "PROPRIETARY-LICENSE" allowed: ["CC0-1.0", "CPL-1.0", "CC-BY-4.0", "EPL-1.0", "CDDL-1.0"]

依存関係ライセンスをオーバーライドする

構成ファイルでは、依存関係のライセンス識別子を上書きできます。これは、依存関係がデュアルライセンスであり、一部のライセンスを省略する場合、依存関係ソースからライセンス名を正しく検出できない場合に役立ちます。

このサンプルを使用すると、jaxb-runtime バージョン 2.3.1 の CDDL-1.1 ライセンスと GPL-2.0-with-classpath-exception ライセンスのみを検出するように Qodana に指示できます。

このサンプルでは、url はオプションです。

dependencyOverrides: - name: "jaxb-runtime" version: "2.3.1" url: "https://github.com/javaee/jaxb-v2" licenses: - key: "CDDL-1.1" url: "https://github.com/javaee/jaxb-v2/blob/master/LICENSE" - key: "GPL-2.0-with-classpath-exception" url: "https://github.com/javaee/jaxb-v2/blob/master/LICENSE"

カスタム依存関係を作成する

レポートに記載する必要があるがプロジェクトソースからは検出できない依存関係を含める場合は、構成ファイルcustomDependencies キーを使用して指定できます。

customDependencies: - name: ".babelrc JSON Schema (.babelrc-schema.json)" version: "JSON schema for Babel 6+ configuration files" licenses: - key: "Apache-2.0" url: "https://github.com/SchemaStore/schemastore/blob/master/LICENSE"

データの検証

ライセンス監査結果を表示するには、分析レポートでライセンス監査タブをクリックします。

The dependency tree

ライセンス監査レポートは、依存関係ツリーにグループ化されます。

  1. 該当する場合は、特定の依存関係を展開して、その依存関係ツリーを表示できます。

  2. 警告のみを使用すると、すべてのプロジェクトの依存関係と、プロジェクトのライセンスと互換性のないライセンスの依存関係を切り替えることができます。

  3. ライセンスセクションには、プロジェクト、モジュール、依存関係のライセンスのリストがあります。オープンライセンスのルールを使用すると、ライセンスの互換性のルールを表示できます。

  4. ライセンス一覧は様々な形式でダウンロードできます。SPDX(英語) 2.3 JSON 形式をダウンロードするには、.json を選択してください。

2026 年 6 月 12 日

関連ページ:

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...