sstalle/php7cc

此包已被废弃且不再维护。未建议替代包。

用于检查 PHP 5.3 - 5.6 代码与 PHP 7 兼容性的命令行工具

维护者

详细信息

github.com/sstalle/php7cc

源代码

问题

安装数: 496,960

依赖者: 15

建议者: 5

安全性: 0

星标: 1,452

关注者: 66

分支: 105

开放问题: 21

类型:项目

1.2.1 2017-07-25 10:26 UTC

This package is not auto-updated.

Last update: 2019-02-20 18:38:06 UTC


README

项目状态

该项目不再受支持。请考虑使用以下替代方案之一

简介

php7cc 是一个命令行工具,旨在简化从 PHP 5.3-5.6 迁移到 PHP 7 的过程。它会在现有代码中搜索可能引起问题的语句,并生成包含文件名、行号和简短问题描述的报告。它不会自动修复代码以与新版本的 PHP 兼容。

它检测哪些类型的问题?

php7cc 报告了两种类型的问题

  1. 错误 在 PHP 7 上肯定会引起某种麻烦(如致命错误、语法错误、警告等)。这些用红色突出显示。
  2. 警告 可能或可能不会导致逻辑错误。例如,在 PHP 5 和 PHP 7 中都合法,但版本之间行为改变的语句属于此类。警告用黄色突出显示。

可能导致错误或警告的报告的语句列表可以在 php-src 存储库 中找到。

尽管 php7cc 尽可能准确地检测尽可能多的问题,但有时要实现 100% 的可靠检测非常困难。这就是为什么您也应该为您打算迁移的代码运行全面的测试套件。

先决条件

要运行 php7cc,您需要安装 PHP,最低版本要求为 5.3.3。PHP 7 支持,但包含语法错误的文件(例如,无效的数字字面量或无效的 UTF-8 代码点转义序列)无法处理。对于此类文件,您将只收到关于第一个语法错误的警告消息。

您可能还需要 composer 来安装 php7cc。

安装

Phar 包

您可以从 Github 发行版 页面下载任何稳定版本的 phar 包。

Composer(全局)

请确保您已安装 composer。然后执行以下命令

composer global require sstalle/php7cc

还建议将全局 Composer 二进制目录添加到您的 PATH 环境变量中。此目录的位置取决于您使用的操作系统(如果您想了解更多,请参阅 Composer 文档)。以下命令适用于某些 *nix 系统

export PATH="$PATH:$HOME/.config/composer/vendor/bin"

这使得仅通过输入可执行文件名称即可运行php7cc。

Composer(本地,每个项目)

请确保您已安装composer。然后从您的项目目录执行以下命令

composer require sstalle/php7cc --dev

Docker镜像

Docker Hub上有一个Docker镜像(由ypereirareis贡献和维护)。

使用方法

本节中的示例假设您已使用composer全局安装了php7cc,并且您已将其供应商二进制目录添加到您的PATH中。如果不是这种情况,只需将php7cc替换为phar包二进制文件的正确路径。对于本地每个项目的安装,可执行文件将位于<your_project_path>/vendor/bin/php7cc

获取帮助

要查看所有可用选项的完整列表,请运行

php7cc --help

检查单个文件或目录

要检查文件或目录,请将其名称作为第一个参数传递。目录将递归检查。

因此,要检查文件,您可以运行

php7cc /path/to/my/file.php

要检查目录

php7cc /path/to/my/directory/

指定要检查的文件扩展名

当检查目录时,您还可以指定一个逗号分隔的文件扩展名列表,这些扩展名应进行检查。默认情况下,仅处理.php文件。

例如,如果您想检查.php、.inc和.lib文件,则可以运行

php7cc --extensions=php,inc,lib /path/to/my/directory/

排除文件或目录

您可以指定一个要排除检查的绝对或相对路径列表。相对路径相对于检查的目录。

因此,如果您想排除vendor和test目录,则可以运行

php7cc --except=vendor --except=/path/to/my/directory/test /path/to/my/directory/

在此示例中,目录/path/to/my/directory/vendor/path/to/my/directory/test及其内容将不会进行检查。

指定最小问题级别

如果您设置最小问题级别,则只有具有该级别或更高严重性的问题将由php7cc报告。有3个问题级别:“info”、“warning”和“error”。“info”是供将来使用保留的,与“warning”相同。

示例用法

php7cc --level=error /path/to/my/directory/

在这种情况下,只会显示错误,而不会显示警告。

指定输出格式

有两种输出格式可用:plainjson

output-format命令行选项,简称o,可用于更改输出格式

php7cc -o json /path/to/my/directory/ | json_pp

将输出

{
   "summary" : {
      "elapsedTime" : 0.0060338973999023,
      "checkedFiles" : 3
   },
   "files" : [
      {
         "errors" : {},
         "name" : "/path/to/my/directory/myfile.php",
         "warnings" : [
            {
               "text" : "String containing number in hexadecimal notation",
               "line" : 13
            }
         ]
      },
      {
         "warnings" : [
            {
               "line" : 6,
               "text" : "Reserved name \"string\" used as a class, interface or trait name "
            }
         ],
         "name" : "/path/to/my/directory/myfile.php",
         "errors" : {}
      }
   ]
}

故障排除

达到最大函数嵌套级别100/250/N,中止!

您应该在PHP或Xdebug配置文件中增加最大函数嵌套级别,如下所示

xdebug.max_nesting_level = 1000

N 字节允许的内存大小已耗尽

您应增加 CLI PHP 脚本可用的内存量或禁用 PHP 内存限制。可以通过将 memory_limit PHP 选项设置为 -1 来执行后者。此选项可以通过编辑 php.ini 或通过向 PHP 可执行文件传递命令行参数来设置,如下所示

php -d memory_limit=-1 php7cc.php /path/to/my/directory

其他有用链接

贡献

请阅读 贡献指南

鸣谢

贡献者列表可在相应的 Github 页面上找到。