2017-05-18 22 views
1

PEAR標準にはファイルとクラスのコメントコードスニフがあり、どのように対話するかは不明です。PEARクラスコメントとファイルコメントスニフはどのように連携しますか?

PEARクラスコメントチェックの最初の部分は

$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 class doc comment', $stackPtr, 'Missing'); 
      $phpcsFile->recordMetric($stackPtr, 'Class has doc comment', 'no'); 
      return; 
     } 

である。しかし、次のファイルを提示するとき、それは(おそらく)ファイルのコメントには、クラスのコメントであると考えているとして、それは成功します。 これまでに誰かに遭遇したことがありますか?もしそうなら、どのように克服しましたか? おかげ

/** 
* 
* PLATFORM 3 - APACS 29b Recurring Transaction Update Service (RTUS) 
* ================================================================== 
* 
* This class provides the encoding and decoding of recurring transaction update 
* service enquiry and response files that use the APACS 29b protocol as defined 
* in APACS Standard 70 Book 3. 
* 
* @package  Cardstream 
* @subpackage Pro/System/Classes 
* @copyright Copyright (c) 2011 - Cardstream Ltd. 
* @author  Nick Turner <[email protected]> 
* @link  http://www.cardstream.com 
* @version  $Id: p3apacsrtus.php 8195 2016-09-28 13:36:50Z chris.wilson $ 
*/ 

class testClass { 
} 

答えて

1

スニフはコメントはクラスコメントがあることが前提になります。

投稿したコードは、classというキーワードで始まり、空白でない前のトークンと前にないトークンを探します。あなたのケースでは、それはT_DOC_COMMENT_CLOSE_TAGトークンである*/を見つけるでしょう。

これで、sniffはそのコメントをクラスコメントとして使用します。

この動作を変更する方法はありません。クラスコメントを使用しない場合は、このスニフを標準から除外したいと思うかもしれません。クラスとファイルの両方のコメントを使用する場合は、PEAR.Commenting.FileCommentスニッフィッブも含めてください。 PEAR標準には既に2つのスニフが含まれているので、--standard=PEARを使用している場合は何もする必要はありません。

標準で両方のスニフを使用すると、ファイルコメントスニッフィングはそのファイルのファイルコメントがないことを報告します。それもclassトークンにコメントを割り当てます。

この場合、クラスコメントまたはファイルコメントを見逃している可能性があるため、PHPCSは一貫性のある場所にコメントを割り当てて、すべてのスニフが同じルールを使用していることを確認する必要があります。

ブロックコメントが2つあると、最初にファイルに割り当てられ、2番目がブロックに割り当てられます。

関連する問題