首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法识别的CodeSniffer属性

无法识别的CodeSniffer属性
EN

Stack Overflow用户
提问于 2014-10-30 15:49:24
回答 1查看 438关注 0票数 1

我的嗅觉不起作用,也不认识私有$testvar的属性。我想在那里强制执行一项布洛克医生计划。

当我运行代码嗅探器时,进程方法似乎不被使用。我之前在那里加入了一些回声。

令牌T_PROPERTY存在吗?我还无法在php手动http://php.net/manual/en/tokens.php上找到它,在squiz实验室中使用了T_PROPERTY源代码。

代码语言:javascript
复制
<?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');
        }
    }
}

谢谢你的帮助:)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-31 02:43:11

T_PROPERTY令牌仅在检查JavaScript文件时使用。它不存在于PHP文件中。

对于PHP文件,您需要使用AbstractVariableSniff助手。下面是一个检查成员vars评论的嗅探:CodeSniffer/blob/master/CodeSniffer/Standards/Squiz/Sniffs/Commenting/VariableCommentSniff.php

注意它如何扩展PHP_CodeSniffer_Standards_AbstractVariableSniff,然后只实现processMemberVar()方法。它将processVariable()和processVariableInString()方法保留为空,因为它不关心代码中的正则变量。

还请注意,如果您正在编写注释嗅探,则注释解析器在2.0版本中完全不同(目前处于beta版本,但由于在任何一周都会稳定下来)。请看上面的最新版本:CodeSniffer/blob/phpcs-fixer/CodeSniffer/Standards/Squiz/Sniffs/Commenting/VariableCommentSniff.php

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26657542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档