2014-10-30 70 views
1

我的嗅探不工作,不承认财产私人$ testvar。我想在那里制定一个Doc-Block。PHP CodeSniffer财产不承认

当我运行代码嗅探器时,似乎没有使用过程方法。我之前在那里添加了一些回声。

令牌T_PROPERTY是否存在?我无法在php手册上找到它http://php.net/manual/en/tokens.php 然而,在squiz实验室源代码中使用了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 helper。这是一个检查成员变量的注释的嗅探: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