php - PhpStorm 2018 - 如何检查整个项目与 php 7.2 的兼容性?
问题描述
我有一个长期在 PhpStorm 中开发的项目,并且与 php 5.6 完全兼容。在任何情况下,它都可以使用 php 5.6 工作并部署在服务器上。
如何使用 PhpStorm 2018 检查整个项目与 php 7.2 的兼容性,并仅突出显示php 代码仅与 7.2 不兼容的那些地方?
解决方案
您在这里有两个选项,它们相互依赖。
安装 PHP_CodeSniffer
要检查您的项目是否与 7.2 兼容,我推荐使用PHP CodeSniffer。这是一个小而强大的命令行程序,它可以根据预定义的编码标准静态检查您的代码。
从项目的根级别通过 Composer 安装它:
$ composer require --dev squizlabs/php_codesniffer
您也可以全局安装它或作为 Phar 安装它。请查阅文档以了解替代安装方法。
安装后,您可以通过以下方式调用它:
$ vendor/bin/phpcs --version
// 这会输出你的版本
如上所述,PHPCS 带有即用型编码标准。利用
$ vendor/bin/phpcs -i
列出它们。
要检查您的代码是否与 PSR-2 兼容,请运行:
$ vendor/bin/phpcs --standard=PSR2 .
由于您想检查项目的 PHP 7.2 兼容性,您必须安装此标准:https ://github.com/PHPCompatibility/PHPCompatibility
$ composer require --dev phpcompatibility/php-compatibility
现在在 PHPCS 中注册标准。打开您的composer.json
并将此行添加到该scripts
部分:
"scripts": {
"post-install-cmd": "\"vendor/bin/phpcs\" --config-set installed_paths vendor/phpcompatibility/php-compatibility",
"post-update-cmd" : "\"vendor/bin/phpcs\" --config-set installed_paths vendor/phpcompatibility/php-compatibility"
}
如果您安装/更新依赖项,这将需要注意。要立即注册标准,您必须手动调用脚本:
$ composer run-script post-install-cmd
要检查新标准是否已成功安装,请运行:
$ vendor/bin/phpcs -i
现在您可以从 cli 运行检查:
$ vendor/bin/phpcs -p . --standard=PHPCompatibility
配置 PhpStorm 以使用 PHP_CodeSniffer
由于您已经在 PhpStorm 中配置了 PHP 解释器,打开您的首选项并转到 PHP | 质量工具 | 代码嗅探器。单击...
并键入 PHP_CodeSniffer 安装的路径。在我们的例子vendor/bin/phpcs
中,点击验证。它显示当前版本的工具提示。
现在单击确定。
启用检查
在首选项中转到编辑器 | 检查 | PHP | 质量工具。启用PHP Code Sniffer validation
复选框。然后在右侧找到设置页面。您必须PHPCompatibility
从选择字段中选择标准,然后点击选择旁边的重新加载按钮。完成后,单击OK
。
您现在应该会在编辑器中看到带下划线的错误。可以在我们刚刚关闭的配置窗格中设置严重性和颜色。
结论
现在您有两种方法来检查您的项目代码。CLI方式为您提供了关于代码状态的更好的总体概览,其中IDE方式可以帮助您在编码时注意不使用旧语言结构。
推荐阅读
- javascript - How to remove object from array if property in object do not exist
- python - 熊猫数据框中的自定义数据排序
- javascript - a-camera 旋转和 a-entity 旋转组合
- spring-boot - 将 Spring Boot 版本从 2.0.3.RELEASE 更改为 2.1.0.BUILD-SNAPSHOT 时出现问题
- python - 使用 Plotly 的 Slider 交互式绘图
- sql - SQL查询每月的第一天只提取一条记录,每个月
- javascript - Javascript 如何下载图像 blob 数据:image/png;base64
- firebase - How to write to a cloud storage bucket with a firebase cloud function triggered from firestore?
- azure-devops - VSTS - Trigger build based on folder change
- android - ReactNative 中的 Android App Launcher,如 Microsoft、Google Launcher