olivertappin / phpcs-diff
基于git diff检测定义的编码标准违规。
Requires
- php: ^7.3 || ^8.0
- ext-gettext: *
- ext-json: *
- league/climate: ^3.4
- squizlabs/php_codesniffer: ^3.5.7
Requires (Dev)
- phpunit/php-code-coverage: ^9.2
- phpunit/phpunit: ^7.5.20 || ^8.5.21 || ^9.5.10
README
安装
建议使用Composer来安装此库。
Composer
全局安装
从您的项目根目录运行以下命令
composer global require olivertappin/phpcs-diff
手动安装
或者,您可以在您的composer.json
文件中手动添加olivertappin/phpcs-diff
的依赖项。例如
{ "require-dev": { "olivertappin/phpcs-diff": "^2.0" } }
然后运行composer update olivertappin/phpcs-diff
。
Git Clone
您还可以下载phpcs-diff
源代码,并将其创建为对/usr/bin
目录的符号链接
git clone https://github.com/olivertappin/phpcs-diff.git
ln -s phpcs-diff/bin/phpcs-diff /usr/bin/phpcs-diff
cd /var/www/project
phpcs-diff master -v
用法
基本用法
phpcs-diff <current-branch> <base-branch> -v
假设您当前所在的分支是您要比较的分支,而develop
是基础分支。在这个例子中,phpcs-diff
会在后台运行以下diff语句
git diff my-current-branch develop
请注意
-v
标志是可选的。这将在处理过程中返回详细输出。current-branch
参数是可选的。如果未定义,则phpcs-diff
将使用git rev-parse --verify HEAD
通过当前提交哈希值。- 您必须在项目基本目录中定义一个
ruleset.xml
。
运行phpcs-diff
后,可执行文件将返回类似以下输出的结果
########## START OF PHPCS CHECK ##########
module/Poject/src/Console/Script.php
- Line 28 (WARNING) Line exceeds 120 characters; contains 190 characters
- Line 317 (ERROR) Blank line found at end of control structure
########### END OF PHPCS CHECK ###########
目前这是唯一支持的格式,但我将研究在未来添加更多格式(类似于phpcs
)。
Travis CI 使用
要将其用作CI/CD流水线的一部分,创建一个包含以下内容的脚本
#!/bin/bash set -e if [ ! -z "$TRAVIS_PULL_REQUEST_BRANCH" ]; then git fetch `git config --get remote.origin.url` $TRAVIS_BRANCH\:refs/remotes/origin/$TRAVIS_BRANCH; composer global require olivertappin/phpcs-diff; ~/.composer/vendor/bin/phpcs-diff $TRAVIS_BRANCH; else echo "This test does not derive from a pull-request." echo "Unable to run phpcs-diff (as there's no diff)." # Here you might consider running phpcs instead: # composer global require squizlabs/php_codesniffer; # ~/.composer/vendor/bin/phpcs . fi;
这将允许您运行phpcs-diff
来与您的pull-request的diff进行比较。
以下是如何在Travis CI中使用它的示例
关于
phpcs-diff
基于git diff
检测定义的一组编码标准违规。它使用来自PHP_CodeSniffer项目的phpcs
。
此项目有助于实现以下目标
- 加速您的CI/CD流水线,仅验证更改文件而不是整个代码库。
- 允许您将无法一次更改全部的遗留代码库迁移到完全符合编码标准。
此可执行文件通过仅检查与基础分支相比的更改行,与所有失败的违规行为进行检查,因此您可以确信任何新或更改的代码都符合标准。
这有望使您的代码库随着时间的推移而变得更加符合该编码标准,也许您最终会发现资源来更改所有内容,并且只需运行phpcs
即可。
要求
phpcs-diff
的最新版本需要PHP版本5.6.0或更高版本。
此项目还依赖于squizlabs/php_codesniffer
,它用于内部通过phpcs
获取失败的违规行为。
最后,还安装了league/climate
软件包。这是为了处理控制台输出,但这个依赖可能在未来的版本中被删除。
贡献
有关信息,请参阅CONTRIBUTING.md。