2014-10-30 57 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