PHPCS / PHPMD:有没有PHP Code Sniffer / Mess Detector方法来确保有docblocks?

时间:2017-03-06 09:00:32

标签: php phpmd phpcs

有没有办法可以使用PHP Code Sniffer和/或PHP Mess Detector来检测我的类/属性/方法是否有正确的docblock?例如:

class Foo
{
    protected $bar;

    public function doStuff(){
        // ...
    }
}

以上示例应引发危险信号。但是,以下示例应该通过:

/**
 * Class Foo
 * @package Vendor\Module
 */
class Foo
{
    /**
     * @var Vendor\Module\Model\Bar
     */
    protected $bar;

    /**
     * This method does stuff
     * @return bool
     */
    public function doStuff(){
        // ...
    }
}

如果docblock是正确的(如果返回类型与返回的内容相匹配),那我的定义并不感兴趣,我的意思是:如果它也这样做会很好,但是我想采取的第一步确保docblock存在。

1 个答案:

答案 0 :(得分:1)

来自duplicated answer的解决方案也适用于docblock存在检查。

这是我的 Bar 类,其中包含注释:

<?php

namespace PhpCSTesting;

use stdClass;

/**
 * Class Bar
 */
class Bar
{
    /**
     * @var stdClass
     */
    protected $bar;

    /**
     * This method does stuff
     *
     * @return boolean
     */
    public function doStuff()
    {
        return true;
    }
}

当我运行嗅探器时,我没有错误:

bin/phpcs Bar.php --standard=Squiz --sniffs=Squiz.Commenting.FunctionComment,Squiz.Commenting.FunctionCommentThrowTag,Squiz.Commenting.ClassComment,Squiz.Commenting.VariableComment

这是我的 Foo 类,没有评论:

<?php

namespace PhpCSTesting;

class Foo
{
    protected $bar;

    public function doStuff()
    {
        return true;
    }
}

但是,当我为这个类运行嗅探器时,我会收到错误:

bin/phpcs Foo.php --standard=Squiz --sniffs=Squiz.Commenting.FunctionComment,Squiz.Commenting.FunctionCommentThrowTag,Squiz.Commenting.ClassComment,Squiz.Commenting.VariableComment

FILE: /Users/lukas/workspace/Foo.php
----------------------------------------------------------------------
FOUND 3 ERRORS AFFECTING 3 LINES
----------------------------------------------------------------------
 5 | ERROR | Missing class doc comment
 7 | ERROR | Missing member variable doc comment
 9 | ERROR | Missing function doc comment
----------------------------------------------------------------------

您可以根据需要更新和修改规则集。