在我的团队中,我们使用codesniffer来强制执行Symfony应用程序的编码样式,并且只是意识到没有扩展的文件没有被检查,即使我们明确地将文件用作参数。这是按照github issue上的讨论设计的。
这意味着像bin/console这样的文件没有被检查,即使它们是有效的PHP文件,并且--extensions
参数不接受并且为空参数。
有没有办法让CodeSniffer检查这些文件?
答案 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());
没有理由检查这个:]