dealerdirect/phpcodesniffer-composer-installer

PHP_CodeSniffer 标准Composer安装插件

安装次数: 99,323,442

依赖: 1,686

建议者: 39

安全: 0

星标: 552

关注者: 17

分支: 36

开放问题: 7

类型:composer-plugin


README

Last Commit Awesome License

Tests Latest Version on Packagist Packagist

Contributor Covenant

此Composer安装插件允许轻松安装PHP_CodeSniffer编码标准(规则集)。

不再需要目录的符号链接、在特定位置检出仓库或更改phpcs配置。

用法

可以通过将此包作为开发依赖项通过Composer进行安装

composer require --dev dealerdirect/phpcodesniffer-composer-installer:"^1.0"

当使用Composer 2.2或更高版本时,Composer会要求您的许可以允许此插件执行代码。为了使此插件功能正常,需要授予许可。

一旦授予许可,以下片段将由Composer自动添加到您的composer.json文件中

{
    "config": {
        "allow-plugins": {
            "dealerdirect/phpcodesniffer-composer-installer": true
        }
    }
}

当使用Composer < 2.2时,您可以通过运行以下命令在升级到Composer 2.2之前添加权限标志

composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true

这就完成了。

兼容性

此插件与以下版本兼容

工作原理

基本上,此插件执行以下步骤

  • 此插件将在所有当前安装的Composer包中搜索phpcodesniffer-standard
  • 将扫描匹配的包和项目本身以查找PHP_CodeSniffer规则集。
  • 该插件将调用PHP_CodeSniffer并配置installed_paths选项。

示例项目

以下是一个示例Composer项目和已包含多个phpcodesniffer-standard包。

{
    "name": "example/project",
    "description": "Just an example project",
    "type": "project",
    "require": {},
    "require-dev": {
        "dealerdirect/phpcodesniffer-composer-installer": "*",
        "object-calisthenics/phpcs-calisthenics-rules": "*",
        "phpcompatibility/php-compatibility": "*",
        "wp-coding-standards/wpcs": "*"
    },
    "config": {
        "allow-plugins": {
            "dealerdirect/phpcodesniffer-composer-installer": true
        }
    }
}

运行composer install后,PHP_CodeSniffer即可正常工作

$ ./vendor/bin/phpcs -i
The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend, ObjectCalisthenics,
PHPCompatibility, WordPress, WordPress-Core, WordPress-Docs and WordPress-Extra

直接调用插件

在某些情况下,可能需要直接调用此插件的功能。例如,在开发过程中或在CI环境中。

由于插件需要Composer才能工作,因此直接调用需要通过项目的composer.json进行连接。

这是通过在composer.jsonscript部分添加对Plugin::run函数的调用来完成的

{
    "scripts": {
        "install-codestandards": [
            "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run"
        ]
    }
}

可以使用 composer run-script install-codestandards 命令来调用该命令,或者在其他脚本配置中引用,具体如下

{
    "scripts": {
        "install-codestandards": [
            "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run"
        ],
        "post-install-cmd": [
            "@install-codestandards"
        ]
    }
}

有关 Composer 脚本的更多详细信息,请参阅 Composer 手册中的脚本部分

更改编码标准搜索深度

默认情况下,此插件最多搜索到编码标准的三级目录。在大多数情况下,这应该足够。但是,如果需要,此插件允许您自定义搜索深度设置。

{
    "extra": {
        "phpcodesniffer-search-depth": 5
    }
}

注意事项

当此插件全局安装时,Composer 会加载 global 插件而不是本地仓库中的插件。尽管 这种行为已在 composer 手册中记录,但它可能会造成混淆,因为可能运行的是另一个版本的插件,而不是项目指定的版本。

开发编码标准

编码标准可以像 PHP_CodeSniffer 中记录的那样正常开发,请参阅 编码标准教程

通过添加 composer.json 文件来创建您的编码标准的 composer 包。

{
  "name" : "acme/phpcodesniffer-our-standards",
  "description" : "Package contains all coding standards of the Acme company",
  "require" : {
    "php" : ">=5.4.0",
    "squizlabs/php_codesniffer" : "^3.6"
  },
  "type" : "phpcodesniffer-standard"
}

要求

  • 仓库可能包含一个或多个标准。
  • 每个标准可以有一个独立的目录,但深度不得超过仓库根目录的 3 级。
  • 包的 type 必须是 phpcodesniffer-standard。如果没有这个类型,插件将不会触发。

在编码标准内部要求插件

如果您的编码标准本身依赖于额外的外部 PHPCS 标准,此插件可以简化最终用户的操作,通过为他们安装所有标准(包括您的标准和依赖)。

这可以帮助减少有关设置 installed_paths 的支持问题,并简化您标准的安装说明。

为了使此功能正常工作,请确保外部标准通过 require,而不是 require-dev,将此插件添加到 composer.json 配置中。

⚠️ 最终用户可能已经 require-dev 了此插件,或者您的最终用户使用的其他外部标准可能也需要此插件。

为了避免最终用户遇到 "dependency hell",请确保对此插件的版本要求灵活。

请记住,Composer 将不稳定的小版本视为主要版本,因此无法解决一个配置要求此插件版本为 ^0.7,而另一个配置要求版本为 ^1.0 的情况。允许多个小版本或使用 * 作为版本要求。

以下是一些可以使用的灵活要求的示例

composer require dealerdirect/phpcodesniffer-composer-installer:"*"
composer require dealerdirect/phpcodesniffer-composer-installer:"^0.4.1 || ^0.5 || ^0.6 || ^0.7 || ^1.0"

变更日志

此仓库不包含 CHANGELOG.md 文件,但是,我们确实使用 GitHub 发布 功能发布每个版本的变更日志。

贡献

这是一个活跃的开源项目。我们始终欢迎想要使用代码或为其做出贡献的人。

我们已为我们的 贡献指南 设立了一个单独的文档。

感谢您的参与!😍

作者 & 贡献者

此仓库的原始想法和设置由 Franck Nijhof 提出,他是 @ Dealerdirect 的员工。

要查看所有作者和/或贡献者的完整列表,请查看 贡献者页面

资金

本项目包含在通过PHP_CodeSniffer Open Collective支持的项目中。

如果您使用此插件,鼓励并感谢您向Open Collective进行财务捐助。

许可证

MIT许可证(MIT)

版权所有(c)2016-2022 Dealerdirect B.V.及其贡献者 版权所有(c)2022- PHPCSStandards及其贡献者

以下条件,授予任何获得此软件及其相关文档副本(“软件”)的人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供软件的人进行此类操作:

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的还是法定的,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是因合同、侵权或其他方式引起的,无论该索赔、损害或其他责任是否与软件或其使用或其他方式有关。