バージョン 2024.1 の新機能
Qodana のバージョン 2024.1 には、いくつかの更新が含まれています。
FlexInspect 機能を使用すると、IntelliJ IDEA を使用して独自のインスペクションをゼロから開発できます。現在、この機能は Java、Kotlin、JS、TypeScript、PHP、Go、Python、Ruby、SQL、XML、CSS、YAML、JSON、SHELL、DOCKERFILE、MARKDOWN をサポートしています。
Qodana 構成設定を任意の YAML 形式のファイルに含めることができるようになりました。これはすべての Qodana リンターで利用できます。
増分分析の変更は、.NET の Qodana コミュニティを除くすべてのリンターによってサポートされるようになりました。
ライセンス監査機能は、JVM 用 Qodana、PHP 用の Qodana、JS 用 Qodana、Python 用 Qodana、Go 用 Qodana、.NET 用 Qodana リンターでデフォルトで有効になりました。
それに加えて、このバージョンの Qodana では、削除または無効化されたインスペクションとともに、以下にリストされている新しいインスペクションが提供されます。無効化されたインスペクションを有効にする方法については、インスペクションを分析範囲に含めるセクションを参照してください。
JVM 用 Qodana
いくつかのインスペクションが JVM 用 Qodana リンターに実装されています。
Id | 説明 | 重大度 |
---|---|---|
Java/ 制御フローの問題 /'while' は 'do while' に置き換えることができます |
| |
Java/ ロギング / ロギング呼び出しの引数としての非定数文字列の連結 |
| |
Java/ バグの可能性 / 到達不可能なコード |
| |
Java/ 冗長または冗長なコード構造 /count() の前のマッピング呼び出し |
| |
Java/ 可視性 / 空の「module-info.java」ファイル |
| |
JVM 言語 / ロギング / 区別できないロギング呼び出し |
| |
Spring/Spring セキュリティ /@PreFilter/@PreAuthorize/@PostFilter 自己呼び出しメソッド呼び出し |
| |
TOML/ 未解決の参照 |
| |
暗号化されていないプロトコルによるセキュリティ / リンク |
|
以下は、JVM 用 Qodana リンターから無効化または削除されたインスペクションのリストです。
Id | 説明 | 重大度 | 状況 |
---|---|---|---|
JUnit/JUnit 5 廃止されたアサーション |
| 無効 | |
単一のテストケースで複数のバージョンの JUnit/JUnit API を使用する |
| 無効 | |
JUnit/JUnit 不正な宣言 |
| 無効 | |
JUnit/JUnit 4 クラスの旧式 JUnit テストメソッド |
| 無効 | |
| Spring/Spring セキュリティ /@PreFilter 自己呼び出しメソッド呼び出し |
| 除去 |
Android のための Qodana コミュニティ
Android のための Qodana コミュニティリンターに実装されているインスペクションのリストは次のとおりです。
Id | 説明 | 重大度 |
---|---|---|
Java/ 制御フローの問題 /'while' は 'do while' に置き換えることができます |
| |
Java/ ロギング / ロギング呼び出しの引数としての非定数文字列の連結 |
| |
Java/ バグの可能性 / 到達不可能なコード |
| |
Java/ 冗長または冗長なコード構造 /count() の前のマッピング呼び出し |
| |
Java/ 可視性 / 空の「module-info.java」ファイル |
| |
JVM 言語 / ロギング / 区別できないロギング呼び出し |
|
Android のための Qodana コミュニティリンターで無効化されたインスペクションのリストは次のとおりです。
Id | 説明 | 重大度 |
---|---|---|
| Android/Android リソース検証 |
|
| Android/Android XML 要素は許可されていません |
|
| Android/Android XML ルートタグ検証 |
|
| Android/ ナビゲーションファイル |
|
| Android/ スイッチ文内の非定数リソース ID |
|
| Android/Room/'?' は、Room クエリのパラメーターとして使用されます |
|
| Android/Room/Room クエリで使用されるブールリテラル |
|
| Android/Room/Room SQL 内の未解決の参照 |
|
| Android/ シュリンカー /R8 によって無視されるフラグ |
|
| Android/Shrinker/ シュリンカー設定の無効なフラグ |
|
| Android/Shrinker/ クラスと内部クラス間のセパレータが無効です |
|
| Android/Shrinker/ 配列型の無効な使用 |
|
| Android/Shrinker/Shrinker Config ファイル内の未解決の参照 |
|
| Android/ 不明な Android XML 属性 |
|
| Android/ 解決できないタグ |
|
| 関連するアクティビティに Android/onClick ハンドラーがありません |
|
JUnit/JUnit 5 廃止されたアサーション |
| |
単一のテストケースで複数のバージョンの JUnit/JUnit API を使用する |
| |
JUnit/JUnit 不正な宣言 |
| |
JUnit/JUnit 4 クラスの旧式 JUnit テストメソッド |
|
JVM の Qodana コミュニティ
いくつかのインスペクションが JVM の Qodana コミュニティリンターに実装されています。
Id | 説明 | 重大度 |
---|---|---|
Java/ 制御フローの問題 /'while' は 'do while' に置き換えることができます |
| |
Java/ ロギング / ロギング呼び出しの引数としての非定数文字列の連結 |
| |
Java/Lombok/lombok 生成メソッドの静的インポートの使用 |
| |
Java/ バグの可能性 / 到達不可能なコード |
| |
Java/ 冗長または冗長なコード構造 /count() の前のマッピング呼び出し |
| |
Java/ 可視性 / 空の「module-info.java」ファイル |
| |
JVM 言語 / ロギング / 区別できないロギング呼び出し |
|
JVM の Qodana コミュニティリンターで無効化されたインスペクションのリストは次のとおりです。
Id | 説明 | 重大度 |
---|---|---|
JUnit/JUnit 5 廃止されたアサーション |
| |
単一のテストケースで複数のバージョンの JUnit/JUnit API を使用する |
| |
JUnit/JUnit 不正な宣言 |
| |
JUnit/JUnit 4 クラスの旧式 JUnit テストメソッド |
|
PHP 用の Qodana
PHP 用の Qodana リンターに実装されたインスペクションのリストは次のとおりです。
Id | 説明 | 重大度 |
---|---|---|
PHP/PHPUnit/ メソッドは PHPUnit 11 で非推奨になりました |
| |
PHP/PHPUnit/PHPUnit アノテーションは PHPUnit 11 では非推奨となり、属性に置き換えることができます。 |
| |
PHP/Symfony/HTTP リンク用のローカルに保存されたライブラリが見つかりません |
| |
PHP/Symfony/ モジュールがインポートマップにインストールされていません |
| |
PHP/ 未定義のシンボル / 補完を有効にするために DQL モデルクラスを推測できません |
| |
暗号化されていないプロトコルによるセキュリティ / リンク |
|
JS 用 Qodana
JS 用 Qodana リンターに実装されたインスペクションは次のとおりです。
Id | 説明 | 重大度 |
---|---|---|
暗号化されていないプロトコルによるセキュリティ / リンク |
|
JS 用 Qodana リンターから削除されたインスペクションは次のとおりです。
Id | 説明 | 重大度 |
---|---|---|
JavaScript と TypeScript/TypeScript/「any」タイプの不一致 |
|
Python 用 Qodana
Python 用 Qodana リンターに実装されたインスペクションのリストは次のとおりです。
Id | 説明 | 重大度 |
---|---|---|
TOML/ 未解決の参照 |
| |
暗号化されていないプロトコルによるセキュリティ / リンク |
| |
Python/Poetry パッケージバージョン |
|
Go 用 Qodana
Go 用 Qodana リンターに実装されたインスペクションは次のとおりです。
Id | 説明 | 重大度 |
---|---|---|
暗号化されていないプロトコルによるセキュリティ / リンク |
|
.NET 用 Qodana
.NET 用 Qodana リンターに実装されたインスペクションのリストは次のとおりです。
Id | 説明 | 重大度 |
---|---|---|
| C#/ コンパイラー警告 / 廃止メンバーが廃止されていないメンバーをオーバーライドします |
|
| C#/ コンパイラー警告 / パラメーターの参照種別修飾子が、非表示メンバー内の対応するパラメーターと一致しません。 |
|
| C#/ コンパイラー警告 / パラメーターの参照種別修飾子がターゲット内の対応するパラメーターと一致しません。 |
|
| C#/ コンパイラー警告 / タイプは評価目的のみであり、将来のアップデートで変更または削除される可能性があります。 |
|
| C#/ コンパイラー警告 / タイプは評価目的のみであり、将来のアップデートで変更または削除される可能性があります。続行するにはこの診断を抑制してください。 |
|
| C#/NUnit/NUnit。テストメソッド宣言に CancelAfter 属性がありません。 |
|
| C#/ 潜在的なコード品質の問題 / 出力パラメーターに対する意味のない [HandlesResourceDisposal] アノテーション |
|
| C#/ 潜在的なコード品質の問題 /「System.InvalidOperationException: コレクションが変更されました」の可能性あり |
|
| C#/Unity/ グループパスが定義されていません |
|
| C#/Unity/Unity オブジェクトの有効期間の暗黙的なチェック |
|
| C#/Unity/ オーディンのグループ属性タイプが正しくありません |
|
| C#/Unity/ メンバーは複数のグループに存在します |
|
| C++/ コードの冗長性 / 集合初期化における冗長なゼロ初期化子 |
|
| Razor/ 潜在的なコード品質の問題 / 不明な Razor アセンブリ |
|
| XAML/ コード通知 / 無効なタイプの XAML 動的リソース |
|
HTTP クライアント /HTTP リクエスト内の '$placeholder' |
| |
| HTTP クライアント / 認証構成の検証 |
|
HTTP クライアント / 不適切な HTTP プロトコルの使用 |
| |
HTTP クライアント / 不正な HTTP ヘッダー |
| |
HTTP クライアント /HTML/XML 本文にリクエストセパレータがありません |
| |
HTTP クライアント /JSON 本文にリクエストセパレータがありません |
| |
HTTP クライアント /YAML 本文にリクエストセパレータがありません |
| |
HTTP クライアント / 冗長な「Content-Length」 |
| |
HTTP クライアント / 未解決の認証識別子 |
| |
HTTP クライアント / 未解決の環境変数 |
| |
HTTP クライアント / リクエスト内の URL の空白 |
| |
JVM 言語 / ロギング / 区別できないロギング呼び出し |
| |
校正 / 文法 |
| |
校正 / 自然言語検出 |
| |
XML/ 未解決の参照 |
| |
暗号化されていないプロトコルによるセキュリティ / リンク |
|
以下は、.NET 用 Qodana リンターから無効化または削除されたインスペクションのリストです。
Id | 説明 | 重大度 | 状況 |
---|---|---|---|
| C#/NUnit/NUnit。TestCaseSource または ValueSource 属性内のシンボルを解決できません。 |
| 除去 |
| C#/ スペルの問題 / コメントの誤字 |
| 除去 |
| C#/ スペルの問題 / 識別子のタイプミス |
| 除去 |
| C#/ スペルの問題 / 文字列リテラルのタイプミス |
| 除去 |
| C#/Unity/ 基盤となる Unity エンジンオブジェクトのライフタイムチェックが意図せずバイパスされる可能性がある ('UnityEngine.Object' から派生した型の null 合体は、基礎となる Unity エンジンオブジェクトの有効期間チェックをバイパスします。) |
| 無効 |
| C#/Unity/ 基盤となる Unity エンジンオブジェクトのライフタイムチェックが意図せずバイパスされる可能性がある ('UnityEngine.Object' から派生した型の null 合体は、基礎となる Unity エンジンオブジェクトの有効期間チェックをバイパスします。) |
| 無効 |
| C#/Unity/ 組み込みコンポーネントのプロパティへの繰り返しアクセスは非効率的です |
| 無効 |
| C++/Clang 診断 /microsoft-mutable-reference clang 診断 |
| 無効 |
| C++/Clang-Tidy チェック /modernize-type-traits clang-tidy チェック |
| 無効 |
| XML/ スペルの問題 / マークアップ属性値のタイプミス |
| 除去 |
| XML/ スペルの問題 / マークアップテキストの誤字 |
| 除去 |
関連ページ:
![](https://resources.jetbrains.com/help/img/qodana/2024.1/flexinspect-how-it-works.png)
FlexInspect
IntelliJ IDEA のバージョン 2024.1 以降では、IntelliJ API と Kotlin を使用して、プロジェクト固有の独自のインスペクションを開発できます。次のことが可能です。ソースコードの PSI 表現にアクセスします。新しいインスペクションをオンザフライでデバッグします。期待どおりに動作しないコードフラグメントのハイライトなど、新しいカスタムインスペクションの動作を観察します。FlexInspect を使用すると、すべての IntelliJ IDEA および Qodana イ...
![](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.1/license-audit-overview-tree.png)
ライセンス監査
プロジェクトのライセンスが依存関係のライセンスと互換性があることを確認するのは決して簡単な作業ではありませんが、これは法的な目的のために必要です。このプロセスを自動化して間違いを避けるために、現在いくつかの Qodana リンターによってサポートされているライセンス監査機能を使用できます。JVM 用 QodanaMaven および GradlePHP 用の QodanaComposerJS 用 Qodananpm および YarnPython 用 QodanapipGo 用 QodanaGo モ...