2017-11-21 18 views
2

우리 팀에서는 codesniffer을 사용하여 Symfony 응용 프로그램의 코딩 스타일을 강화했으며 명시 적으로 파일을 인수로 사용하더라도 확장명이없는 파일이 확인되지 않음을 알았습니다. 이는 위에 설명 된대로 설계된 것입니다 github issue.PHP CodeSniffer는 확장자가없는 파일을 어떻게 확인할 수 있습니까?

즉, bin/console과 같은 파일은 유효한 PHP 파일이고 --extensions 인수는 인수를 허용하지 않고 비어 있습니다.

CodeSniffer가 이러한 파일을 확인하는 방법이 있습니까?

답변

1

와일드 카드 확장으로 *을 지정할 수 있습니다.

그게이 문서에 언급 작동하지 않는 경우 :

특정 파일이 아닌 전체 디렉토리를 확인 PHP_CodeSniffer을 요구 한 경우, 지정된 파일의 확장자는 을 무시 될 것입니다. 잘못된 확장자 인 이 있거나 확장자가 전혀없는 경우에도 파일이 검사됩니다. 다음 예제에서 --extensions 명령 줄 인수로 .php 파일 만 을 검사하도록 지정 했음에도 불구하고 main.inc 파일 이 PHP_CodeSniffer에 의해 검사됩니다. 명시 적으로 확장자가없는 하나의 파일을 선택하면

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

그래서 그것을 작동합니다 특정 파일을 검사 할 때 확장이 무시.

또한 그 상태 :

특정 파일에 대한 파일 확장자의 무시는 PHP_CodeSniffer의 기능이며 확장자가없는 파일을 확인하는 유일한 방법입니다. 파일의 전체 디렉토리를 검사하면 확장자가없는 모든 파일이 무시되므로이 파일을 개별적으로 확인해야합니다.

는 PHP_CodeSniffer의 기능과 확장명없이 파일을 확인하는 유일한 방법입니다 특정 파일에 대한 파일 확장자의 무시 문서

에서

1

https://pear.php.net/manual/en/package.php.php-codesniffer.advanced-usage.php를 참조하십시오. 당신이 파일의 전체 디렉토리를 선택하면 별도

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

그래서 당신이 파일의 구문은

을 지정해야합니다 당신은이 파일의 각을 확인해야하므로, 확장없이 모든 파일은 무시됩니다 --file리스트 = 경로// 파일/함유/기타

다른 라인 구조 당 파일과 파일이다

phpcs.

다른 사람에 나열된 모든 파일이 파일이 검사

을 File1 있는 File2 콘솔

는 CS가이 작업을 수행 할 수 있을지 모르는 3 개 개의 파일

+0

이 버그가 있어야합니다 :

#!/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()); 

이 확인 할 이유가 없다 파일 대신 인수로 빈 폴더를 부여한 것처럼 동작합니다. 만약을 대비하여 티켓을 열 것입니다. 명시 적 검사가 단지 https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Filters/Filter.php#L144 – Loupax

+0

가 보이는 당신과 함께, 그것은 OPs 특정 문제를 해결하지 않습니다 :-) – Loupax

+0

는 동의하지만 예를 – exussum

1

를 확인하려면 ,하지만 나는 bin/console 같은 파일은 대부분 10 줄까지이므로 codesniffer로 검사 할 필요가 없다는 것을 알았습니다 :) 그들은 공급 업체를 요구하고 소스에서 일부 Application 클래스를 실행해야합니다. 또한 모든 프로젝트에서 모두 동일합니다.

단지 bin/console을 참조하십시오. . 그런 경우가 있다면 그것은 그 명령`PHP는 공급 업체/빈/phpcs/빈/console` 명령처럼 보이기 때문에]

+0

을 보여 답을 업데이트 것을 방지하기 위해이 같은 – DanFromGermany

+0

그건 사실이야, 그래서 나는 첫 번째 문장에서 그것을 언급했다. :) 그러나 나는 또한 도구를 사용해야하는 곳과 그것이 실제로 이익이되는 곳에 대해 이야기하는 것이 중요하다고 생각합니다. :) – Arziel