bitban/php-code-quality-tools

Bitban项目中使用的PHP代码质量工具。

v0.9.16 2018-09-21 10:42 UTC

README

Latest Stable Version License Build Status Coverage Status

这些工具可以在将代码提交到代码仓库之前检测和修复一些常见错误。

查看命令参考部分获取更详细的信息。

安装

如果您还没有这样做,请将bin目录添加到composer.json

composer config bin-dir bin/

它将在您的composer.json文件中添加如下内容

"config": {
    "bin-dir": "bin/"
}

为了更好的体验,我们还建议配置post-install和post-update脚本

"scripts": {
    "post-install-cmd": [
        "Bitban\\PhpCodeQualityTools\\Composer\\ScriptHandler::checkHooks"
    ],
    "post-update-cmd": [
        "Bitban\\PhpCodeQualityTools\\Composer\\ScriptHandler::checkHooks"
    ]
}

然后,添加新的开发依赖项

composer require --dev "bitban/php-code-quality-tools:dev-master"

之后,从项目根目录可使用新的命令

bin/php-cqtools

命令参考

检查Git钩子

检查当前项目是否安装了Git钩子。如果没有,它会提供安装提示,但不会自动执行任何操作。

bin/php-cqtools hooks:check

安装Git钩子

将Git钩子安装到.git/hooks/。如果目标文件已存在,它们将被备份。

bin/php-cqtools hooks:install

管理的Git钩子有

  • pre-commit
  • post-checkout
  • post-merge

pre-commit钩子

它调用code:validate命令。

bin/php-cqtools code:validate --only-committed-files

post-checkout钩子

它会检查composer.lock是否已更改。如果是,将启动composer install命令。

bin/php-cqtools hooks:post-checkout <prevCommit> <postCommit> [<projectPath>]

projectPath参数设置要处理路径。默认值是当前项目基本路径。

post-merge钩子

它具有与post-checkout钩子相同的行为。

bin/php-cqtools hooks:post-merge [<projectPath>]

卸载Git钩子

从目标路径删除Git钩子。如果备份文件存在,它们将被恢复。

bin/php-cqtools hooks:uninstall

修复代码风格

根据定义的代码风格修复文件的代码风格。

它可能修复所有项目文件或仅修复要提交的文件。第二个选项非常方便用于修复pre-commit钩子中检测到的错误。

bin/php-cqtools code:fix-codestyle [--dry-run] [--excluded-paths=EXCLUDED_PATHS] [--only-committed-files] [--custom-ruleset=CUSTOM_RULESET] [<projectPath>]

projectPath参数设置要处理路径。默认值是当前项目基本路径。

--dry-run选项显示差异而不对文件应用任何更改。 --excluded-paths选项设置一些路径不进行处理。 --only-committed-files选项仅处理计划提交的文件。 --custom-ruleset选项设置用于替代默认规则的phpcs自定义规则集

验证代码

它执行几个任务

  • PHP文件
    • 检查语法错误
    • 检查是否提交了禁止使用的函数(例如,var_dump(),empty())
    • 检查是否使用了多字节字符串函数
    • 检查代码是否符合定义的代码风格建议(错误不能提交,警告可以)
    • 检查变量使用是否正确(例如,使用未定义的变量、未使用的参数等)
  • JSON文件
    • 检查语法错误
  • Composer相关文件
    • 检查是否提交了没有composer.lock的composer.json(仅在--only-committed-files修饰符下检查)

bin/php-cqtools code:validate [--excluded-paths=EXCLUDED_PATHS] [--only-committed-files] [--custom-ruleset=CUSTOM_RULESET] [<projectPath>]

projectPath参数设置要处理路径。默认值是当前项目基本路径。

--excluded-paths选项设置一些路径不进行处理。 --only-committed-files选项仅处理计划提交的文件。 --custom-ruleset选项设置用于替代默认规则的phpcs自定义规则集

显示调试信息

显示关于的调试信息

  • 已安装的验证/修复工具,例如 phpcs、jsonlint、phpcbf
  • 项目基本路径
  • Git钩子路径
  • Git钩子源路径
  • 已提交的文件
  • 排除的路径
  • 项目文件

bin/php-cqtools debug:show [--show-full-paths] [<projectPath]

projectPath参数设置要处理路径。默认值是当前项目基本路径。

--show-full-paths 选项启用完整路径文件列表而不是相对路径

此命令可能在这些工具的任何未来版本中不可用,因为它是为了调试目的而添加的。

运行 Bitban 轻量级测试

运行 Bitban 的框架轻量级测试。它假设 Bitban 的开发虚拟机正在运行,并且已安装测试启动器脚本 run_light_tests.sh

bin/php-cqtools test:run --vmHost[=VMHOST] [<projectPath]

projectPath参数设置要处理路径。默认值是当前项目基本路径。

--vmHost=VMHOST 选项设置开发虚拟机主机名

此命令对于未集成 Bitban 框架的项目没有用途。

参考资料

这里有关于此主题的信息(以及灵感)的几个有趣的链接。