свойства — свойство PHP CodeSniffer не распознано

мой снифф не работает и не распознает свойство private $ testvar. Я хочу сделать Doc-Block обязательным там.

Когда я запускаю сниффер кода, метод процесса, кажется, не используется. Я добавил немного эха там раньше.

Существует ли токен T_PROPERTY? Я не могу найти его в руководстве по PHP http://php.net/manual/en/tokens.php
Тем не менее, в тестовой лаборатории исходный код T_PROPERTY используется.

<?php
/**
* Extension for the pear class comment sniff.
*
*/

/**
* Extension for the pear class comment sniff.
*
*/
class XYZ_Sniffs_Commenting_PropertyCommentSniff implements PHP_CodeSniffer_Sniff
{
private $testvar = 1;

/**
* Returns an array of tokens this test wants to listen for.
*
* @return array
*/
public function register()
{
return array(T_PROPERTY);
}

/**
* Checks the property comments.
*
* @param PHP_CodeSniffer_File $phpcsFile the file object
* @param int                  $stackPtr  the stack pointer
*
* @return void
*/
public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
{
$tokens = $phpcsFile->getTokens();
$find   = PHP_CodeSniffer_Tokens::$scopeModifiers;
$find[] = T_WHITESPACE;
$find[] = T_STATIC;

$commentEnd = $phpcsFile->findPrevious($find, ($stackPtr - 1), null, true);

if ($tokens[$commentEnd]['code'] !== T_DOC_COMMENT_CLOSE_TAG
&& $tokens[$commentEnd]['code'] !== T_COMMENT
) {
$phpcsFile->addError('Missing property doc comment', $stackPtr, 'Missing');
$phpcsFile->recordMetric($stackPtr, 'Function has property comment', 'no');
return;
} else {
$phpcsFile->recordMetric($stackPtr, 'Function has property comment', 'yes');
}
}
}

Спасибо за вашу помощь :).

1

Решение

Токен T_PROPERTY используется только при проверке файлов JavaScript. Он не существует для файлов PHP.

Для файлов PHP, вы захотите использовать помощник AbstractVariableSniff. Вот снифф, который проверяет комментарии членов vars: https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Squiz/Sniffs/Commenting/VariableCommentSniff.php

Обратите внимание, как он расширяет PHP_CodeSniffer_Standards_AbstractVariableSniff, а затем только реализует метод processMemberVar (). Он оставляет методы processVariable () и processVariableInString () пустыми, потому что ему не нужны обычные переменные внутри кода.

Также обратите внимание, что если вы пишете сниффинг комментариев, парсер комментариев в версии 2.0 будет совершенно другим (в настоящее время находится в бета-версии, но должен стать стабильным в течение любой недели). Взгляните на новую версию вышеупомянутого сниффа здесь: https://github.com/squizlabs/PHP_CodeSniffer/blob/phpcs-fixer/CodeSniffer/Standards/Squiz/Sniffs/Commenting/VariableCommentSniff.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]