gild/php-fixed

这是一个库,通过在提交前进行PSR兼容的PHP编码检查来保持提交日志的整洁。

安装: 21

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 0

分支: 0

开放问题: 0

语言:Shell

v3.0.1 2022-05-01 09:01 UTC

This package is auto-updated.

Last update: 2024-09-04 15:59:16 UTC


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以上)。