worksome / coding-style
Worksomes编码风格
Requires
- php: ^8.2
- composer-plugin-api: ^2.0
- canvural/larastan-strict-rules: ^2.1.10
- jetbrains/phpstorm-attributes: ^1.0
- larastan/larastan: ^2.9.7
- phpstan/phpstan: ^1.11
- phpstan/phpstan-mockery: ^1.1.2
- rector/rector: ^1.0
- slevomat/coding-standard: ^8.14.1
- spaze/phpstan-disallowed-calls: ^2.16
- symplify/easy-coding-standard: ^12.1.10
- thecodingmachine/safe: ^2.5
Requires (Dev)
- composer/composer: ^2.7
- friendsofphp/php-cs-fixer: ^3.53
- pestphp/pest: ^2.34
- spatie/invade: ^1.1.1
- squizlabs/php_codesniffer: ^3.8
- dev-main
- v2.11.0
- v2.10.2
- v2.10.1
- v2.10.0
- v2.9.0
- v2.8.0
- v2.7.0
- v2.6.2
- v2.6.1
- v2.6.0
- v2.5.1
- v2.5.0
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.0
- v2.1.0
- v2.0.0
- v1.1.0
- v1.0.0
- v0.29.0
- v0.28.0
- v0.27.0
- v0.26.0
- v0.25.0
- v0.24.1
- v0.24.0
- v0.23.0
- v0.22.0
- v0.21.2
- v0.21.1
- v0.21.0
- v0.20.0
- v0.19.0
- v0.18.0
- v0.17.0
- v0.16.0
- v0.15.0
- v0.14.0
- v0.13.0
- v0.12.1
- v0.12.0
- v0.11.0
- v0.10.0
- v0.9.0
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.0
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.0
- v0.4.0
- v0.3.13
- v0.3.12
- v0.3.11
- v0.3.10
- v0.3.9
- v0.3.8
- v0.3.7
- v0.3.6
- v0.3.5
- v0.3.4
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.0
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-sniff_out_contracts_with_interface_suffix
- dev-feature/todo-comments-phpstan
- dev-sets
- dev-prevent_global_rules
- dev-JIRA-6316_add-rule-to-disallow-todos
- dev-update_code_sniffer_version
This package is auto-updated.
Last update: 2024-08-25 09:48:54 UTC
README
此存储库包含Worksomes遵循的编码风格。
设置
安装此Composer包
composer require --dev worksome/coding-style
运行生成命令以生成配置文件
composer generate-coding-style-stubs
将以下部分添加到您的composer.json
文件中
"scripts": { "ecs": "vendor/bin/ecs", "ecs:fix": "vendor/bin/ecs --fix", "phpstan": "vendor/bin/phpstan analyse", "rector": "vendor/bin/rector process --dry-run --ansi", "rector:fix": "vendor/bin/rector process --ansi" },
使用方法
要使用它,只需运行添加到composer中的脚本之一。
$ composer ecs
$ composer ecs:fix
$ composer phpstan
$ composer rector
$ composer rector:fix
ECS规则
Worksomes编码风格扩展了PSR-12基本规则集。
排除/跳过的规则
附加/自定义规则
注意:自定义规则有一个⚙️图标。
PhpCsFixer
ArraySyntaxFixer
BinaryOperatorSpacesFixer
⚙️ClassDefinitionFixer
LineEndingFixer
ListSyntaxFixer
NoEmptyCommentFixer
NoEmptyPhpdocFixer
OperatorLinebreakFixer
⚙️OrderedImportsFixer
⚙️PhpdocAlignFixer
⚙️PhpdocSeparationFixer
SingleTraitInsertPerStatementFixer
ShortScalarCastFixer
NoEmptyStatementFixer
NoUnneededImportAliasFixer
NoUnusedImportsFixer
TypesSpacesFixer
PHP CodeSniffer
CommentedOutCodeSniff
⚙️ForbiddenFunctionsSniff
⚙️SpaceAfterNotSniff
EndFileNewlineSniff
MethodDeclarationSniff
SpaceAfterCastSniff
LowercaseDeclarationSniff
InlineControlStructureSniff
LowerCaseKeywordSniff
LanguageConstructSpacingSniff
Slevomat Coding Standard
ClassConstantVisibilitySniff
ClassMemberSpacingSniff
DisallowGroupUseSniff
EmptyLinesAroundClassBracesSniff
⚙️ForbiddenAnnotationsSniff
⚙️MethodSpacingSniff
ModernClassNameReferenceSniff
NamespaceDeclarationSniff
ParameterTypeHintSpacingSniff
PropertyDeclarationSniff
PropertySpacingSniff
RequireMultiLineCallSniff
RequireMultiLineConditionSniff
RequireMultiLineMethodSignatureSniff
RequireMultiLineTernaryOperatorSniff
⚙️RequireOneNamespaceInFileSniff
RequireShortTernaryOperatorSniff
RequireTrailingCommaInDeclarationSniff
ReturnTypeHintSpacingSniff
UselessConstantTypeHintSniff
UselessInheritDocCommentSniff
Symplify Coding Standard
Worksome
ConfigFilenameKebabCaseSniff
DisallowBladeOutsideOfResourcesDirectorySniff
DisallowCompactUsageSniff
DisallowEnvUsageSniff
DisallowHasFactorySniff
DisallowParamNoTypeOrCommentSniff
DisallowTodoCommentsSniff
EventListenerSuffixSniff
ExceptionSuffixSniff
PropertyDollarSignSniff
PascalCasingEnumCasesSniff
SpaceInGenericsFixer
自定义PHPStan规则
Worksomes编码风格包括以下自定义PHPStan规则。
泛型
适用于所有项目的规则。
DeclareStrictTypes
标识符: worksome.declareStrictTypes
此规则用于确保所有PHP文件包含declare(strict_types=1)
语句。
DisallowPHPUnit
标识符: worksome.disallowPhpunit
此规则防止使用PHPUnit测试,而改为使用Pest PHP。它将允许抽象TestCase
类。
基于命名空间的后缀
标识符: worksome.namespaceBasedSuffix
为以下命名空间设置后缀配置
App\Events
:Event
App\Listener
:Listener
App\Policies
:Policy
App\Jobs
:Job
这确保了事件、监听器、策略和作业具有相同的后缀。
Laravel
仅在Laravel环境中应用的规则。
DisallowEnvironmentCheckRule
标识符: worksome.laravel.disallowEnvironmentCheck
此规则将阻止检查应用程序环境,而更倾向于使用基于驱动的方法。
DisallowPartialRouteFacadeResource
标识符: worksome.laravel.disallowPartialRouteResource
此规则禁止在组合使用only
或except
时使用Route::resource
方法。相反,应将部分路由资源拆分为多个路由。
DisallowPartialRouteVariableResourceRule
标识符: worksome.laravel.disallowPartialRouteResource
类似于DisallowPartialRouteVariableResourceRule
,但在路由组中使用时,会阻止部分资源的使用。
EnforceKebabCaseArtisanCommandsRule
标识符: worksome.laravel.kebabCaseArtisanCommands
此规则将强制执行使用短横线命名法(kebab-case)的Artisan命令。
自定义PHP_CodeSniffer嗅探器
Worksome代码风格包含各种自定义PHP_CodeSniffer嗅探器,其中PHP CS Fixer的自动修复器不可用。
泛型
Pascal-casing枚举情况
这确保所有枚举情况都使用Pascal-casing(例如Case::PascalCase
)。
Laravel
所有特定于Laravel的自定义嗅探器。
配置文件名短横线命名法
检查所有配置文件是否都使用短横线命名法。
禁止使用compact
确保在代码中不使用compact()
。
禁止使用env
确保除了配置文件外,不要在您的代码中使用env
辅助函数。
禁止使用HasFactory
确保在模型上不使用HasFactory
特质,这确保直接调用工厂类。
事件监听器后缀
强制事件监听器以特定后缀结束,默认后缀为Listener
。
禁止在resources
目录外使用blade
确保在Laravel的resources
目录外不存在任何.blade.php
文件。
异常后缀
这确保所有Exception
类都应该有Exception
后缀。
PhpDoc
所有非特定于Laravel的自定义嗅探器。
属性美元符号
确保在phpdoc中定义的属性始终有一个美元符号。
/** * @property string $name */ class User {}
无类型或注释的参数标签
删除所有未指定类型或注释的@param
标签。
/** * @param string $name * @param $type some random type * @param $other // <-- will be removed */ public function someMethod($name, $type, $other): void {}
这主要是因为PHPStan在将其视为有效属性之前需要此操作。
禁止使用TODO
注释
这确保所有待办注释都已被阻止使用。应使用Jira代替。
泛型中的空格
这确保在PHPDoc注释中的泛型类型中逗号后面只有一个空格。
自定义Rector规则
Worksome代码风格包括用于自动重构代码的自定义Rector规则。
泛型
禁止的属性
这确保在禁止时自动删除指定的PHP属性。