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

PHP CodeSniffer如何检查没有扩展名的文件?,php,codesniffer,phpcodesniffer,Php,Codesniffer,Phpcodesniffer,在我的团队中,我们正在使用来强制Symfony应用程序的编码样式,并且刚刚意识到没有扩展名的文件不会被检查,即使我们显式地使用该文件作为参数。这是本文讨论的设计 这意味着像这样的文件不会被检查,即使它们是有效的PHP文件,--extensions参数不接受且为空参数 有没有办法让CodeSniffer也检查这些文件?我想您可以将*指定为通配符扩展名 如果不起作用,则在文档中说明: 如果您要求PHP_CodeSniffer检查特定文件,而不是 如果是整个目录,则指定文件的扩展名将为 忽略。即使文件

在我的团队中,我们正在使用来强制Symfony应用程序的编码样式,并且刚刚意识到没有扩展名的文件不会被检查,即使我们显式地使用该文件作为参数。这是本文讨论的设计

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


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

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

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

如果您要求PHP_CodeSniffer检查特定文件,而不是 如果是整个目录,则指定文件的扩展名将为 忽略。即使文件的扩展名无效,也会对其进行检查 或者根本没有分机。在以下示例中,main.inc文件 将由PHP_CodeSniffer检查,即使--extensions 命令行参数指定只应保存.php文件 选中的。检查特定文件时忽略扩展名

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

它还指出:

忽略特定文件的文件扩展名是 PHP_CodeSniffer是检查文件的唯一方法,无需 分机。如果检查整个文件目录,则所有文件 如果没有扩展名,则将被忽略,因此您必须检查每个扩展名 分开归档

请参见文档中的

忽略特定文件的文件扩展名是PHP_CodeSniffer的一项功能,也是检查没有扩展名的文件的唯一方法。如果检查整个文件目录,则将忽略所有不带扩展名的文件,因此必须分别检查每个文件

因此,您需要指定该文件

语法是

phpcs--文件列表=路径/到/文件/包含/其他

其中,其他文件是具有每行文件结构的文件

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

乙二醇

文件1 文件2 控制台


要检查这3个文件,我不知道CS是否能做到这一点,但我认为像
bin/console
这样的文件最多有10行,所以不需要使用codesniffer进行检查:)它们应该只需要供应商,并从源代码运行一些应用程序类。而且,在所有项目中,它们都是相同的

仅供参考,我们的bin/控制台

#!/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());
#/usr/bin/env-php

虽然我同意你的观点,但它并不能解决老年退休金计划的具体问题:-)这是真的,因此我在第一句话中提到了它但我也认为重要的是讨论我们应该在何处使用这些工具,以及在何处获得真正的利润:)“主要是十行吗?”?因为你刚拔了一个短的?PHP非常适合编写shell脚本,比bash好得多。而且并非所有脚本都需要在外部文件中结构化。我有
0common.php
,在那里我保留了一些在多个脚本中使用的函数,但我有很多脚本文件,超过10行,我肯定希望在不给它们
.php
扩展名的情况下对它们进行检查。@redanimalwar不,你只是没有做到这一点。。。你说的脚本是用来做某事的。。。它们肯定超过10行。。。但这个问题涉及的是
bin/console
,它是CLI应用程序的入口点,我10年的经验表明,即使是我5年多前创建的项目,它也完全相同。
bin/console
只是人们常用的入口点吗?我不想写一个应用程序。我刚从bash迁移到php,只想在一个文件夹中有一堆脚本……如果是这样的话,肯定有一个bug,因为命令
php vendor/bin/phpcs/bin/console
的行为就像我给它一个空文件夹作为参数而不是文件一样。将打开一张票证以防万一。看起来有一个明确的检查,只是为了防止在v3.3.2的列表中使用
--file list
选项对没有扩展名的文件不起作用,而您“认为”我知道在config
中不起作用**事实上,如果您从
.php
切换到
*
#!/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());