code050/codestyle

官方Code050编码风格包,包含指南、phpcs配置和phpstan配置。

2.0.5 2023-05-11 11:44 UTC

README

banner

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,您应该手动修复错误。