lmc / coding-standard
Alma Career Czechia (LMC) 项目中使用的编码标准
4.1.1
2024-06-10 09:07 UTC
Requires
- php: ^8.0
- friendsofphp/php-cs-fixer: ^3.47.1
- slevomat/coding-standard: ^8.6
- squizlabs/php_codesniffer: ^3.9
- symplify/easy-coding-standard: ^12.2.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.42.0
- nikic/php-parser: <5.0
- php-parallel-lint/php-parallel-lint: ^1.4.0
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan: ^1.11.1
- phpstan/phpstan-phpunit: ^1.4.0
- phpunit/phpunit: ^9.6.19
README
在 Alma Career Czechia(原名 LMC)产品中使用的 PHP 编码标准。
该标准基于 PSR-12 和部分基于 PER 2.0,并添加了各种检查,以确保代码可读性、遵循相同的约定,并且不包含常见的错误。
我们使用 EasyCodingStandard 来定义和执行为 PHP-CS-Fixer 和 PHP_CodeSniffer 创建的检查。
安装
composer require --dev lmc/coding-standard
使用
- 在项目的根目录中创建
ecs.php
文件并导入代码风格规则
<?php declare(strict_types=1); use Symplify\EasyCodingStandard\Config\ECSConfig; return ECSConfig::configure() ->withPaths([__DIR__ . '/src', __DIR__ . '/tests']) // optionally add 'config' or other directories with PHP files ->withRootFiles() // to also check ecs.php and all other php files in the root directory ->withSets( [ __DIR__ . '/vendor/lmc/coding-standard/ecs.php', ] );
- 运行检查命令
vendor/bin/ecs check
- 可选地,我们建议将此添加到
composer.json
的scripts
部分
"scripts": { "analyze": [ "vendor/bin/ecs check --ansi", "[... other scripts, like PHPStan etc.]" ], "fix": [ "...", "vendor/bin/ecs check --ansi --fix" ], }
现在您可以使用 composer analyze
运行检查,并使用 composer fix
执行自动修复。
添加自定义检查或覆盖默认设置
除了默认的代码风格规则外,您可以自由添加来自 PHP-CS-Fixer 或 PHP_CodeSniffer 的任何规则。如果需要,您还可以覆盖任何默认设置。
下面是一些根据您的需求可能想要添加的更具观点的检查示例
<?php declare(strict_types=1); use PHP_CodeSniffer\Standards\Generic\Sniffs\Files\LineLengthSniff; use PhpCsFixer\Fixer\PhpUnit\PhpUnitTestAnnotationFixer; use Symplify\EasyCodingStandard\Config\ECSConfig; return ECSConfig::configure() /* (...) */ ->withSets( [ __DIR__ . '/vendor/lmc/coding-standard/ecs.php', ] ) ->withRules( [ // PHPUnit attributes must be used over their respective PHPDoc-based annotations. (Use with PHPUnit 10+.) PhpUnitAttributesFixer::class, // Single-line comments must have proper spacing (one space after `//`). SingleLineCommentSpacingFixer::class, // Convert multiline string to heredoc or nowdoc. MultilineStringToHeredocFixer::class, ] ) // Enforce line-length to 120 characters. ->withConfiguredRule(LineLengthSniff::class, ['absoluteLineLimit' => 120]) // Tests must have @test annotation. ->withConfiguredRule(PhpUnitTestAnnotationFixer::class, ['style' => 'annotation']) // Specify elements separation. ->withConfiguredRule(ClassAttributesSeparationFixer::class, ['elements' => ['const' => 'none', 'method' => 'one', 'property' => 'none']]) /* (...) */
有关更多配置选项,请参阅 EasyCodingStandard 文档。
排除(跳过)检查或文件
您可以配置 ecs.php
文件以完全跳过某些文件、禁用特定检查或抑制特定错误。
<?php declare(strict_types=1); use PHP_CodeSniffer\Standards\Generic\Sniffs\PHP\ForbiddenFunctionsSniff; use PHP_CodeSniffer\Standards\Squiz\Sniffs\Arrays\ArrayDeclarationSniff; use Symplify\EasyCodingStandard\Config\ECSConfig; return ECSConfig::configure() /* (...) */ ->withSkip( [ // Ignore specific check only in specific files ForbiddenFunctionsSniff::class => [__DIR__ . '/src-tests/bootstrap.php'], // Disable check entirely ArrayDeclarationSniff::class, // Skip one file __DIR__ . '/file/to/be/skipped.php', // Skip entire directory __DIR__ . '/ignored/directory/*', ] ) /* (...) */
有关更多配置选项,请参阅 EasyCodingStandard 文档。
IDE 集成
有关与 PHPStorm 和其他 IDE 集成的说明,请参阅 EasyCodingStandard README。
更新日志
有关最新更改,请参阅 CHANGELOG.md 文件。此库遵循 语义版本控制。
许可证
此库是开源软件,采用 MIT 许可证。