【问题标题】:Can I specify a CodeSniffer standard as a dev composer dependency?我可以将 CodeSniffer 标准指定为开发作曲家依赖项吗?
【发布时间】:2016-04-21 06:37:59
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php composer-php codesniffer


    【解决方案1】:

    您可以为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
      - 嗅探
        - 课程
          - MyClassSniff.php
      - 规则集.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 配置设置将您的作曲家的供应商路径(直到以您的标准命名的文件夹)指定为标准路径
    • 在标准的存储库中,以标准命名作曲家包(区分大小写)。它必须与您在ruleset.xml 中使用的名称相同,以便phpcs 可以找到它,否则您会收到错误提示找不到它。
    • 将您的自定义标准作为a VCS repo 包含在项目的作曲家配置中(或者更好的方式...!)

    【讨论】:

      猜你喜欢
      • 2014-03-10
      • 2017-07-31
      • 2012-11-24
      • 2013-04-20
      • 1970-01-01
      • 2021-10-22
      • 2015-08-27
      • 2017-08-04
      • 2013-10-09
      相关资源
      最近更新 更多