phpcompatibility/phpcompatibility-symfony

一套用于 PHP_CodeSniffer 的规则集,用于检查项目中的 PHP 交叉版本兼容性问题,同时考虑到 Symfony polyfill 库提供的 polyfills。

1.2.1 2022-10-23 15:44 UTC

This package is auto-updated.

Last update: 2024-08-24 16:39:04 UTC


README

Latest Stable Version Latest Unstable Version License Build Status

PHPCompatibilitySymfony

使用 PHPCompatibilitySymfony,您可以分析项目代码库,以检查使用任何 Symfony polyfill 库 的 PHP 交叉版本兼容性。

本存储库包含什么?

一套用于 PHP_CodeSniffer 的规则集,用于检查项目中的 PHP 交叉版本兼容性问题,同时考虑到 Symfony polyfill 库提供的 polyfills。

这些规则集通过排除由这些库提供的回填和 polyfills 来防止来自 PHPCompatibility 标准的误报。

关于 "包含":一些 polyfills 有其他 polyfills 作为依赖项。如果 PHPCompatibility 项目为 polyfill 依赖项提供了专门的规则集,则该规则集将包含在更高层次 polyfill 的规则集中。

例如:由于 polyfill-php70 库将 random_compat 作为依赖项 声明,因此 PHPCompatibilitySymfonyPolyfillPHP70 规则集包含 PHPCompatibilityParagonieRandomCompat 规则集。

在实践中,这意味着如果您的项目使用多个 polyfills,则可以使用 "包含" 中的信息来帮助您决定要使用哪些规则集。

要求

安装说明

唯一支持的安装方法是通过 Composer

如果您尚未安装用于管理 PHP_CodeSniffer 的 installed_paths 设置的 Composer 插件,请从命令行运行以下内容

composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer require --dev dealerdirect/phpcodesniffer-composer-installer:"^0.7" phpcompatibility/phpcompatibility-symfony:"*"

如果您已经安装了 Composer PHP_CodeSniffer 插件,请运行

composer require --dev phpcompatibility/phpcompatibility-symfony:"*"

接下来,运行

vendor/bin/phpcs -i

如果一切顺利,您现在将看到 PHPCompatibility 和一系列 PHPCompatibilitySymfony 以及其他 PHPCompatibility 标准已为 PHP_CodeSniffer 安装。

如何使用

现在您可以使用以下命令检查项目中的代码以检查 PHP 交叉版本兼容性

./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP54
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP55
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP56
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP70
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP71
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP72
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP73
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP74
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP80

# You can also combine the standards if your project uses several:
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP55,PHPCompatibilitySymfonyPolyfillPHP70,PHPCompatibilitySymfonyPolyfillPHP73

默认情况下,您只会收到关于已弃用和/或已删除的 PHP 功能的通知。

要充分利用 PHPCompatibilitySymfony 规则集,您应该指定一个 testVersion 以检查其兼容性。这将启用对已弃用/已删除的 PHP 功能以及使用新 PHP 功能的代码的检测。

例如

# For a project which should be compatible with PHP 5.3 up to and including PHP 7.0:
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP56 --runtime-set testVersion 5.3-7.0

# For a project which should be compatible with PHP 7.1 and higher:
./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP73 --runtime-set testVersion 7.1-

有关设置 testVersion 的更详细信息,请参阅通用 PHPCompatibility 标准的 README 文件。

仅测试 PHP 文件

默认情况下,PHP_CodeSniffer 将分析 PHP、JavaScript 和 CSS 文件。由于 PHPCompatibility sniffs 仅针对 PHP 代码,您可以通过告诉 PHP_CodeSniffer 仅检查 PHP 文件来使运行稍微快一点。

./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP71 --extensions=php --runtime-set testVersion 5.3-

许可

PHPCompatibility 组织内的所有代码均根据 GNU Lesser General Public License (LGPL) 发布。有关更多信息,请访问 https://gnu.ac.cn/copyleft/lesser.html

变更日志

1.2.1 - 2022-10-23

  • PHPCompatibilitySymfonyPolyfillPHP80 规则集:允许使用在 polyfill-php80 版本 1.25.0 中添加的 polyfill PhpToken 类。
  • README:更新了与 Composer >= 2.2 兼容的安装说明 兼容性
  • Composer:该软件包现在将自己识别为静态分析工具。感谢 @GaryJones
  • 其他日常维护和文档更新。

1.2.0 - 2021-02-16

  • 添加了新的 PHPCompatibilitySymfonyPolyfillPHP80 规则集。
  • 现在建议使用的 Composer PHPCS 插件 版本为 ^0.7.0,该版本提供与 Composer 2.0 的兼容性。
  • 规则集现在也针对 PHP 7.4 和 8.0 进行了测试。注意:只有在 PHP_CodeSniffer >= 3.5.6 的组合下,才能获得完整的 PHP 7.4 支持。注意:只有在 PHP_CodeSniffer >= 3.5.7 的组合下,才能获得运行时的 PHP 8.0 支持,完整支持预计将在 PHP_CodeSniffer 3.6.0 中实现。

1.1.3 - 2020-07-19

  • PHPCompatibilitySymfonyPolyfillPHP72 规则集:允许使用在 polyfill-php72 版本 1.16.0 中添加的四个 polyfill PHP_FLOAT_* 常量。

1.1.2 - 2020-05-20

  • PHPCompatibilitySymfonyPolyfillPHP56 规则集:允许使用两个 polyfill LDAP 常量(在 Polyfill 文档中未记录)
  • Composer:现在建议使用的 Composer PHPCS 插件 版本为 ^0.6.0

1.1.1 - 2019-08-30

  • PHPCompatibilitySymfonyPolyfillPHP72 规则集:对检测本身进行微调,以防止在 sniffs 运行时出现误报。
  • PHPCompatibilitySymfonyPolyfillPHP72 规则集的集成测试中修复了小错误。

1.1.0 - 2019-08-29

  • 添加了新的 PHPCompatibilitySymfonyPolyfillPHP74 规则集。
  • 更新了 PHPCompatibilitySymfonyPolyfillPHP73 规则集,允许使用在 polyfill-php73 版本 1.11.0 中添加的 JsonException 类的存根。
  • Composer:现在建议使用的 Composer PHPCS 插件 版本为 ^0.5.0
  • CI:添加了早期警告系统,以检测由于 polyfill 库本身的变化而引起的误报。

1.0.1 - 2018-12-16

  • 在规则集运行到 polyfill 代码本身时防止误报。
  • 规则集现在也针对 PHP 7.3 进行了测试。注意:由于 PHP_CodeSniffer 内部的兼容性问题,只有在 PHP_CodeSniffer 2.9.2 或 3.3.1+ 的组合下,才能获得完整的 PHP 7.3 支持。

1.0.0 - 2018-10-07

PHPCompatibilitySymfony 的首次发布,其中包含覆盖 polyfill-php* 库的规则集。