interitty/code-checker

代码检查脚本提供了检查 Interitty 代码质量的方法。

v1.0.9 2024-08-30 11:25 UTC

This package is auto-updated.

Last update: 2024-08-30 09:27:46 UTC


README

代码检查脚本提供了检查 Interitty 代码质量的方法。

要求

安装

安装 interitty/code-checker 的最佳方式是使用 Composer

composer require --dev interitty/code-checker

要安装 git 钩子,只需在项目的根目录(其中包含 .git 和 vendor 文件夹)中运行以下命令

./vendor/bin/git-hook --install

对于 macOS 用户,需要通过运行以下命令将 coreutils 与 Linux 用户统一

brew install coreutils

使用

如果全局 PATH 属性包含指向 code-check 脚本文件夹的路径,则可以直接在项目文件夹中运行命令(无需任何参数)并检查代码中是否存在错误。

code-checker

可选地,可以通过相对或绝对路径指定项目文件夹

code-checker --ignore-path=./interitty/project/vendor ./interitty/project

可以通过连接 --path 参数检查多个路径。

code-checker --base-dir=./interitty/project --path=./src --path=./tests

code-checker 将返回执行过程中发生的最低退出代码。当退出代码为 0 时,项目中的所有内容都正常。这被用于 git-hook,可以用作 git pre-commitcommit-msgpre-push 钩子,或在 CI-CD 流程中。

用作 commit-msg 的 git 钩子还会检查提交信息,并允许跳过以 "work in progress" 开头或简单地以 . 开头的提交的检查,但不适用于推送到受保护的分支(mastertestdevelop)。

检查器设置

在某些情况下,例如 PHP 新版本发布时,设置启用检查器的列表可能很有用。因此,存在一个可选的 --checks=<CHECKS> 参数,允许通过逗号分隔的名称列表指定启用的检查。列表的默认值包含所有检查。

code-checker --checks=static_analysis,mess_detector,code_sniffer,coding_standard_fixer,phpunit

对于 CI-CD 流程,设置 CHECKS 环境变量是另一种有用的方法。

CHECKS=static_analysis,mess_detector,code_sniffer,coding_standard_fixer,phpunit code-checker

由于 PHP8 突发令牌错误,可以通过设置全局 CHECKS 环境变量来禁用 mess_detector 等功能,例如在 ~/.bashrc 文件 中。

设置

还有一些其他设置可能需要根据您的需求进行调整。

脚本参数描述
--base-dir="…”所有路径的基础目录,也用于截断输出消息。
--bin-dir="…”包含所有可执行文件的 composer bin 目录的路径。
--check_arguments_phpcs="…”PHP CodeSniffer 的可选参数。
--check_arguments_phpcsfixer="…”PHP Coding Standards Fixer 的可选参数。
--check_arguments_phpmd="…”PHP Mess detector 的可选参数。
--check_arguments_phpstan="…”PHP 静态分析工具的可选参数。
--check_arguments_phpunit="…”PHP Unit 的可选参数。
--checks=<CHECKS>逗号分隔的启用检查列表(static_analysis,mess_detector,code_sniffer,phpunit)。
--color启用彩色输出。
--colors="…”详细指定颜色输出。
--vv, --debug增加详细程度以显示调试信息。
--fail-fast发生第一个错误时停止处理其他测试。
--generate-baseline为当前项目生成PHPStan基线文件。
--fix尝试自动修复可能的问题。
-h, --help显示帮助信息。
--ignore-path="…"要排除检查的路径。
--memory-limit="…"指定与php.ini接受的格式相同的内存限制。
--no-color禁用彩色输出。
--no-output--quiet的别名。
--path="…"指定用于处理的文件或文件夹的路径(可选)。
-q, --quiet降低详细程度到0以隐藏所有输出。
-v, --verbose提高详细程度以显示警告信息。

环境变量

一些设置也可以通过环境变量来设置。

环境变量描述
CHECK_ARGUMENTS_PHPCS"…"PHP CodeSniffer 的可选参数。
CHECK_ARGUMENTS_PHPCSFIXER"…"PHP Coding Standards Fixer 的可选参数。
CHECK_ARGUMENTS_PHPMD"…"PHP Mess detector 的可选参数。
CHECK_ARGUMENTS_PHPSTAN"…"PHP 静态分析工具的可选参数。
CHECK_ARGUMENTS_PHPUNIT"…"PHPUnit的可选参数。
CHECKS="…"逗号分隔的启用检查列表(static_analysis,mess_detector,code_sniffer,phpunit)。
CLICOLOR=1启用彩色输出。
DEBUG=1增加详细程度以显示调试信息。
DOCKER_ENVS="…"逗号分隔的环境变量名称列表,用于将其提升到Docker中。
GLOBAL_BASELINE="…"PHPStan基线文件所在的路径。
NO_OUTPUT=1降低详细程度到0以隐藏所有输出。
VERBOSE=1提高详细程度以显示警告信息。

Docker支持

如果设置了全局环境变量DOCKER_DEV_CONTAINER,并且启动了一个带有<name>设置的docker容器,则将在其中执行code-checkergit-hook命令。要永久设置全局环境变量值,只需将以下命令添加到.bashrc文件或与您使用的shell相关的类似文件中。

export DOCKER_DEV_CONTAINER="<name>"

使用docker-exec脚本来在定义的docker容器中运行命令。

docker-exec "/path/command --some-arguments /path/to/project"

修复IDE

IDE在许多情况下都帮助开发者,但有时它们并不那么有用。在IDE和第三方应用程序的集成中,它们提供项目属性文件的位置,而不是项目地址。更简单但仍然不是很有用的是,这些应用程序从根目录而不是项目目录运行。

对于这些情况,有一个名为fix-ide的脚本,它检测包含项目属性nbproject文件夹的地址,并根据项目目录更改它们。

例如,以下调用将检测/path/to/project-properties/nbproject文件夹的存在,并使用在./nbproject/project.properties文件中定义为src.dir属性的目录调用给定的命令。

#$PWD = /
fix-ide /path/command --some-arguments /path/to/project-properties

前面的命令将导致调用以下命令。

#$PWD = /path/to/project
/path/command --some-arguments /path/to/project

PHP Mess Detector

要从IDE在Docker容器中运行具有自定义规则集的phpmd,请使用来自interitty/code-checker的同名phpmd脚本,而不是原始脚本。

PHP Mess Detector configuration example

例如,当interitty/code-checker被克隆到/opt/srv/interitty/interitty/code-checker文件夹中时,docker容器被命名为dev-php-fpm,首选规则集在./src/phpmd/rulesets/interitty.xml中,将以下字符串添加到NetBeans配置中。

/opt/srv/interitty/interitty/code-checker/bin/phpmd --color --docker-container=dev-php-fpm --fix-ide --force-ruleset=/opt/srv/interitty/interitty/code-checker/src/phpmd/rulesets/interitty.xml

PHP CodeSniffer

要从IDE在Docker容器中运行具有自定义规则集的phpcs,请使用来自interitty/code-checker的同名phpcs脚本,而不是原始脚本。

PHP CodeSniffer configuration example

例如,当将 interitty/code-checker 克隆到 /opt/srv/interitty/interitty/code-checker 文件夹中时,Docker 容器名为 dev-php-fpm,首选规则集在 ./src/phpcs/rulesets/interitty 中,请将以下字符串添加到 NetBeans 配置中。

/opt/srv/interitty/interitty/code-checker/bin/phpcs --color --docker-container=dev-php-fpm --fix-ide --force-ruleset=/opt/srv/interitty/interitty/code-checker/src/phpcs/rulesets/interitty

PHP 编码标准修复器

要从 Docker 容器中的 IDE 运行具有自定义规则集的 php-cs-fixer,请使用来自 interitty/code-checker 的同名的 php-cs-fixer 脚本,而不是原始脚本。

PHP Coding Standards Fixer configuration example

例如,当将 interitty/code-checker 克隆到 /opt/srv/interitty/interitty/code-checker 文件夹中时,Docker 容器名为 dev-php-fpm,首选规则集在 /src/php-cs-fixer/.php-cs-fixer.php 中,请将以下字符串添加到 NetBeans 配置中。

/opt/srv/interitty/interitty/code-checker/bin/php-cs-fixer

并将以下字符串添加到 默认选项 中。

--color --docker-container=dev-php-fpm --fix-ide --config=/opt/srv/interitty/interitty/code-checker/src/php-cs-fixer/.php-cs-fixer.php

PHP 静态分析工具

要从 Docker 容器中的 IDE 运行具有自定义规则集的 phpstan,请使用来自 interitty/code-checker 的同名的 phpstan 脚本,而不是原始脚本。

PHP Static Analysis Tool

例如,当将 interitty/code-checker 克隆到 /opt/srv/interitty/interitty/code-checker 文件夹中时,Docker 容器名为 dev-php-fpm,首选规则集在 /src/phpstan/interitty.neon 中,请将以下字符串添加到 NetBeans 配置中。

/opt/srv/interitty/interitty/code-checker/bin/phpstan --color --docker-container=dev-php-fpm --fix-ide

并将以下字符串添加到 配置 中。

/opt/srv/interitty/interitty/code-checker/src/phpstan/interitty.neon

有时可能需要向 PHPStan 添加一些要忽略的内容,以便它不成为项目的一部分,因为原因已经解决,只是尚未包含在当前版本中。在这种情况下,可以在项目根目录或主目录中生成一个 PHPStan 基准 文件。