PHP CodeSniffer如何检查没有扩展名的文件?

时间:2017-11-21 14:09:58

标签: php codesniffer phpcodesniffer

在我的团队中,我们使用codesniffer来强制执行Symfony应用程序的编码样式,并且只是意识到没有扩展的文件没有被检查,即使我们明确地将文件用作参数。这是按照github issue上的讨论设计的。

这意味着像bin/console这样的文件没有被检查,即使它们是有效的PHP文件,并且--extensions参数不接受并且为空参数。

有没有办法让CodeSniffer检查这些文件?

3 个答案:

答案 0 :(得分:1)

我认为您可以将*指定为通配符扩展名。

如果这不起作用,请在文档中说明:

  

如果您已要求PHP_CodeSniffer检查特定文件而不是   整个目录,指定文件的扩展名将是   忽略。即使文件的扩展名无效,也会检查该文件   或根本没有延伸。在以下示例中,main.inc文件   即使是--extensions,也会被PHP_CodeSniffer检查   命令行参数指定只应该是.php文件   检查。检查特定文件时忽略扩展

$ phpcs --extensions=php /path/to/code/main.inc

因此,如果您明确检查没有扩展名的单个文件,它应该可以工作。

进一步说明:

  

忽略特定文件的文件扩展名是其中的一项功能   PHP_CodeSniffer并且是没有的文件检查文件的唯一方法   延期。如果检查整个文件目录,则检查所有文件   没有扩展名将被忽略,因此您必须检查每一个   单独归档。

请参阅https://pear.php.net/manual/en/package.php.php-codesniffer.advanced-usage.php

答案 1 :(得分:1)

来自文档

忽略特定文件的文件扩展名是PHP_CodeSniffer的一项功能,是检查没有扩展名的文件的唯一方法。如果检查整个文件目录,所有没有扩展名的文件都将被忽略,因此您必须单独检查这些文件

https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage

所以你需要指定文件

语法是

phpcs --file-list = path / to / file / containing / others

其他人是每行结构文件的文件。

检查其他文件中列出的所有文件

例如

File1中 文件2 控制台

检查3个文件

答案 2 :(得分:1)

我不知道CS是否可以做到这一点,但我认为像bin/console这样的文件大多是十行,所以没有必要用codesniffer检查它们:)它们应该只需要供应商并运行来自源的一些Application类。它们在所有项目中都是相同的。

仅供参考,我们的bin / console。

#!/usr/bin/env php
<?php declare(strict_types = 1);

/** @var \Nette\DI\Container $container */
$container = require __DIR__ . '/../src/bootstrap.php';

/** @var \Symfony\Component\Console\Application $console */
$console = $container->getByType(Symfony\Component\Console\Application::class);

$services = $container->findByType(Symfony\Component\Console\Command\Command::class);

foreach ($services as $service) {
    $console->add(
        $container->getService($service)
    );
}

exit($console->run());

没有理由检查这个:]