У нас есть веб-приложение на PHP 5, и в настоящее время мы оцениваем PHP CodeSniffer , чтобы решить, улучшает ли применение стандартов кода качество кода, не вызывая слишком много головной боли. Если это будет хорошо, мы добавим хук SVN pre-commit, чтобы гарантировать, что все новые файлы, зафиксированные в ветке dev, свободны от кодирования стандартных запахов.
Есть ли способ настроить PHP codeSniffer, чтобы игнорировать определенный тип ошибки? или заставить его воспринимать определенную ошибку как предупреждение?
Вот пример, чтобы продемонстрировать проблему:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div>
<?php
echo getTabContent('Programming', 1, $numX, $numY);
if (isset($msg)) {
echo $msg;
}
?>
</div>
</body>
</html>
И это вывод PHP_CodeSniffer:
> phpcs test.php -------------------------------------------------- ------------------------------ НАЙДЕНО 2 ОШИБКИ (S) И 1 ПРЕДУПРЕЖДЕНИЕ (S), ВЛИЯЮЩИЕ НА 3 ЛИНИИ (S) -------------------------------------------------- ------------------------------ 1 | ВНИМАНИЕ | Строка превышает 85 символов; содержит 121 символов 9 | ОШИБКА | Отсутствует комментарий к файлу документа 11 | ОШИБКА | Неверный отступ строки; ожидается 0 пробелов, найдено 4 -------------------------------------------------- ------------------------------
У меня проблема с ошибкой " Отступ строки неправильно ". Я предполагаю, что это происходит, потому что я смешиваю отступ PHP с отступом HTML. Но это делает его более читабельным, не так ли? ( принимая во внимание, что у меня сейчас нет ресурсов, чтобы перейти к инфраструктуре MVC ). Поэтому я хотел бы проигнорировать это, пожалуйста.
Ответы:
Я нашел решение для устранения ошибки « Неправильный отступ строки », но сначала я должен сказать, что у dragonmantank есть отличный момент - вам не следует смешивать PHP и HTML. Это рецепт от головной боли. Однако, к сожалению, я думаю, что смешивание PHP и HTML очень распространено, особенно в устаревшем программном обеспечении.
Самое быстрое и самое грязное исправление, если мы используем
phpcs
стандартные стандарты кодирования (которые являются стандартами PEAR ), - это удалить соответствующий файл Sniff. Найти расположение стандартов PEAR, для меня, используя Ubuntu , это было здесь:Переименуйте
ScopeIndentSniff.php
файл, чтобы снифф, проверяющий отступ кода, больше не выполнялся:Работа выполнена - теперь отступ не будет проверяться, и ошибка «Ошибка с отступом строки » не возникнет ( и ваш код не будет стандартным и не будет такого высокого качества! ).
Вышеупомянутое решение довольно любительское - более чистое решение заключается в создании нового стандарта кодирования, который использует все стандарты PEAR, за исключением выбранных вами вишневых настроек. Это очень быстро сделать. Вот как сделать это с помощью
getIncludedSniffs()
иgetExcludedSniffs()
и некоторыеphpcs
соглашения об именах:Проверьте ваш новый индивидуальный стандарт кодирования,
phpcs
используя--standard
флаг. Например:Как только он заработает, вы можете установить новый стандарт в качестве значения по умолчанию, что означает, что вам не нужно вводить
--standard
флаг каждый раз, когда вы используетеphpcs
:Смотрите руководство phpcs для получения дополнительной информации.
источник
Вы столкнетесь с множеством проблем при запуске PHPCS с вашим PHP-кодом, смешанным с HTML. PHPCS действительно полезен только при разборе чистых PHP-скриптов. Стандарты встроенного кодирования построены на чистом PHP, а не на смешанном PHP / HTML.
Один из вариантов - создать свой собственный стандарт и использовать его вместо этого. Пользовательский стандарт будет учитывать смешивание кода, но, вероятно, будет сложно писать.
Другой вариант - использовать систему шаблонов, поскольку вы сказали, что не хотите переходить на фреймворк. Smarty и Twig могут использоваться вне рамок MVC. Перейдите к одному из них и затем PHPCS будет анализировать только файлы .PHP, а не файлы шаблонов.
источник