shopsys / coding-standards
兼容PSR-2的编码规范定义
Requires
- php: ^8.3
- ext-tokenizer: *
- friendsofphp/php-cs-fixer: ^3.3.1
- nette/utils: ^3.1.3
- php-parallel-lint/php-parallel-lint: ^1.3.1
- phpstan/phpstan: ^1.6.8
- slevomat/coding-standard: ^8.13.1
- squizlabs/php_codesniffer: ^3.6.2
- symfony/finder: ^5.4
- symplify/easy-coding-standard: ^10.3.3
Requires (Dev)
- nikic/php-parser: ^4.0
- phpunit/phpunit: ^9.5.20
Suggests
- zalas/phpunit-injector: Needed if you want to use PhpStan extension to understand injected dependencies in tests
Conflicts
- friendsofphp/php-cs-fixer: >=3.50.0
- 16.0.x-dev
- 15.0.x-dev
- 14.0.x-dev
- v14.0.1
- v14.0.0
- 13.0.x-dev
- v13.0.0
- 12.1.x-dev
- 12.0.x-dev
- v12.0.0
- v11.1.0
- dev-master / 11.0.x-dev
- v11.0.0
- 10.0.x-dev
- v10.0.5
- v10.0.4
- v10.0.3
- v10.0.2
- v10.0.1
- v10.0.0
- 9.1.x-dev
- v9.1.3
- v9.1.2
- v9.1.1
- v9.1.0
- 9.0.x-dev
- v9.0.4
- v9.0.3
- v9.0.2
- v9.0.1
- v9.0.0
- 8.1.x-dev
- v8.1.2
- v8.1.1
- v8.1.0
- 8.0.x-dev
- v8.0.0
- 7.3.x-dev
- v7.3.7
- v7.3.6
- v7.3.5
- v7.3.4
- v7.3.3
- v7.3.2
- v7.3.1
- v7.3.0
- 7.2.x-dev
- v7.2.2
- v7.2.1
- v7.2.0
- 7.1.x-dev
- v7.1.1
- v7.1.0
- 7.0.x-dev
- v7.0.1
- v7.0.0
- v7.0.0-beta6
- v7.0.0-beta5
- v7.0.0-beta4
- v7.0.0-beta3
- v7.0.0-beta2
- v7.0.0-beta1
- v7.0.0-alpha6
- v7.0.0-alpha5
- v7.0.0-alpha4
- v7.0.0-alpha3
- v7.0.0-alpha2
- v7.0.0-alpha1
- v4.0
- v3.x-dev
- v3.1.1
- v3.1.0
- v3.0.2
- v3.0.1
- v3.0.0
- v2.0.1
- v2.0.0
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.0
- dev-alpha
- dev-rc-15-0-0
- dev-pt-yaml-standards-vol-2
- dev-rc-12-0-0
- dev-tl-fix-failing-12-0-builds
- dev-mg-js-translations-fix
- dev-mg-split-repo
- dev-rc-11-1-0
- dev-mg-deployment
- dev-mg-remove-manifests
- dev-mg-project-cold-fusion
- dev-rc-11-0-0
- dev-tl-fix-project-base
- dev-rk-fw-uprage-from-10-to-11-part-3
- dev-rc-v9-1-3
- dev-test-composer-from-91
- dev-rk-fw-1019-api-query-name-in-symfony-profiler
- dev-rk-fw-uprage-from-10-to-11-part-2
- dev-rc-10-0-3
- dev-rc-10-0-4
- dev-rc-10-0-5
- dev-mg-release-lock
- dev-rk-fw-uprage-from-10-to-11-part-1
- dev-rc-10-0-1
- dev-rc-10-0-2
- dev-mg-fw-933-remove-rootdir
- dev-mg-remove-twig-extension
- dev-rc-10-0-0
- dev-mg-upgrade-php8
- dev-mg-remove-be-api-integration
- dev-rv-fw-837-doctrine-upgrade
- dev-rv-fw-847-migrations-tests
- dev-mg-drop-72-packages
- dev-mg-improve-entity-extension
- dev-rv-fw-810-fix-actions
- dev-rv-test-conflict
- dev-mg-fix-phpstan-packages
- dev-mg-force-proxy-manager-version
- dev-mg-update-node
- dev-origin/tl-phpstan-all-packages
- dev-rc-v9-1-2
- dev-mg-allow-dependency
- dev-rc-v7-3-7
- dev-tl-release-9-1-1
- dev-tl-remove-package-builder
- dev-ds-coding-standards-allow-symfony-5-higher
- dev-tl-github-actions-for-packages
- dev-mg-update-helios-elfinder
- dev-tl-github-actions
- dev-ds-fix-ecs
- dev-tp-allow-coding-standards-for-symfony5
- dev-mg-php74-only
- dev-rc-v9-1-0
- dev-tl-fix-docker-limits
- dev-ds-more-coding-standards
- dev-rc-v9-0-3
- dev-rc-v9-0-4
- dev-ds-ecs-path-fix
- dev-ds-eof-new-line
- dev-tl-fix-phpstan
- dev-ds-phpstan-lvl-5
- dev-ds-fixed-framework-standaards
- dev-rc-v9-0-1
- dev-rc-v9-0-2
- dev-tl-add-psr-14
- dev-rc-v8-1-2
- dev-rc-v9-0-0
- dev-tl-fix-current-customer-user
- dev-rc-v7-3-4
- dev-rc-v7-3-5
- dev-rc-v7-3-6
- dev-tp-js-fixes
- dev-vitek-rostislav-patch-3
- dev-tg-grunt-webpack
- dev-tp-symfony4
- dev-rv-eur-on-first-domain
- dev-tp-update-composer
- dev-rc-v7-3-3
- dev-ds-easier-elastic-extensebility
- dev-rc-v8-1-1
- dev-tp-npm-link
- dev-rc-v8-1-0
- dev-mg-weird-flex-but-ok
- dev-ds-fix-project-base-dependency
- dev-ds-fix-sed-macos
- dev-mg-graphql-categories
- dev-ds-kubernetes-simplify
- dev-tl-rv-datafixtures-refactoring
- dev-ds-kubernetes-simplify-test
- dev-rv-extended-classes-fixer
- dev-rv-phpstan-lvl4
- dev-ds-test-install-script-automatically
- dev-rc-8-0-0
- dev-ss-api-import-products
- dev-ss-api-separated-from-default-project-base
- dev-do-elastic-structure-deploy
- dev-do-version-lock
- dev-mg-fix-k8s-https
- dev-ph-price-calculation
- dev-ph-redis-clients
- dev-rc-v7-3-0
- dev-tl-fix-tests-bc-break
- dev-tl-removed-tests-bc-break
- dev-tl-united-non-bc-break-service-injections
- dev-ss-tl-api-products
- dev-bb-multidomain-sitemap
- dev-ph-phing-test
- dev-tl-end-support-php-71
- dev-bb-flysystem-volume-driver
- dev-bb-initcontainer-owner-fix
- dev-do-mg-mail-attachments
- dev-do-phpstan-upgrade
- dev-rv-read-model-bck
- dev-bb-ecs-hotfix
- dev-jg-redis-cache
- dev-mg-elastic-filtering
- dev-rv-upgrade-ecs
- dev-rv-better-php-doc-parser-config
- dev-jg-form-ordering
- dev-do-fixtures-project-base
- dev-mg-multiple-cron
- dev-mc-cdn-bucket
- dev-sspooky13-pt-yaml-standards
- dev-do-product-export-fix
- dev-mc-ph-google-cloud-bundle
This package is auto-updated.
Last update: 2024-09-25 11:41:45 UTC
README
Shopsys编码规范基于PSR-2。
该项目包含工具和预定义规则集,用于自动检查我们在许多Shopsys项目中使用的Shopsys编码规范。存储库还包含一些自定义规则。
此存储库由shopsys/shopsys monorepo维护,变更信息在monorepo CHANGELOG.md中。
提供的工具
有关这些工具的更多信息,请参阅官方文档。
安装
php composer require shopsys/coding-standards
使用
在您的项目中创建包含预定义规则集的easy-coding-standard.yml
配置文件。您还可以自定义规则,甚至可以在配置中添加您自己的sniffs和fixers。
#easy-coding-standard.yml imports: - { resource: '%vendor_dir%/shopsys/coding-standards/easy-coding-standard.yml' }
在终端中,运行以下命令
php vendor/bin/parallel-lint /path/to/project php vendor/bin/ecs check /path/to/project --config=/path/to/project/custom-coding-standard.yml
自定义规则
PHP-CS-Fixer的规则
Shopsys/missing_button_type
所有<button>
HTML标签在.html
和.html.twig
文件中必须有显式的type
属性。
如果没有指定type
,则将其修复为type="button""
,因为隐含值是submit
,这会根据上下文(在<form>
元素内部的<button>
会提交表单)表现出不同的行为。
Shopsys/orm_join_column_require_nullable
Doctrine注解@ORM\ManyToOne
和@ORM\OneToOne
必须在@ORM\JoinColumn
中显式定义nullable
选项。
如果没有指定nullable
选项,则将其修复为nullable=false
,因为隐含值是true
,但这与@Column
注解的nullable
隐含值相反。这使得它保持一致。
PHP_CodeSniffer的规则
ForbiddenExitSniff
不允许使用函数exit()
。
ForbiddenSuperGlobalSniff
不允许使用超全局变量($_COOKIE
、$_GET
、$_FILES
、$_POST
、$_REQUEST
、$_SERVER
)。
ObjectIsCreatedByFactorySniff
不允许在工厂之外实例化可以由其工厂创建的对象。
ValidVariableNameSniff
默认的\PHP_CodeSniffer\Standards\Squiz\Sniffs\NamingConventions\ValidVariableNameSniff
不报告以$_var
格式出现的方法参数为违规,而它应该报告。当禁用PrivateNoUnderscore
属性时,它还会跳过对私有成员的检查。
此sniff提供了缺失的功能,旨在作为默认的ValidVariableNameSniff
的补充使用。
贡献
感谢您为Shopsys编码规范包做出的贡献。我们一起使Shopsys平台变得更好。
此存储库为只读。如果您想报告问题和/或发送拉取请求,请使用主要的Shopsys 存储库。
请在贡献之前检查我们的贡献指南。
支持
当您遇到麻烦或需要帮助时,该怎么办?最好的办法是加入我们的Slack。
如果您想报告问题,请使用主要的Shopsys 存储库。