2012-11-12 20 views
6

Gần đây chúng tôi đã di chuyển sang git và triển khai (cho bài đăng bây giờ) nhận các móc trên máy chủ trung tâm của chúng tôi để gửi báo cáo cho các nhà phát triển, cũng như thực hiện một số công cụ cho phép chúng tôi kiểm tra mã hóa bằng phpcs trên môi trường phát triển của chúng tôi.Tôi có thể ghi đè lên các ruleset phpcs được sử dụng cho mỗi tập tin nếu như vậy, làm thế nào?

Đây là tất cả tốt đẹp và dandy, hoạt động tốt, nhưng chúng tôi muốn có thể luôn phụ thuộc vào tiêu chuẩn mã của chúng tôi, không bỏ qua mọi tệp không phù hợp với lý do logic. Bây giờ, chúng tôi có ruleset riêng của chúng tôi ghi đè một số nội dung trong tiêu chuẩn PEAR mặc định, nhưng chúng tôi muốn tiến xa hơn một chút nếu có thể.

Vấn đề của chúng tôi là mặc dù tiêu chuẩn PEAR hoàn hảo cho tất cả các lớp/logic nghiệp vụ nhưng trong các tệp xem chúng tôi muốn nới lỏng các quy tắc để nói, dấu ngoặc đóng cần phải nằm trên dòng riêng của chúng. Vấn đề là chúng ta chủ yếu định nghĩa html trong các tệp này và cấu trúc điều khiển duy nhất mà chúng ta có là các câu lệnh if-else hoặc foreach đơn giản, và mở php, sau đó thêm một dòng mới, khung đóng, dòng mới và php đóng là một chút im lặng.

buộc cú pháp có giá trị:

<?php 
} 
// end of some if statement ?> 

Những gì chúng ta thay vì muốn sử dụng cho quan điểm:

<?php } // end of some if statement ?> 

Điều này sẽ làm cho mã của chúng tôi có thể đọc thêm ...

Chúng tôi không thích cú pháp thay thế như wel (if(..): ... endif;), afaik chủ yếu vì cũng có một số vấn đề về tính hợp lệ ở đây (tất cả là về khoảng trống ...).

Bỏ qua toàn bộ tệp (với // @codingStandardsIgnoreFile) không phải là tùy chọn cho chúng tôi.

tl; dr

Vì vậy, những gì chúng tôi muốn làm là xác định một ruleset riêng biệt cho các tập tin quan điểm của chúng tôi nên chúng tôi vẫn có một tiêu chuẩn phải tuân theo nhưng với những quy định thoải mái trên những mặt trận do đó, mã của chúng tôi có thể vẫn có thể đọc được.

Tôi không quá hiểu biết về phpcs, và không thể tìm thấy bất kỳ giải pháp bản thân mình bằng cách sử dụng từ khóa tôi mặc dù là hợp lý ... Bất kỳ đề xuất để làm cho các tệp xem gọn gàng cũng phù hợp với PEAR cũng được hoan nghênh ...

Trả lời

6

Nếu chỉ có một vài thư bạn muốn loại trừ khỏi một số tệp, thì bạn có thể đặt các loại trừ này trực tiếp vào tệp ruleset.xml của mình. Ví dụ:

<!-- 
    You can also be more specific and just exclude some messages. 
    Please note that all message-specific ignore patterns are 
    checked using absolute paths. 

    The code here will just hide the ContainsVar error generated by the 
    Squiz DoubleQuoteUsage sniff for files that match either of the two 
    exclude patterns. 
--> 
<rule ref="Squiz.Strings.DoubleQuoteUsage.ContainsVar"> 
    <exclude-pattern>*/tests/*</exclude-pattern> 
    <exclude-pattern>*/data/*</exclude-pattern> 
</rule> 

Tôi không chắc chắn nơi xem các file của bạn được lưu trữ, nhưng nếu bạn có thể kết hợp chúng sử dụng một mô hình loại trừ-(về cơ bản chỉ là một biểu thức chính quy) sau đó bạn sẽ có thể thư giãn một số các quy tắc trên chúng.

Cách tốt nhất để tìm ra rằng ref = "" bit là chạy phpcs trên các tệp xem của bạn và sử dụng đối số dòng lệnh -s. Đối với mỗi thư, bạn sẽ nhận được một mã duy nhất, sau đó bạn có thể sử dụng để thêm các mẫu loại trừ cụ thể vào ruleset của bạn.

Có nhiều thứ khác bạn có thể thực hiện trong các tệp ruleset. Check out the docs here.

+0

Quên đề cập: đảm bảo bạn đang sử dụng PHP_CodeSniffer phiên bản 1.4.2 (phiên bản ổn định mới nhất) vì có lỗi loại trừ quy tắc trong phiên bản 1.4.1. –

+0

Cảm ơn bạn, đó là cơ bản những gì tôi đang tìm kiếm. Tôi giữ vị trí của các tập tin xem cố tình mơ hồ vì chúng ở các vị trí khác nhau cho các loại dự án khác nhau. Chúng ta có thể tìm ra điều này :) – sg3s

+0

Aha! Chữ "-s" vừa tiết kiệm cho tôi rất nhiều thông qua Sniff. Cảm ơn :) – markdwhite

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