PEAR类评论和文件评论嗅探如何合作?

时间:2017-05-18 10:22:19

标签: php phpcs

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 <nick.turner@cardstream.com>
 * @link        http://www.cardstream.com
 * @version     $Id: p3apacsrtus.php 8195 2016-09-28 13:36:50Z chris.wilson $
 */

class testClass {
}

1 个答案:

答案 0 :(得分:1)

嗤之以鼻,假设评论中有一个评论。

您发布的代码通过从class关键字开始,然后查找以前的非空白和非前缀令牌。在您的情况下,它会找到*/令牌{。}}。

嗅探现在将该评论用作课堂评论。

无法改变此行为。如果您不使用课堂评论,您可能希望从标准中排除此嗅探。如果同时使用类和文件注释,请确保还包含T_DOC_COMMENT_CLOSE_TAG嗅探器。请注意,PEAR标准已包含两个嗅探,因此如果您使用PEAR.Commenting.FileComment,则无需执行任何操作。

如果您在标准中使用两个嗅探,则文件注释嗅探将报告该文件没有文件注释。它也会将评论分配给--standard=PEAR令牌。

在这种情况下,PHPCS无法知道您是否错过了课程评论或文件评论,因此必须将评论分配到一致的位置并确保所有嗅探都使用相同的规则。

一旦你有两个块注释,第一个将分配给文件,第二个分配给类。