phpcompatibility / phpcompatibility-symfony
一套用于 PHP_CodeSniffer 的规则集,用于检查项目中的 PHP 交叉版本兼容性问题,同时考虑到 Symfony polyfill 库提供的 polyfills。
Requires
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^0.7
- symfony/polyfill-php54: 1.19
- symfony/polyfill-php55: 1.19
- symfony/polyfill-php56: 1.19
- symfony/polyfill-php70: 1.19
- symfony/polyfill-php71: 1.19
- symfony/polyfill-php72: dev-main
- symfony/polyfill-php73: dev-main
- symfony/polyfill-php74: dev-main
- symfony/polyfill-php80: dev-main
Suggests
- dealerdirect/phpcodesniffer-composer-installer: ^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.
- roave/security-advisories: dev-master || Helps prevent installing dependencies with known security issues.
README
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,则可以使用 "包含" 中的信息来帮助您决定要使用哪些规则集。
要求
-
- PHP 5.3+ 用于与 PHP_CodeSniffer 2.3.0+ 一起使用。
- PHP 5.4+ 用于与 PHP_CodeSniffer 3.0.2+ 一起使用。
使用 PHP_CodeSniffer 的最新稳定版本来获得最佳效果。PHP_CodeSniffer 的最低推荐版本是 2.6.0。
-
PHPCompatibility 9.0.0+.
-
PHPCompatibilityParagonie 1.0.0+.
-
PHPCompatibilityPasswordCompat 1.0.0+.
安装说明
唯一支持的安装方法是通过 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
中添加的 polyfillPhpToken
类。- 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
中添加的四个 polyfillPHP_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*
库的规则集。