extdn/phpcs

一套PHP_CodeSniffer规则和嗅探器。

安装量: 39 047

依赖者: 0

建议者: 0

安全: 0

星标: 81

关注者: 19

分支: 10

开放问题: 37

类型:phpcodesniffer-standard

dev-master 2019-03-04 13:09 UTC

README

Build Status

简介

已经有很多PHP CodeSniffer规则可以帮助进行Magento 2开发

然而,一些最佳实践仍需要整合,或者一些规则需要改进。这个仓库旨在提出比现有规则集更高级的规则集。此外,一个基本目标是为符合Magento核心、第三方扩展和实现而创建规则,尽管它们都有不同的需求。

使用方法

要安装此包,请转到您的Magento 2根目录,并使用以下命令

composer require extdn/phpcs:dev-master

如果因为与magento/marketplace-eqp的依赖关系失败而失败,请首先将EQP仓库添加到您的配置中,然后重复操作

composer config repositories.magento-marketplace-eqp vcs https://github.com/magento/marketplace-eqp
composer require magento/marketplace-eqp:dev-master
composer require extdn/phpcs:dev-master

安装完成后,您可以从命令行运行PHPCS来分析您的代码XYZ

vendor/bin/phpcs --standard=./vendor/extdn/phpcs/Extdn app/code/XYZ
vendor/bin/phpcs --standard=./vendor/extdn/phpcs/Extdn vendor/XYZ

如果您已配置了项目中的PHPCS编码标准Composer安装器插件(如https://github.com/Dealerdirect/phpcodesniffer-composer-installer),您可以通过其名称简单地引用此标准

vendor/bin/phpcs --standard=Extdn app/code/XYZ
vendor/bin/phpcs --standard=Extdn vendor/XYZ

如何贡献

我们需要以下方面的帮助

  • 现有EQP规则的文档(其中每个EQP规则都可以包含在这个仓库的ruleset.xml中)
  • 创建新的PHPCS规则(见下文如何贡献
  • 关于PHPCS缺乏之处以及其他工具可能更有用的讨论(PhpStan,Phan)
  • 关于新规则的讨论(通过定期的闲聊或GitHub Issue的讨论)

请注意,您也可以直接向Magento规则集(核心、MEQP、ECG - 参见上面的链接)贡献。同样,我们将努力将ExtDN规则集成到Magento规则集中,这也是ExtDN项目的一部分。

如何贡献

任何贡献都受欢迎。然而,请不要立即开始编码。确保首先这项工作值得付出努力。

  1. 问题下添加一个新的问题,以解决需要的新规则集或报告其他问题。

  2. 一旦新规则被接受,在问题下添加标签Accepted,我们就可以开始了。

  3. 如果核心、MEQP或ECG中已经存在类似的规则,只需将其包含在ExtDN规则集中。

  4. 如果还没有规则,让我们创建它。例如,您可以使用文件夹Extdn/Sniffs/Blocks中的SetTemplateInBlockSniff。它可以在Extdn/Samples/Blocks下的示例文件中进行测试

vendor/bin/phpcs --standard=./vendor/extdn/phpcs/Extdn vendor/extdn/phpcs/Extdn/Samples
  1. 一旦这一切都正常工作,您就可以自由地创建一个包含将此规则添加到ruleset.xml文件的拉取请求(PR)。

使用GitHub问题标签

一些用于GitHub问题的标签

  • accepted:该规则已被extdn接受。如果还没有人声称它,您可以开始工作
  • experimental:该规则也可以实现,但在将其集成到官方规则集之前,我们将尝试以低严重性首先尝试它
  • non-PHPCS:该规则无法用PHPCS实现,需要额外的工具。我们将其保留以供以后使用。
  • 组织: 非代码相关的问题
  • 挂出会议议程: 规则/问题将在下次社区挂出会议中讨论

如何创建嗅探规则

我们建议先为自身创建几个嗅探。官方的 PHPCS 维基 已经提供了很好的信息。同样,我们仓库(以及 Magento 仓库)中的其他嗅探也将提供大量的示例。

测试

所有规则都应附带测试。

在 Magento 安装中

要从主仓库运行嗅探单元测试,其中规则是通过 composer 安装的,首先配置 phpcs 以找到规则

vendor/bin/phpcs --config-set installed_paths vendor/extdn/phpcs/Extdn,vendor/magento/marketplace-eqp/MEQP2

然后可以像这样运行测试

phpunit -c vendor/extdn/phpcs/phpunit-vendor.xml vendor/extdn/phpcs/Extdn/Tests

在独立安装中

如果您已经单独克隆了这个 GitHub 仓库进行开发,使用 composer 安装相关内容和运行测试

composer install
composer test

每个 Test.php 类都应附带一个 Test.inc 文件,以便根据 PHPCS 的父类 AbstractSniffUnitTest 进行单元测试。确保包含一个 Test.md Markdown 描述,该描述针对手头的问题,解释规则检查的内容,然后还建议要进行的改进。