PHPCS / PHPMD:是否有 PHP Code Sniffer / Mess Detector 方法来确保有文档块?
PHPCS / PHPMD : Is there a PHP Code Sniffer / Mess Detector way to ensure there are docblocks?
有什么方法可以使用 PHP Code Sniffer and/or PHP Mess Detector 来检测我的 classes/properties/methods 是否有正确的文档块?例如:
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(){
// ...
}
}
如果文档块正确(如果 return 类型与 returned 匹配),我的定义不感兴趣,我的意思是:如果它也能做到这一点就好了,但我要采取的第一步是确保存在文档块。
duplicated answer 中的解决方案也适用于 docblock 存在性检查。
这是我的栏class,其中有评论:
<?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 class 没有评论:
<?php
namespace PhpCSTesting;
class Foo
{
protected $bar;
public function doStuff()
{
return true;
}
}
然而,当我 运行 这个 class 的嗅探器时,我得到错误:
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
----------------------------------------------------------------------
您可以根据需要更新和修改规则集。
有什么方法可以使用 PHP Code Sniffer and/or PHP Mess Detector 来检测我的 classes/properties/methods 是否有正确的文档块?例如:
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(){
// ...
}
}
如果文档块正确(如果 return 类型与 returned 匹配),我的定义不感兴趣,我的意思是:如果它也能做到这一点就好了,但我要采取的第一步是确保存在文档块。
duplicated answer 中的解决方案也适用于 docblock 存在性检查。
这是我的栏class,其中有评论:
<?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 class 没有评论:
<?php
namespace PhpCSTesting;
class Foo
{
protected $bar;
public function doStuff()
{
return true;
}
}
然而,当我 运行 这个 class 的嗅探器时,我得到错误:
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
----------------------------------------------------------------------
您可以根据需要更新和修改规则集。