在Symfony Finder / PHP-CS-Fixer中获取非PHP文件扩展名

时间:2018-06-17 23:43:40

标签: php symfony php-cs-fixer

为我的finder添加非php扩展而苦苦挣扎。做了很长的谷歌搜索,但空白。找到了这个,但不太明白:How to use other file extensions in php-cs-fixer, for example .ctp?

这就是我所拥有的:

<?php
$finder = PhpCsFixer\Finder::create()
    ->notPath('path/to/some/file.inc')
    ->notPath('path/to/some/file.class')
    ->in(__DIR__)
    ->name('*.php')
    ->name('*.inc')
    ->name('*.class');

    return PhpCsFixer\Config::create()
        ->setRules(
            array(
                'Rule 1' => true,
                ...
                'Rule n' => true,
            )
        )
    ->setFinder($finder);

我希望它可以处理* .inc和* .class文件,但它似乎只是选择* .php文件。

我可能错过的任何线索?

PS

我忘了补充说尝试一个->name('/(\.php|\.inc|\.class)$/');没有任何区别。它仍然只选择* .php文件。

另外,请不要在没有解释的情况下投票给我,请给我一个明确的答案......我做错了吗?如果是这样,请指出这一点。

1 个答案:

答案 0 :(得分:1)

您的问题尚未完整描述,无法重现。

ker@dus:~/github/PHP-CS-Fixer λ cat .php_cs.dist 
<?php

$finder = PhpCsFixer\Finder::create()
    ->in(__DIR__ . '/example')
    ->name('*.inc')
;

return PhpCsFixer\Config::create()
    ->setRules([
        '@Symfony' => true,
    ])
    ->setFinder($finder)
;
ker@dus:~/github/PHP-CS-Fixer λ ls -al example/
total 16
drwxr-xr-x  2 keradus keradus 4096 cze 18 13:20 .
drwxr-xr-x 11 keradus keradus 4096 cze 18 10:20 ..
-rw-rw-r--  1 keradus keradus 1550 cze 17 12:00 FileReader.php
-rw-rw-r--  1 keradus keradus 1507 cze 18 13:20 FileRemoval.inc
ker@dus:~/github/PHP-CS-Fixer λ php php-cs-fixer fix -vv --dry-run --diff --diff-format=udiff
Loaded config default from "/home/keradus/github/PHP-CS-Fixer/.php_cs.dist".
.F
Legend: ?-unknown, I-invalid file syntax, file ignored, S-Skipped, .-no changes, F-fixed, E-error
   1) example/FileRemoval.inc (braces)
      ---------- begin diff ----------
--- Original
+++ New
@@ -29,7 +29,8 @@
      */
     private $files = [];

-    public function __construct() {
+    public function __construct()
+    {
         register_shutdown_function([$this, 'clean']);
     }


      ----------- end diff -----------


Checked all files in 0.027 seconds, 12.000 MB memory used

*.inc文件已修复

**编辑OP **

在项目gitter页面上获得了一些很大的支持:https://gitter.im/PHP-CS-Fixer/Lobby,事实证明我在命令行上调用东西的方式是覆盖配置文件中的路径信息。

一条线索是阅读Paths from configuration file have been overridden by paths provided as command arguments

的CLI消息

我原来的命令是......

php php-cs-fixer fix /path/to/project/folder --config /path/to/config/file/.php_cs.dist

应该使用两个选项:

  1. 略过/path/to/project/folder 正确的命令= php php-cs-fixer fix --config /path/to/config/file/.php_cs.dist。根据开发人员的说法,这可能有一个缺点,即可能无法使用根项目的子路径运行该工具。

  2. 在CLI语句中添加-path-mode=intersection标志,以使彼此之间保持良好的关系。正确的命令= php php-cs-fixer fix /path/to/project/folder --config /path/to/config/file/.php_cs.dist --path-mode=intersection