У моего TestMyClass.php
есть два определения класса в одном файле (класс модульного тестирования), а PHP Code Sniffer жалуется, что каждый класс должен быть в файле сам по себе . Как я могу подавить это предупреждение?
class MyClassImpl implements MyInterface { // ... } class MyClassTest extends \PHPUnit_Framework_TestCase { // ... }
Вы можете заставить PHP_CodeSniffer игнорировать определенные файлы или строки в файле, используя комментарии: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-files-and-folders
В этом случае ошибка будет сгенерирована при определении вашего второго класса, поэтому вам придется написать второе определение следующим образом:
// @codingStandardsIgnoreStart class MyClassTest extends \PHPUnit_Framework_TestCase { // @codingStandardsIgnoreEnd // ... }
Но вы также можете просто игнорировать весь файл, если он не должен быть проверен, либо с помощью комментария @codingStandardsIgnoreFile, либо путем указания исключений в командной строке (см. Предыдущую ссылку для информации).
Если вы обнаружите, что делаете это много, и вы не хотите добавлять комментарии к своему коду, вы также можете создать свой собственный стандарт кодирования. Предполагая, что вы используете стандарт PSR2 прямо сейчас, вы должны создать XML-файл (например, mystandard.xml) и включить следующий контент:
<?xml version="1.0"?> <ruleset name="MyStandard"> <description>My custom coding standard.</description> <rule ref="PSR2" /> <rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses"> <severity>0</severity> </rule> </ruleset>
Затем запустите PHP_CodeSniffer следующим образом: phpcs --standard=/path/to/mystandard.xml /path/to/code
Наличие собственного набора правил позволяет вам многое делать, включая изменение сообщений об ошибках, изменение серьезности или типа сообщения, включая проверки других стандартов и установку глобальных правил игнорирования. Подробнее здесь: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml