добавление исправимых ошибок с помощью phpcs

Когда я вызываю addFixableError в phpcs, вывод показывает исправимую ошибку, как и ожидалось, однако в коде sniff я проверяю возврат, и он оказывается ложным, и поэтому я ожидаю, что вывод phpcs покажет, что ошибка неустранима.

Я прав в этом предположении или я что-то упустил?

Кажется, что phpcs_file->fixer->enabled имеет значение false

как правильно установить это значение?

понюхать код -

        $phpcs_file->fixer->beginChangeset();
    $fix = $phpcs_file->addFixableError ($error, $stack_ptr, 'FunctionNameInvalid', $data);
    if ($fix === true) {
        $token = $tokens[$stack_ptr +2];
        $token['content'] = $snake_case_string;
        if ($phpcs_file->fixer->replaceToken ($stack_ptr, "asasd") === false) {
            print("could not replace\n");
        }
    } else {
        print("could not fix\n");
    }

person GrahamL    schedule 09.06.2017    source источник


Ответы (1)


Единственный раз, когда PHPCS попросит снифф исправить ошибки, это когда он печатает отчет diff. В остальное время PHPCS только показывает ошибки и не исправляет их.

Сопутствующий скрипт, PHPCBF, выполняет исправление, перезаписывая файлы фиксированной копией.

Если вы хотите автоматически исправить файл, используйте PHPCBF. Если вы просто хотите посмотреть, как будут выглядеть исправления, используйте PHPCS с отчетом о различиях. В обоих случаях возвращаемое значение addFixableError будет true. Во всех остальных случаях возвращаемое значение будет false.

Таким образом, эти две команды для получения возвращаемого значения true будут такими:

phpcbf /path/to/file.php

or

phpcs /path/to/file.php --report=diff

person Greg Sherwood    schedule 10.06.2017
comment
Спасибо за разъяснения - это действительно помогло‹br/› Корень моего замешательства исходит из того факта, что когда phpcs создает diff, он использует команду ob_start, поэтому я не видел никаких моих выходных данных. - person GrahamL; 12.06.2017