Qodana 2024.1 ヘルプ

PHP バージョンの移行

ある PHP バージョンから別のバージョンへの移行がコードの品質にどのような影響を与えるかを確認するには、php-migration Qodana シナリオを使用します。このシナリオを実行すると、新しい PHP バージョンにアップグレードした後に発生するコードベースの問題を確認できます。

この機能は PHP 用の Qodana リンターによってサポートされており、Ultimate および Ultimate Plus ライセンスとその試用版で利用できます。

PHP language migration

このシナリオは、qodana.yaml ファイルで構成することも、CLI を使用して呼び出すこともできます。

script: name: php-migration parameters: fromLevel: <old-php-version> toLevel: <upgraded-php-version>

このスニペットは、name パラメーターを使用して php-migration シナリオを指定します。fromLevel パラメーターと toLevel パラメーターは、それぞれ古い PHP バージョンとアップグレードされた PHP バージョンを示します。

これは qodana.yaml 構成の例です。

script: name: php-migration parameters: fromLevel: 7.1 toLevel: 8.0

この機能を実行するには、次の 2 つのオプションがあります。

qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --script php-migration:<old-php-version>-to-<upgraded-php-version>
docker run \ -v <source-directory>/:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --script php-migration:<old-php-version>-to-<upgraded-php-version>

このスニペットは、--script オプションの php-migration シナリオとそれに続くコロン : 文字、および -to- 文字の組み合わせで区切られた PHP バージョンを指定します。QODANA_TOKEN 変数はプロジェクトトークンを参照します。

これは CLI コマンドの例です。

qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --script php-migration:7.1-to-8.0
docker run \ -v <source-directory>/:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --script php-migration:7.1-to-8.0

サンプル

言語移行機能がどのように機能するかを示すために、次の PHP コードスニペットがインスペクションされます。

<?php function f($a) { switch ($a) { case 1: return 1; case 2: return 2; default: return 3; } }

PHP ランタイムのバージョン 7.1 で Qodana を実行すると、レポートに次の問題が含まれます。

Analysis results: 2 problems detected Grouping problems by severity: Info: 2 Name Severity Count problems Missing return type declaration Info 1 Unused declaration Info 1

PHP ランタイムのバージョン 8.0 で Qodana を実行すると、次の出力が生成されます。

Analysis results: 3 problems detected Grouping problems by severity: Info: 3 Name Severity Count problems Missing return type declaration Info 1 Unused declaration Info 1 'switch' can be replaced with 'match' expression Info 1

移行機能を有効にして Qodana を実行すると、次のレポートが生成されます。

Analysis results: 1 problems detected Grouping problems by severity: Info: 1 Name Severity Count problems 'switch' can be replaced with 'match' expression Info 1

ご覧のとおり、移行レポートには、バージョン 8.0 レポートに含まれ、バージョン 7.1 レポートには含まれていない問題のみが含まれています。