我可以将CodeSniffer标准指定为开发作曲家依赖项吗?

时间:2016-04-20 21:24:45

标签: php composer-php codesniffer

假设我有两个或三个项目,他们都使用不同的PHP CodeSniffer标准(定制)。

我希望能够将它们作为require-dev依赖项包含在Composer中,这样在启动项目存储库时,它们将与PHPUnit和我的其他开发需求一起安装。

目前我在我的机器的全局phpcs标准文件夹中拥有所有标准,并且我告诉每个项目通过项目根目录中的phpcs.xml配置文件使用哪个标准。

我可以指定标准的路径,以便可以通过composer安装和使用吗?

1 个答案:

答案 0 :(得分:2)

您可以为phpcs指定其他路径,以便在使用installed_paths setting时查找标准。以下是phpcs.xml配置示例:

<?xml verison="1.0"?>
<ruleset name="MyProject">
  <description>My cool project, using a custom PHPCS standard</description>
  <rule ref="MyCoolStandard" />
  <config name="installed_paths" value="vendor/myvendorhere" />
</ruleset>

然后假设您的自定义PHPCS标准具有如下文件结构:

+ MyCoolStandard
  - Sniffs
    - Classes
      - MyClassSniff.php
  - ruleset.xml

您可以向其添加基本composer.json文件并为其命名。这里一个重要的部分是你需要告诉它安装到匹配标准名称的路径 - 或者更简单地只是将包命名为标准(注意:需要匹配标准(包括案例)中的ruleset.xml

{
    "name": "myvendorhere/MyCoolStandard",
    "description": "My cool PHPCS standard",
    "require": {}
}

现在,您可以将其作为VCS存储库包含在项目中:

# Project: composer.json
...
    "repositories": [
        {
            "type": "vcs",
            "url": "git@github.com:myvendorhere/myreponame.git"
        }
    ],
    "require-dev": {
        "myvendorhere/MyCoolStandard": "dev-master"
    }
...

TL; DR:

  • 使用installed_paths CodeSniffer配置设置指定作曲家的供应商路径(直到以标准命名的文件夹)作为标准路径
  • 在标准存储库中,将composer包命名为标准(区分大小写)。它必须与您在ruleset.xml中使用的名称相同,以便phpcs可以找到它,否则您将收到错误消息,说它无法发现。
  • 在项目的编辑器配置中包含您的自定义标准a VCS repo(或更好的方式......!)