2015-04-13 9 views
5

C'è un lint/analizzatore statico per PHP che avviserà quando le eccezioni non sono documentate o prese? Si consideri l'esempio:Esiste un linter per PHP che rende esplicite tutte le eccezioni come Java?

// ERROR: InvalidArgumentException must be documented or caught inside method. 
function divide($a, $b) 
{ 
    if (0 == $b) { 
     throw new InvalidArgumentException(); 
    } 
    return $a/$b; 
} 

Per fissare:

/** 
* @throws InvalidArgumentException if $b is zero. 
*/ 
function divide($a, $b) 

Dal momento che deve essere documentato, simile a Java esplicito throws sul metodo prototipo. Allora questo dovrebbe essere possibile:

// ERROR: InvalidArgumentException must be documented or caught inside method. 
function calc() 
{ 
    print divide(6, 2); 
} 

Ci sono alcune avvertenze evidenti con PHP, ma nella maggior parte dei casi questi difetti dovrebbero essere rilevati in precedenza. C'è qualche linters che fa questo?

risposta

1

È possibile utilizzare PHPCS

Avrai bisogno di aggiungere le proprie regole per PHPDoc, il here's the Sniff

Credo che si aggiunge alle regole con:

<?xml version="1.0"?> 
<ruleset name="My rules"> 
    <rule ref="Squiz.Commenting.FunctionCommentThrowTag" /> 
</ruleset> 

Ma io non l'ho provato Lavori confermati ... ora ho phpdoc da aggiungere. :/

mio phpcs.xml:

<?xml version="1.0"?> 
<ruleset name="PSR1/2"> 
    <description>Example</description> 

    <file>./api</file> 
    <exclude-pattern>*/Database/Proxies/*</exclude-pattern> 

    <rule ref="PSR1" /> 
    <rule ref="PSR2" /> 
    <rule ref="Squiz.Commenting.FunctionCommentThrowTag" /> 

</ruleset> 
 
$ bin/phpcs 

FILE: ...ttpdocs/api/Api/Version1/Software/AbstractSoftwareController.php 
---------------------------------------------------------------------- 
FOUND 1 ERROR AFFECTING 1 LINE 
---------------------------------------------------------------------- 
60 | ERROR | Missing @throws tag for "\DomainException" exception 
---------------------------------------------------------------------- 

Time: 5.55 secs; Memory: 19.5Mb 
+0

È possibile cercare altri utilizzando 'bin/phpcs -e --standard = Squiz'. Il '-e' significa spiegare. – DanielM

Problemi correlati