2017-03-06 34 views
1

有沒有一種方法可以使用PHP代碼嗅探器和/或PHP混亂檢測器來檢測我的類/屬性/方法是否有適當的docblocks?例如:PHPCS/PHPMD:是否有一個PHP代碼嗅探器/混亂檢測器的方式來確保有docblocks?

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(){ 
     // ... 
    } 
} 

我不是每個定義興趣,如果文檔塊是正確的(如果返回類型匹配返回什麼),我的意思是:這將是很好,如果它也做那,但我想要採取的第一步是確保docblocks存在。

+0

@LukasHajdu:我看了這個答案,但是如果我沒有錯,那個問題更多的是關於驗證docblock內部的內容是否有效,而不是檢查docblock是否存在。如果我錯了,請糾正我。 –

+0

我在2017年爲重複問題添加了2個新選項。檢查它:http://stackoverflow.com/a/43722973/1348344 –

回答

1

來自duplicated answer的解決方案也適用於docblock存在檢查。

這是我酒吧類有評論:

<?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 

這是我類沒有評論:

<?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 
---------------------------------------------------------------------- 

您可以根據您的需要更新和修改規則集。