code050 / codestyle
官方Code050编码风格包,包含指南、phpcs配置和phpstan配置。
Requires
- php: >7.4
- melchiorkokernoot/composer-pkg-scripts: ^1.0.0
- phpstan/phpstan: ^1.9
- slevomat/coding-standard: ~8.0
- squizlabs/php_codesniffer: ^3.7
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-29 22:58:37 UTC
README
Code050 Codestyle
官方Code050编码风格包。
指南
指南的描述可以在Code050编码风格指南文档中找到。
安装
您可以通过composer安装此包
composer require code050/codestyle
用法
该包的主要用途是为所有Code050项目提供一致的编码风格。我们通过使用各种工具的组合来实现这一点。目前,这些工具包括
- PHPStan
- PHP_CodeSniffer
该包包含这些工具的存根配置,可以在您的项目中使用。
初始化包
要初始化包,您可以运行以下命令
composer code050:codestyle:init
这将复制存根配置文件到您的项目,但不会覆盖任何现有文件。如果您想覆盖现有文件,可以使用-- --overwrite
标志。注意在--overwrite
标志之前的双--
。
在现有项目中初始化包时,您很可能会从PHP_CodeSniffer和PHPStan检查中获得大量错误。这是因为存根配置文件非常严格,将强制执行许多规则。对于PHPStan,您可以生成一个基线文件来忽略所有错误。
如果您不想为项目使用Php-cs基线,您可以使用--loose
标志以较宽松的配置初始化包。这将许多常见错误报告为警告而不是错误,因此您可以按自己的节奏修复它们。在后台,--loose
标志将复制phpcs.loose.xml
文件而不是phpcs.xml
文件。您甚至可以扩展此文件以包含更多的自定义规则缓解,以达到0错误状态。
运行检查
为确保您的代码遵循Code050编码风格,您需要运行PHP_CodeSniffer和PHPStan检查。您可以通过运行以下命令运行PHP_CodeSniffer检查
PHP_CodeSniffer
composer code050:codestyle:check
此命令将检查您的代码是否符合Code050编码风格规则,并反馈任何发现的问题。
要自动修复PHP_CodeSniffer发现的任何问题,您可以运行以下命令
composer code050:codestyle:fix
PHPstan
您可以通过运行以下命令运行PHPStan检查
composer code050:codestyle:stan
此命令将检查您的代码是否符合Code050 PHPStan规则,并反馈任何发现的问题。
配置
PHP_CodeSniffer
初始化包后,您可以通过编辑项目根目录中的phpcs.xml
文件来配置PHP_CodeSniffer规则。有关可以配置的规则的信息,请参阅PHP_CodeSniffer文档。
基本上,当您想忽略某些规则时,您可以向phpcs.xml
文件添加以下内容
<rule ref="Code050"> <exclude name="Generic.Files.LineLength"/> </rule>
示例:配置认知复杂度
<rule ref="SlevomatCodingStandard.Complexity.Cognitive"> <properties> <property name="warningThreshold" value="8"/> <property name="errorThreshold" value="8"/> </properties> </rule>
当您想在特定路径中忽略规则时,您可以向phpcs.xml
文件添加以下内容
<rule ref="Code050"> <rule ref="SlevomatCodingStandard.Functions.StaticClosure.ClosureNotStatic"> <exclude-pattern>*/tests/*</exclude-pattern> </rule> </rule>
PHPStan
您可以通过编辑项目根目录中的phpstan.neon
文件来更改PHPStan配置。有关可以配置的规则的信息,请参阅PHPStan文档。
生成基线
当您想要生成基线文件时,可以运行以下命令
composer code050:codestyle:stan:baseline
这将生成一个位于项目根目录的 phpstan-baseline.neon
文件。它还会在您的 phpstan.neon
文件中注册此基线,因此在运行 PHPStan 检查时将会使用它。
一般注意事项
如果您遇到任何与该软件包相关的问题,请在 GitHub 仓库 中创建一个问题。
针对旧项目的流程
不幸的是,我们无法直接在旧项目中运行 init 和 fixer 命令。这可能会破坏某些东西,但通常在生成 phpstan 基线之后,项目仍然会有 PHPStan 错误。
这些错误通常表明代码中存在严重问题,在生产环境中触发时可能会抛出异常。因此,我们需要手动修复这些错误。
对于 PHP_CodeSniffer,我们可以使用 --loose
标志来生成一个较宽松的配置。这将把许多常见错误报告为警告而不是错误,这样您就可以按自己的节奏修复它们。您可以在 初始化 部分找到对 --loose
标志的详细说明。
因此,我们首先需要使用 --loose
标志运行 init 命令
composer code050:codestyle:init -- --loose
之后,我们可以运行 PHP_CodeSniffer fixer 命令
composer code050:codestyle:fix
然后运行 PHPStan 生成基线文件
composer code050:codestyle:stan:baseline
在此之后仍然存在的错误是需要手动修复的。对于 PHP_CodeSniffer,您可以按照 初始化 部分中所述将这些错误报告为警告。对于 PHPStan,您应该手动修复错误。