paqtcom/coding-standards

PAQT.com 编码规范

2.1.1 2024-01-09 08:32 UTC

README

包含PAQT内部使用的编码规范文件。它包括phpstanphpmdphpcsphp cs fixer的编码规范。

安装

通过Composer将此依赖项添加为(开发)依赖项。

composer require paqtcom/coding-standards --dev

注意! 这样做并不会安装所有必要的工具。此包仅包含配置文件。

配置

phpcs

将一个包含以下基本配置的phpcs.xml文件添加到您的项目中

<?xml version="1.0"?>
<ruleset name="PAQT.com phpcs configuration">
    <description>PAQT.com ruleset for PHP projects.</description>

    <file>app</file>
    <file>src</file>
    ...

    <rule ref="vendor/paqtcom/coding-standards/rules/phpcs.xml" />
</ruleset>
vendor/bin/phpcs -ps

许多可用的phpcs配置可用于添加需要扫描或忽略的文件夹,或当需要修改或忽略预定义规则时

<rule ref="vendor/paqtcom/coding-standards/rules/phpcs.xml" />

<rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace">
    <exclude-pattern>database/*</exclude-pattern>
</rule>

php-cs-fixer

将一个包含以下基本配置的.php-cs-fixer.php文件添加到您的项目中

<?php

$finder = PhpCsFixer\Finder::create()
    ->in(__DIR__)
    ->path([
        '/^app/',
        '/^src/',
        ...
    ]);

/** @var PhpCsFixer\Config $config */
$config = include 'vendor/paqtcom/coding-standards/rules/php-cs-fixer.php';

return $config->setFinder($finder);
vendor/bin/php-cs-fixer fix --dry-run --diff --show-progress=dots --verbose

许多可用的php-cs-fixer规则可用于修改预定义规则或添加额外规则

return $config->setFinder($finder)
    ->setRules(
        array_merge($config->getRules(), [
            'no_space_around_double_colon' => false,
        ])
    );

注意:使用array_merge($config->getRules(), [])是必要的,以补充预定义规则。

phpmd

将一个包含以下基本配置的phpmd.xml文件添加到您的项目中

<?xml version="1.0"?>
<ruleset name="PAQT.com phpmd configuration"
         xmlns="http://pmd.sf.net/ruleset/1.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
         xsi:noNamespaceSchemaLocation=" http://pmd.sf.net/ruleset_xml_schema.xsd">

    <rule ref="vendor/paqtcom/coding-standards/rules/phpmd.xml" />
</ruleset>
vendor/bin/phpmd app src ... phpmd.xml

许多可用的phpmd规则可用于配置,例如修改预定义规则或添加额外规则

<rule ref="vendor/paqtcom/coding-standards/rules/phpmd.xml" />

<rule ref="rulesets/codesize.xml/CyclomaticComplexity">
    <priority>1</priority>
    <properties>
        <property name="reportLevel" value="5" />
    </properties>
</rule>

<rule ref="rulesets/naming.xml">
    <exclude name="LongVariable" />
</rule>

phpstan

将一个包含以下基本配置的phpstan.neon文件添加到您的项目中

includes:
    - ./vendor/paqtcom/coding-standards/rules/phpstan.neon

parameters:
    paths:
        - app
        - src
        ...

或者当是Laravel项目时

includes:
    - ./vendor/paqtcom/coding-standards/rules/larastan.neon

parameters:
    paths:
        - app
        - src
        ...
vendor/bin/phpstan analyze --memory-limit=2G

许多可用的phpstan配置可用于修改预定义规则或可能需要忽略的错误

parameters:
    ignoreErrors:
        - '#Parameter \#3 \$count of method Illuminate\\Database\\Eloquent\\Builder(.*)::has\(\) expects int, Illuminate\\Database\\Query\\Expression given.#'

    checkUnionTypes: false

phpcpd

vendor/bin/phpcpd app src ...

使用phpcpd时不需要配置。