2012-09-20 11 views
5

Tôi đã gặp sự cố với PHPCS khi sử dụng tiêu chuẩn PSR2. Đã tìm kiếm cao và thấp nhưng với sự ngạc nhiên của tôi, tôi không thể tìm thấy bất kỳ ai báo cáo cùng một vấn đề.PSR2 với khai báo lớp mở rộng các lớp với không gian tên trong Mã PHP Sniffer

Nói rằng tôi có một khai báo lớp như sau:

<?php 

class MyChildClass extends \SomeNameSpace\MyParentClass 
{ 
} 

Sau đó, tôi chạy nó thông qua PHPCS với:

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 

Ngoài ra:

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

Có ai đi qua đây? Tôi có làm điều gì sai? Nếu không tôi sẽ đi đầu tiên vào mã sniffer - mà không cảm thấy đúng.

Trả lời

8

Chuẩn PSR-1 và PSR-2 bên trong bản phát hành hiện tại của PHP_CodeSniffer chưa hoàn tất. Tôi đã không bao giờ đề cập đến họ trong các ghi chú phát hành để mọi người rõ ràng là chỉ tìm thấy họ, hoặc họ đang nói về phiên bản dev hiện tại, nơi họ đã hoàn thành.

Nếu bạn muốn dùng thử phiên bản hoàn chỉnh của PSR-2 bên PHP_CodeSniffer, bạn sẽ cần phải sao chép các repo git và sử dụng nó trực tiếp:

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

Hoặc bạn có thể chờ đợi cho việc phát hành chính thức, mà tôi đang lập kế hoạch cho đôi khi vào tuần tới, giả sử không có vấn đề lớn nào được báo cáo.

Nếu bạn chạy phiên bản dev mới nhất về mã bạn cung cấp, bạn sẽ có được điều này:

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 

Hy vọng rằng sẽ giúp.