sllh / php-cs-fixer-styleci-bridge
从 StyleCI 配置文件自动配置 PHP-CS-Fixer
Requires
- php: ^5.3 || ^7.0
- composer/semver: ^1.0
- doctrine/inflector: ^1.0
- sllh/styleci-fixers: ^3.0 || ^4.0
- symfony/config: ^2.3 || ^3.0
- symfony/console: ^2.3 || ^3.0
- symfony/yaml: ^2.3 || ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^1.6.1
- matthiasnoback/symfony-config-test: ^1.2
- symfony/phpunit-bridge: ^2.7.4 || ^3.0
- twig/twig: ^1.22
This package is auto-updated.
Last update: 2022-02-01 12:51:30 UTC
README
⚠️ 此软件包不再维护。 ⚠️
PHP-CS-Fixer v2 包含全新的配置结构,但 StyleCI 决定保留旧的方式。
因此,维护此桥接变得非常困难,并且它仍然不兼容 PHP-CS-Fixer v2。
这就是我决定放弃此软件包并编写 FlintCI 的原因,这是我的用于多个修复器和检查器的自定义代码审查服务,无需任何配置桥接。
您可以在 这里(flintci.io)尝试它,或者继续使用 StyleCI 而不使用此桥接。
从 StyleCI 配置文件自动配置 PHP-CS-Fixer。
此库允许您直接从您的 .styleci.yml
配置文件生成 php-cs-fixer 配置。
这样,您将避免维护两个配置文件的痛苦。
谁在使用此软件包?
您可以在专门的 Packagist 页面 上看到哪些项目正在使用此软件包。
安装
将此库包含在您的开发依赖项中
composer require --dev sllh/php-cs-fixer-styleci-bridge
使用方法
您可以使用此桥接以几种方式。
基本使用方法
在您的 .php_cs
文件中放置以下配置
<?php // Needed to get styleci-bridge loaded require_once __DIR__.'/vendor/sllh/php-cs-fixer-styleci-bridge/autoload.php'; use SLLH\StyleCIBridge\ConfigBridge; return ConfigBridge::create();
使用此配置,配置桥接将仅解析您的 .styleci.yml
文件。
示例工作文件
preset: symfony enabled: - align_double_arrow - newline_after_open_tag - ordered_use - long_array_syntax disabled: - unalign_double_arrow - unalign_equals
目录选项
您可以直接在 ConfigBridge::create
方法或构造函数中更改 .styleci.yml
文件的默认存储库和 CS Finder 目录。
<?php require_once __DIR__.'/vendor/sllh/php-cs-fixer-styleci-bridge/autoload.php'; use SLLH\StyleCIBridge\ConfigBridge; return ConfigBridge::create(__DIR__.'/config', [__DIR__, __DIR__.'../lib']);
自定义配置类
ConfigBridge::create
返回一个 Symfony\CS\Config\Config
,您可以根据需要对其进行自定义。
<?php require_once __DIR__.'/vendor/sllh/php-cs-fixer-styleci-bridge/autoload.php'; use SLLH\StyleCIBridge\ConfigBridge; return ConfigBridge::create() ->setUsingCache(true) // Enable the cache ;
使用桥接
您也可以部分使用桥接方法。
<?php require_once __DIR__.'/vendor/sllh/php-cs-fixer-styleci-bridge/autoload.php'; use SLLH\StyleCIBridge\ConfigBridge; use Symfony\CS\Config\Config; $bridge = new ConfigBridge(); return Config::create() ->finder($bridge->getFinder()) ->fixers(['dummy', 'foo', '-bar']) ->setUsingCache(true) ;
手动启用或禁用修复器
要在 .php_cs
文件上手动启用或禁用某些修复器,您将必须使用合并系统以保留桥接定义的修复器。
require_once __DIR__.'/vendor/sllh/php-cs-fixer-styleci-bridge/autoload.php'; use SLLH\StyleCIBridge\ConfigBridge; $config = ConfigBridge::create(); return $config ->setUsingCache(true) ->fixers(array_merge($config->getFixers(), ['-psr0', 'custom', 'foo', '-bar'])) ;
头部注释
不幸的是,在 StyleCI 配置文件中 头部注释选项不可用。
您将必须从 StyleCI 网络界面复制它并手动设置。
配置桥接器将自动检测修复器并将其添加到CS配置中。
PHP-CS-Fixer 1.x
<?php require_once __DIR__.'/vendor/sllh/php-cs-fixer-styleci-bridge/autoload.php'; use SLLH\StyleCIBridge\ConfigBridge; use Symfony\CS\Fixer\Contrib\HeaderCommentFixer; $header = <<<EOF This file is part of the dummy package. (c) John Doe <[email protected]> This source file is subject to the MIT license that is bundled with this source code in the file LICENSE. EOF; HeaderCommentFixer::setHeader($header); return ConfigBridge::create();
PHP-CS-Fixer 2.x
<?php require_once __DIR__.'/vendor/sllh/php-cs-fixer-styleci-bridge/autoload.php'; use SLLH\StyleCIBridge\ConfigBridge; $header = <<<EOF This file is part of the dummy package. (c) John Doe <[email protected]> This source file is subject to the MIT license that is bundled with this source code in the file LICENSE. EOF; $config = ConfigBridge::create(); return $config ->setRules(array_merge($config->getRules(), array( 'header_comment' => array('header' => $header) ))) ;
两个版本
您可以通过一些神奇的method_exists
技巧轻松处理这两个版本。
<?php require __DIR__.'/vendor/sllh/php-cs-fixer-styleci-bridge/autoload.php'; use SLLH\StyleCIBridge\ConfigBridge; use Symfony\CS\Fixer\Contrib\HeaderCommentFixer; $header = <<<EOF This file is part of the dummy package. (c) John Doe <[email protected]> This source file is subject to the MIT license that is bundled with this source code in the file LICENSE. EOF; // PHP-CS-Fixer 1.x if (method_exists('Symfony\CS\Fixer\Contrib\HeaderCommentFixer', 'getHeader')) { HeaderCommentFixer::setHeader($header); } $config = ConfigBridge::create(); // PHP-CS-Fixer 2.x if (method_exists($config, 'setRules')) { $config->setRules(array_merge($config->getRules(), array( 'header_comment' => array('header' => $header) ))); } return $config;
故障排除
与代码或供应商库冲突
在某些边缘情况下,桥接代码可能与您的代码或包含的供应商冲突。
这种问题在puli/cli#21 (comment)中被发现,并在v1.3.3
中修复,具体在#47。
在此之前,您必须像这样要求供应商自动加载:
require __DIR__.'/vendor/autoload.php';
这不是一种安全的方式。请确保使用我们的自定义加载器。
require __DIR__.'/vendor/sllh/php-cs-fixer-styleci-bridge/autoload.php';