gild / php-fixed
这是一个库,通过在提交前进行PSR兼容的PHP编码检查来保持提交日志的整洁。
Requires
Requires (Dev)
- gild/add-issue-number: ^1.0
- gild/github-template: ^1.0
README
通过在提交前进行PSR兼容的PHP编码检查,提供一个保持提交日志整洁的机制。
要求
- 本地环境PHP > ver5.4
安装方法
在composer.json中添加以下内容。
{
"scripts": {
"post-autoload-dump": [
"bash vendor/gild/php-fixed/execution.sh commit"
],
"check": [
"bash .git_hooks/pre-commit/main.sh"
],
"lint": [
"phpcs --standard=phpcs.xml -sp ."
],
"lint:fix": [
"phpcbf --standard=phpcs.xml -sp ."
]
}
}
composer require --dev gild/php-fixed ^3.0
check, lint, lint:fix是可选的设置。
post-autoload-dump很重要。
post-autoload-dump
execution.sh {triggerType}
'. execution.sh commit' -> コミット前にコーディングチェックを行います。
'. execution.sh push' -> プッシュ前にコーディングチェックを行います。コミット前のチェックは行いません。
check
用于在提交时,不执行提交操作,而是一气呵成地从编码检查到自动修复的过程。
提交时的编码检查到自动修复的处理是调用composer check,check别名本身在集成本库时的依赖关系不存在。对于lint和lint:ix也是如此。
lint
用于在不执行提交的情况下,仅进行编码检查。
lint:fix
用于在不执行提交的情况下,仅进行自动修复。
管理目标文件
以下文件作为管理目标文件。
phpcs.xml
此文件将在仓库根目录下生成。
基于Laravel定义规则,但可以自定义编写规则。 自定义Sniff属性
可以更改文件名,但请勿忘记在main.sh中更改文件名。
main.sh
此文件将在仓库根目录下生成git-hooks/pre-{triggerType}目录下。
处理本身由用户设置管理,文件名不可更改。
通过git客户端软件的行为
※ 使用CUL直接输入git命令进行操作的用户不需要此步骤。
检查脚本是通过php命令执行的,但有些git客户端软件可能不读取php的path,因此我们在检查脚本的开始部分读取了/usr/local/bin。
因此,请在本地环境中创建一个指向已安装php5.4以上版本的别名到/usr/local/bin。以下是一个别名创建示例。
ln -s /usr/local/opt/php@7.3/bin/php /usr/local/bin/php
如果已经在本地上安装了php5.4以上版本,则需要找到php存储的位置,并创建相应的别名。
type php # php is /usr/local/opt/php@7.3/bin/php ln -s /usr/local/opt/php@7.3/bin/php /usr/local/bin/php
使用git客户端软件的用户如果未进行上述设置,则无法执行编码检查的自动化。
注意事项
输出格式和日志
以下输出格式可能会变化的选项不应在phpcs.xml中定义。如果输出日志,则检查脚本无法捕获警告。
<arg value="sp" /> <arg name ="report-full" value="./phpcs.log" />
如果没有使用检查脚本,可以自由设置,因此请在composer.json的scripts中自定义。
{
"scripts": {
"lint": [
"phpcs --standard=phpcs.xml -sp ."
],
"lint:fix": [
"phpcbf --standard=phpcs.xml -sp ."
]
}
}
已经使用git-hooks的用户
考虑在引入本库之前已经使用git-hooks的情况,如果已经在pre-commit或pre-push中编写了某些脚本,则不会删除或覆盖。
pre-commit或pre-push添加了.buckup后缀进行备份。
补充
如果可能,我认为本地环境中的额外导入物不应依赖于库,但由于几乎没有人使用本地环境中的docker-container进行git操作,因此需要根据每个用户的本地环境导入需求(php5.4以上)。