Как правильно изменить конфигурацию ограничения символов строки в PHP CodeSniffer?

Итак, я хочу изменить значения для $lineLimit и $absoluteLineLimit, которые PHP CodeSniffer использует при проверке файлов. После некоторого поиска в Google я попытался создать свой собственный стандарт, чтобы облегчить это, но у меня это не сработало. Работая над Ubuntu 12.04.4LTS и в системном каталоге для PHP CodeSniffer я помещаю в свою папку MyStandard и в подкаталог Sniffs у меня есть то, что должно быть моим личным Sniff, чтобы изменить ограничение строки под названием LineLimit120Sniff.php

Код выглядит следующим образом

class LineLimit120Sniff extends Generic_Sniffs_Files_LineLengthSniff
{
    public $lineLimit = 100;
    public $absoluteLineLimit = 120;
}

Когда я пытаюсь запустить phpcs --standard=MyStandard <file>, я получаю это как вывод

Уведомление PHP: Неопределенное смещение: 3 в /usr/share/php/PHP/CodeSniffer.php в строке 1189

Неустранимая ошибка PHP: невозможно повторно объявить класс LineLimit120Sniff в /usr/share/php/PHP/CodeSniffer/Standards/MyStandard/Sniffs/LineLimit120Sniff.php в строке 8

Я не понимаю, как переопределяется класс..? Что я делаю неправильно? Или, в качестве альтернативы, есть ли более простой способ изменить настройку $lineLimit?


person The Ice Mage    schedule 28.02.2014    source источник
comment
cd /usr/share/php/PHP/CodeSniffer && grep -r "class LineLimit120Sniff" .. Определено ли более одного?   -  person Justin Wood    schedule 28.02.2014


Ответы (1)


Самый простой способ — просто создать файл ruleset.xml в удобном для вас месте и вставить в него приведенный ниже текст.

<?xml version="1.0"?>
<ruleset name="MyStandard">
    <description>This standard changes the line length</description>

    <!-- Insert all sniff from PSR2 standard -->
    <rule ref="PSR2"/>

    <rule ref="Generic.Files.LineLength">
        <properties>
            <property name="lineLimit" value="100"/>
            <property name="absoluteLineLimit" value="120"/>
        </properties>
     </rule>
</ruleset>

Используйте стандарт по

phpcs --standard=/path/to/ruleset.xml test.php
person common sense    schedule 28.02.2014
comment
Спасибо, я попробую это! :) Это для работы, так что я, вероятно, не доберусь до него до понедельника, ну да ладно. Есть ли способ расширить мой набор правил по сравнению с предустановленным стандартом (например, PSR2) без простого копирования и вставки из существующего стандарта? - person The Ice Mage; 28.02.2014
comment
Я обновил свой ответ. Вы можете ссылаться на любой стандарт или даже на фрагменты стандартов внутри вашего собственного ruleset.xml. Вы должны знать об обнюхиваниях, которые мешают друг другу. Например, если стандарт PSR2 содержит также анализ, который проверяет длину строки, вы должны переопределить его вместо стандарта Generic. - person common sense; 28.02.2014