2014-07-14 27 views
6

Tôi đang cố gắng thiết lập một ruleset cho PHP CodeSniffer để thực thi kiểu mã trong một nhóm các nhà phát triển nhưng tôi đã gặp phải một số rắc rối.Sử dụng PSR-2 với các ngoại lệ trong PHP CodeSniffer

Chúng tôi muốn tuân thủ PSR-2 ngoại trừ hai điều. Chúng ta muốn khai báo lớp để có dấu ngoặc mở trên cùng một dòng và giống nhau cho các hàm. Việc đầu tiên tôi đã quản lý để sửa chữa nhưng lỗi cho cú đúp mở trên cùng một dòng cho các chức năng chỉ sẽ không biến mất.

Tôi đã theo dõi nó để sniff Generic.Functions.OpeningFunctionBrace.BsdAllman và lỗi BraceOnSameLine nhưng thêm loại trừ này vào ruleset của tôi không có gì.

ruleset của tôi trông như thế này:

<?xml version="1.0"?> 
<ruleset name="OrgXYZ"> 
    <description>The coding standard for Organization XYZ.</description> 
    <rule ref="PSR2"> 
     <exclude name="PSR2.Classes.ClassDeclaration.OpenBraceNewLine"/> 
     <exclude name="Generic.Functions.OpeningFunctionBraceBsdAllman.BraceOnSameLine"/> 
    </rule> 
</ruleset> 

Và thông điệp mà tôi đang cố gắng để loại bỏ từ báo cáo là thế này:

15 | ERROR | Opening brace should be on a new line 

Đây là nỗ lực đầu tiên của tôi tại một ruleset của riêng tôi và tôi thực sự thua lỗ ở đây. Tôi đã googled, tìm kiếm và thử tất cả mọi thứ nó có vẻ.

+0

Bạn có bao gồm ruleset của bạn trong dòng lệnh cho ngửi sử dụng không? –

+0

Có. Tìm thấy giải pháp mặc dù. Xem bên dưới :-) – FighterHayabusa

Trả lời

6

Đã tìm thấy sự cố. Tôi bị lạc trong những gì có trong bộ quy tắc PSR2 và loại trừ những điều sai trái. thêm này giải quyết nó:

<exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine"/> 
+0

Điều quan trọng cần lưu ý là việc loại trừ sniff này chỉ ngăn chặn lỗi khi đặt dấu ngoặc mở trên cùng một dòng. Nó không ** tự động đảm bảo rằng việc đặt dấu ngoặc mở trên một dòng _new_ được gắn cờ là một lỗi thay thế. Tôi chưa tìm thấy một sniff mà làm điều đó ... – beporter

+1

Generic.Functions.OpeningFunctionBraceKernighanRitchie.BraceOnNewLine sẽ gắn cờ dấu ngoặc mở dòng mới dưới dạng lỗi. – cmerriman

1

Cách để gỡ lỗi codesniffer, là sử dụng lá cờ -s, để lộ các ngửi gọi. Ví dụ

phpcs -s ugly.php 

Thêm kết quả để loại trừ thẻ trong phpcs.xml gốc dự án của bạn, chẳng hạn như bản demo của bạn

Các vấn đề liên quan