2012-09-20 9 views
5

ho colpito un problema con PHPCS che utilizzano lo standard PSR2. Ho cercato in alto e in basso, ma con mia sorpresa non riesco a trovare nessuno che segnala lo stesso problema.PSR2 con dichiarazioni di classe che estende le classi con i namespace in PHP codice Sniffer

dire che ho un dichiarazione di classe come segue:

<?php 

class MyChildClass extends \SomeNameSpace\MyParentClass 
{ 
} 

Poi ho eseguito attraverso PHPCS con:

bash-3.2$ phpcs -s --standard=PSR2 test.php 

FILE: test.php 
-------------------------------------------------------------------------------- 
FOUND 2 ERROR(S) AFFECTING 1 LINE(S) 
-------------------------------------------------------------------------------- 
3 | ERROR | Expected 0 spaces between "SomeNameSpace" and comma; $1 found 
    |  | (PSR2.Classes.ClassDeclaration.SpaceBeforeComma) 
3 | ERROR | Expected 1 space before "MyParentClass"; 13 found 
    |  | (PSR2.Classes.ClassDeclaration.SpaceBeforeName) 
-------------------------------------------------------------------------------- 

Time: 0 seconds, Memory: 4.00Mb 

anche:

Bash-3.2$ phpcs --version 
PHP_CodeSniffer version 1.3.6 (stable) by Squiz Pty Ltd. (http://www.squiz.net) 

Qualcuno ha incontrato questo? Sto facendo qualcosa di sbagliato? Altrimenti vado a testa prima nel codice dello sniffer - che non mi sembra giusto.

risposta

8

Lo standard PSR-1 e PSR-2 all'interno della versione corrente di PHP_CodeSniffer non sono completi. Non li ho mai menzionati nelle note di rilascio, quindi ovviamente le persone li hanno appena trovati, oppure stanno parlando dell'attuale versione di sviluppo, dove sono completi.

Se volete provare la versione completa del PSR-2 all'interno PHP_CodeSniffer, avrete bisogno di clonare il repo git e utilizzarlo direttamente:

git clone git://github.com/squizlabs/PHP_CodeSniffer.git 
cd PHP_CodeSniffer 
php scripts/phpcs --standard=PSR2 /path/to/code 

Oppure si può attendere il rilascio ufficiale, che sto programmando per la prossima settimana, assumendo che non vengano segnalati problemi importanti.

Se si esegue l'ultima versione dev sul codice da Lei forniti, si otterrà questo:

2:PHP_CodeSniffer gsherwood$ php scripts/phpcs --standard=psr2 temp.php 

FILE: /Users/gsherwood/Sites/Projects/PHP_CodeSniffer/temp.php 
-------------------------------------------------------------------------------- 
FOUND 2 ERROR(S) AFFECTING 2 LINE(S) 
-------------------------------------------------------------------------------- 
3 | ERROR | Each class must be in a namespace of at least one level (a 
    |  | top-level vendor name) 
5 | ERROR | Expected 1 blank line at end of file; 0 found 
-------------------------------------------------------------------------------- 

Time: 0 seconds, Memory: 4.25Mb 

Speranza che aiuta.

Problemi correlati