2012-05-14 21 views
7

Tôi đang cố gắng bằng cách nào đó thuyết phục các phpcs sử dụng hướng dẫn mã hóa Zend, nhưng để cho phép tôi có các biến có dấu gạch dưới (như $blub->foo_bar).Quy tắc tùy chỉnh cho phpcs sử dụng PHPStorm

Bất cứ ai có thể cho tôi biết cách thay đổi ruleset mà phpcs sử dụng từ bên trong PHPStorm, vui lòng?

Trả lời

11

Bạn sẽ cần phải tạo một tiêu chuẩn mã hóa tùy chỉnh nếu bạn muốn ghi đè lên các mã được tích hợp sẵn. Đây chỉ là vấn đề tạo một tệp XML với định nghĩa của tiêu chuẩn trong đó.

Trong trường hợp của bạn, bạn muốn toàn bộ tiêu chuẩn mã hóa Zend, nhưng bạn không muốn quy tắc quy ước đặt tên cụ thể về tên biến. Vì vậy, bạn sẽ tạo ra một tập tin gọi là mystandard.xml (tên nó bất cứ điều gì bạn muốn và đặt nó nơi nào bạn muốn) và đưa vào các nội dung sau:

<?xml version="1.0"?> 
<ruleset name="MyStandard"> 
<description>My custom Zend coding standard.</description> 
<rule ref="Zend"> 
    <exclude name="Zend.NamingConventions.ValidVariableName"/> 
</rule> 
</ruleset> 

Có rất nhiều hơn bạn có thể làm để tùy chỉnh tiêu chuẩn của bạn, bao gồm đưa vào kiểm tra từ các tiêu chuẩn khác, ghi đè tin nhắn hoặc tắt tiếng một số trong số họ. Bạn có thể xem tài liệu tại đây: http://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php

Cuối cùng tôi đã kiểm tra, PHPStorm không cho phép bạn sử dụng các tiêu chuẩn mã hóa tùy chỉnh vì bất kỳ lý do gì. Thông thường, bạn chỉ cần nhập tên của tiêu chuẩn làm đường dẫn đầy đủ đến tệp mystandard.xml. Nếu PHPStorm vẫn không cho phép bạn làm điều đó, cách duy nhất để lừa nó là thực sự cài đặt tiêu chuẩn tùy chỉnh của bạn.

Lưu ý rằng đây không phải là điều bạn thường cần làm và điều này hơi phức tạp. Nhưng nếu bạn muốn thử nó, đây là cách bạn làm điều đó:

  1. Tìm nơi PHPCS được cài đặt trên hệ thống của bạn. Nếu bạn không biết nó ở đâu, hãy thử pear config-show | grep php_dir. PHP_CodeSniffer sẽ nằm trong một thư mục bên dưới. Đối với tôi, PEAR được cài đặt trong /usr/local/PEAR, vì vậy PHP_CodeSniffer được tìm thấy ở /usr/local/PEAR/PHP/CodeSniffer
  2. Tạo một thư mục mới có tên gọi MyStandard dưới /usr/local/PEAR/PHP/CodeSniffer/Standards
  3. Đặt tập tin mystandard.xml của bạn trực tiếp trong đó nhưng đổi tên nó để ruleset.xml

Để xác nhận của bạn tiêu chuẩn đã được cài đặt, chạy phpcs -i. Bạn sẽ thấy

The installed coding standards are MySource, MyStandard, PEAR, PHPCS, Squiz and Zend 

Bây giờ, PHPStorm sẽ hiển thị (hy vọng) MyStandard như một tùy chọn trong trình đơn thả xuống. Nếu nó không hiển thị, thì chúng có thể đã được mã hóa cứng trong danh sách và sẽ không có cách nào để làm cho nó hoạt động mà không cần hack trực tiếp tiêu chuẩn mã hóa Zend.

Tôi hy vọng thông tin đó sẽ giúp bạn tìm ra giải pháp. Nếu không, bạn luôn có thể chạy PHPCS trực tiếp trên dòng lệnh bằng cách sử dụng tiêu chuẩn tùy chỉnh của bạn:

phpcs --standard=/path/to/mystandard.xml /path/to/code 
0

Danh sách tiêu chuẩn không được mã hóa cứng, nó thu được từ phpcs. Cài đặt tiêu chuẩn của riêng bạn như mô tả ở trên sẽ thực hiện công việc.

+0

Tôi đã dành phần tốt hơn buổi chiều để cố gắng làm việc này. PHPStorm thậm chí sẽ không tải danh sách các tiêu chuẩn đã cài đặt, các tùy chọn duy nhất trong cài đặt thanh tra là trống và tùy chỉnh, và thậm chí chọn tùy chỉnh tùy chọn xác thực không bao giờ hiển thị. Tôi có thể nhận được phpcs để chạy CLI đúng cách nhưng nó sẽ được tốt đẹp để có nó làm việc theo quy định trong các tài liệu cho PHPStorm. –

2

Có thể thêm bộ quy tắc tùy chỉnh của riêng bạn vào phpstorm, điều này có thể được thực hiện trong cài đặt dự án => inspections => "Xác thực Sniffer PHP Code", sử dụng tiêu chuẩn mã hóa "Tùy chỉnh" và đặt thư mục gốc của ruleset tùy chỉnh.xml