sllh / php-cs-fixer-styleci-bridge

此软件包已被 弃用 且不再维护。未建议替代软件包。

从 StyleCI 配置文件自动配置 PHP-CS-Fixer

v2.1.1 2016-06-22 13:26 UTC

README

⚠️ 此软件包不再维护。 ⚠️

PHP-CS-Fixer v2 包含全新的配置结构,但 StyleCI 决定保留旧的方式。

因此,维护此桥接变得非常困难,并且它仍然不兼容 PHP-CS-Fixer v2。

这就是我决定放弃此软件包并编写 FlintCI 的原因,这是我的用于多个修复器和检查器的自定义代码审查服务,无需任何配置桥接。

您可以在 这里(flintci.io)尝试它,或者继续使用 StyleCI 而不使用此桥接。

从 StyleCI 配置文件自动配置 PHP-CS-Fixer

此库允许您直接从您的 .styleci.yml 配置文件生成 php-cs-fixer 配置。

这样,您将避免维护两个配置文件的痛苦。

Latest Stable Version Latest Unstable Version License Dependency Status Reference Status

Total Downloads Monthly Downloads Daily Downloads

Build Status Scrutinizer Code Quality Code Climate Coverage Status SensioLabsInsight

谁在使用此软件包?

您可以在专门的 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';