2012-09-20 5 views
5

Ich habe ein Problem mit PHPCS mit dem PSR2-Standard. Ich habe hoch und niedrig gesucht, aber zu meiner Überraschung kann ich niemanden finden, der dasselbe Problem meldet.PSR2 mit Klassendeklarationen erweitern Klassen mit Namespaces in PHP Code Sniffer

sagen, dass ich eine Klassendeklaration haben wie folgt:

<?php 

class MyChildClass extends \SomeNameSpace\MyParentClass 
{ 
} 

Dann laufe ich es durch PHPCS mit:

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 

auch:

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

Hat über das jemand kommen? Mache ich etwas falsch? Ansonsten gehe ich kopfüber in den Sniffer-Code - der sich nicht richtig anfühlt.

Antwort

8

Der PSR-1- und PSR-2-Standard in der aktuellen Version von PHP_CodeSniffer ist nicht vollständig. Ich habe sie in den Versionshinweisen nicht erwähnt, so dass die Leute sie entweder gefunden haben oder über die aktuelle Version sprechen, in der sie vollständig sind.

Wenn Sie die komplette Version des PSR-2 innerhalb PHP_CodeSniffer ausprobieren möchten, müssen Sie den git Repo und verwenden Sie es direkt klonen:

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

Oder Sie können für den offiziellen Release warten, was ich für nächste Woche planen werde, vorausgesetzt, es werden keine größeren Probleme gemeldet.

Wenn Sie die neueste Entwickler-Version auf dem Code ausführen Sie geliefert, werden Sie diese:

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 

Hoffnung, das hilft.