pccomponentes / ganchudo
用于管理钩子的项目
v1.0.1
2018-09-20 08:30 UTC
Requires
- symfony/config: ^4.1
- symfony/finder: ^4.1
- symfony/process: ^4.1
- symfony/yaml: ^4.1
Requires (Dev)
- phpunit/phpunit: ^7.3
- squizlabs/php_codesniffer: ^3.3
- symfony/var-dumper: ^4.1
This package is auto-updated.
Last update: 2024-08-29 04:03:43 UTC
README
这个库用于统一你的项目代码审查任务,便于与版本控制系统中的钩子集成。该库将按阶段执行此分析,打印所有失败的阶段,如果所有阶段都正确执行,则返回正信号(0),如果任何阶段出现问题,则返回负信号(1)。每个阶段对应于执行一个控制台命令,这是你喜欢的分析工具。建议使用配置文件(如果有的话),以将需要执行的控制台命令减少到最小。
配置
要配置 ganchudo,在任何项目文件夹中创建一个 YAML 格式的文件(建议在项目根目录),如下所述。建议将其命名为 ganchudo.yml.dist
并将其放置在根目录中,以与其他类似工具保持一致性。
示例
ganchudo: inspectors: - name: 'Composer Validation' command: 'composer.phar validate --strict' - name: 'Php Linter' command: 'php -l <iterator>' iterator: in: ['src', 'tests'] exclude: [] file: '*.php' - name: 'Php Code Sniffer' command: 'vendor/bin/phpcs --standard=phpcs.xml.dist' - name: 'PhpUnit' command: 'vendor/bin/phpunit --configuration phpunit.xml.dist --no-coverage --testdox --colors=always' timeout: 3600
格式
Ganchudo 区分两种检查器:简单检查器和迭代器检查器。用于执行命令的根目录是配置文件所在的目录。
简单检查器
正如其名所示,这是最简单的阶段类型。它包括执行一个单独的控制台命令,我们将用名称标识它。
name
: 必须的。字符串,表示阶段的名称。command
: 必须的。字符串,表示要执行的控制台命令。timeout
: 可选的。以秒为单位的正整数,表示要执行的过程的超时时间。
迭代器检查器
这是一个比上一个稍微复杂一些的阶段。某些工具需要在项目的每个文件上直接执行,例如 PHP -l
。为了满足这一需求,阶段被定义为与上一个阶段相同,但有一些不同
name
: 必须的。字符串,表示阶段的名称。command
: 必须的。字符串,表示要执行的控制台命令,但在正确的位置插入<iterator>
字符串,稍后将用以下要详细说明的选项替换。iterator
: 包含以下选项的数组in
: 必须的。源目录的数组。file
: 必须的。与文件名匹配的模式。接受 glob 模式和相对in
的正则表达式模式。exclude
: 可选的。要排除的目录的数组,相对于in
中指定的。
执行
要执行 ganchudo,创建一个 ganchudo 配置文件,然后在项目根目录的终端中写入
$> vendor/bin/ganchudo ganchudo.yml.dist
如果一切顺利,进程将以信号 0 结束。如果任何阶段失败,它将以 1 结束。
与 GIT 钩子的集成
如果想要将此代码审查作为接受 git 提交的先决条件,只需在项目 .git\hooks
目录中创建一个名为 pre-commit
的文件,内容如下
#!/usr/bin/bash
SCRIPT=$(../../vendor/bin/ganchudo ../../ganchudo.yml.dist)
STATUS=$?
echo "$SCRIPT"
exit $STATUS
如果你有一个基于 docker-compose 的工作环境,脚本将看起来像这样
#!/usr/bin/bash
SCRIPT=$(docker-compose -f "<docker-compose-yml-file>" run --rm <service-name> sh -c "vendor/bin/ganchudo ganchudo.yml.dist" 2>&1)
STATUS=$?
echo "$SCRIPT"
exit $STATUS