Hướng dẫn phpcs only php files - phpcs chỉ các tệp php

Sử dụng nâng cao - Thông tin sử dụng nâng cao

Chỉ định các phần mở rộng tệp hợp lệ

Theo mặc định, PHP_CodesNiffer sẽ kiểm tra bất kỳ tệp nào mà nó tìm thấy với tiện ích mở rộng


$ phpcs --extensions=php,inc,lib /path/to/code
9 hoặc

$ phpcs --extensions=php /path/to/code/main.inc
0. Đôi khi, điều này có nghĩa là PHP_CodesNiffer không kiểm tra đủ các tệp của bạn. Đôi khi, điều ngược lại là đúng. PHP_CodesNiffer cho phép bạn chỉ định danh sách các tiện ích mở rộng tệp hợp lệ bằng đối số dòng lệnh

$ phpcs --extensions=php /path/to/code/main.inc
1. Phần mở rộng được phân tách bằng dấu phẩy.

Chỉ kiểm tra các tệp


$ phpcs --extensions=php /path/to/code/main.inc
0


$ phpcs --extensions=php /path/to/code

Chỉ kiểm tra các tệp


$ phpcs --extensions=php /path/to/code/main.inc
0,

$ phpcs --extensions=php,inc,lib /path/to/code
9 và

$ phpcs --extensions=php /path/to/code/main.inc
5


$ phpcs --extensions=php,inc,lib /path/to/code

Nếu bạn đã yêu cầu PHP_CodesNiffer kiểm tra một tệp cụ thể thay vì toàn bộ thư mục, phần mở rộng của tệp được chỉ định sẽ bị bỏ qua. Tệp sẽ được kiểm tra ngay cả khi nó có tiện ích mở rộng không hợp lệ hoặc không có tiện ích mở rộng nào cả. Trong ví dụ sau, tệp main.inc sẽ được kiểm tra bởi php_codesniffer mặc dù đối số dòng lệnh

$ phpcs --extensions=php /path/to/code/main.inc
1 chỉ định rằng chỉ kiểm tra các tệp

$ phpcs --extensions=php /path/to/code/main.inc
0.
In the following example, the main.inc file will be checked by PHP_CodeSniffer even though the

$ phpcs --extensions=php /path/to/code/main.inc
1 command line argument specifies that only

$ phpcs --extensions=php /path/to/code/main.inc
0 files should be checked.

Tiện ích mở rộng bị bỏ qua khi kiểm tra tệp cụ thể


$ phpcs --extensions=php /path/to/code/main.inc

Việc bỏ qua các tiện ích mở rộng tệp cho các tệp cụ thể là một tính năng của PHP_CodesNiffer và là cách duy nhất để kiểm tra các tệp mà không có tiện ích mở rộng. Nếu bạn kiểm tra toàn bộ thư mục của các tệp, tất cả các tệp không có tiện ích mở rộng sẽ bị bỏ qua, vì vậy bạn phải kiểm tra riêng từng tệp này.

Bỏ qua các tệp và thư mục

Đôi khi bạn muốn PHP_CodesNiffer chạy qua một số lượng rất lớn các tệp, nhưng bạn muốn một số tệp và thư mục bị bỏ qua. Đối số dòng lệnh


$ phpcs --extensions=php /path/to/code/main.inc
8 có thể được sử dụng để nói với PHP_CodesNiffer để bỏ qua các tệp và các thư mục phù hợp với một hoặc nhiều mẫu.

Trong ví dụ sau, PHP_CodesNiffer sẽ bỏ qua tất cả các tệp bên trong các thư mục


$ phpcs --extensions=php /path/to/code/main.inc
9 và

$ phpcs --ignore=*/tests/*,*/data/* /path/to/code
0 của gói. Điều này rất hữu ích nếu bạn đang kiểm tra gói PEAR nhưng không muốn các tệp thử nghiệm hoặc dữ liệu của bạn phù hợp với tiêu chuẩn mã hóa của bạn.

Bỏ qua các tệp kiểm tra và dữ liệu


$ phpcs --ignore=*/tests/*,*/data/* /path/to/code

Bạn cũng có thể nói với PHP_CodesNiffer để bỏ qua một tệp bằng một nhận xét đặc biệt được chèn ở đầu tệp. Điều này sẽ dừng tệp đang được kiểm tra ngay cả khi nó không khớp với mẫu bỏ qua.

Bỏ qua một tệp bằng cách sử dụng một bình luận


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>

Bỏ qua các phần của tệp

Một số phần trong mã của bạn có thể không thể phù hợp với tiêu chuẩn mã hóa của bạn. Ví dụ: bạn có thể phải phá vỡ tiêu chuẩn của mình để tích hợp với thư viện bên ngoài hoặc dịch vụ web. Để dừng các lỗi tạo PHP_CodesNiffer cho mã này, bạn có thể bọc nó trong các nhận xét đặc biệt. Php_codesniffer sau đó sẽ ẩn tất cả các lỗi và cảnh báo được tạo cho các dòng mã này.

Bỏ qua các phần của tệp bằng cách sử dụng nhận xét


$xmlPackage = new XMLPackage;
// @codingStandardsIgnoreStart
$xmlPackage['error_code'] = get_default_error_code_value();
// @codingStandardsIgnoreEnd
$xmlPackage->send();

Giới hạn kết quả đối với các đánh hơi cụ thể

Theo mặc định, PHP_CodesNiffer sẽ kiểm tra mã của bạn bằng tất cả các đánh hơi trong tiêu chuẩn được chỉ định. Đôi khi bạn có thể muốn tìm thấy tất cả các lần xuất hiện của một lỗi để loại bỏ nó nhanh hơn hoặc hiểu phạm vi của vấn đề. PHP_CODESNiffer cho phép bạn chỉ định danh sách đánh hơi để hạn chế kết quả sử dụng đối số dòng lệnh


$ phpcs --ignore=*/tests/*,*/data/* /path/to/code
1. Sniff được phân tách bằng dấu phẩy.

Chỉ kiểm tra các tệp cho hai lần đánh hơi cụ thể


$ phpcs --standard=PEAR --sniffs=Generic.PHP.LowerCaseConstant,PEAR.WhiteSpace.ScopeIndent /path/to/code

Tính năng này là một bộ lọc tin nhắn và không phải là một cách nhanh chóng để xác định tiêu chuẩn mã hóa tùy chỉnh. Tất cả các đánh hơi được chỉ định trên dòng lệnh theo cách này phải được sử dụng trong tiêu chuẩn mã hóa bạn đang sử dụng để kiểm tra các tệp của bạn. Ví dụ, bạn không thể giới hạn kết quả để đánh hơi trong khi sử dụng tiêu chuẩn lê vì tiêu chuẩn lê không bao gồm các đánh hơi này.
Để xem mã nguồn cho các thông báo lỗi, hãy sử dụng đối số dòng lệnh

$ phpcs --ignore=*/tests/*,*/data/* /path/to/code
2. Điều này sẽ in mã nguồn trong các báo cáo đầy đủ, tóm tắt và nguồn.

Lọc lỗi và cảnh báo dựa trên mức độ nghiêm trọng

Theo mặc định, PHP_CodesNiffer chỉ định mức độ nghiêm trọng của


$ phpcs --ignore=*/tests/*,*/data/* /path/to/code
3 cho tất cả các lỗi và cảnh báo. Các tiêu chuẩn, đặc biệt là các tiêu chuẩn tùy chỉnh, có thể thay đổi mức độ nghiêm trọng của một số tin nhắn để chúng được ẩn theo mặc định hoặc thậm chí để chúng được nâng lên để chỉ ra tầm quan trọng lớn hơn. PHP_CodesNiffer cho phép bạn quyết định mức độ nghiêm trọng tối thiểu phải là gì để hiển thị một thông báo trong báo cáo của mình bằng đối số dòng lệnh

$ phpcs --ignore=*/tests/*,*/data/* /path/to/code
4.

Che giấu lỗi và cảnh báo với mức độ nghiêm trọng ít hơn 3


$ phpcs --severity=3 /path/to/code

Bạn có thể chỉ định các giá trị khác nhau cho các lỗi và cảnh báo bằng cách sử dụng các đối số dòng lệnh


$ phpcs --ignore=*/tests/*,*/data/* /path/to/code
5 và

$ phpcs --ignore=*/tests/*,*/data/* /path/to/code
6.

Hiển thị tất cả các lỗi nhưng chỉ cảnh báo với mức độ nghiêm trọng từ 8 trở lên


$ phpcs --error-severity=1 --warning-severity=8 /path/to/code

Đặt mức độ nghiêm trọng của các cảnh báo thành

$ phpcs --ignore=*/tests/*,*/data/* /path/to/code
7 giống như sử dụng đối số dòng lệnh

$ phpcs --ignore=*/tests/*,*/data/* /path/to/code
8. Nếu bạn đặt mức độ nghiêm trọng của các lỗi thành

$ phpcs --ignore=*/tests/*,*/data/* /path/to/code
7 PHP_CodesNiffer sẽ không hiển thị bất kỳ lỗi nào, điều này có thể hữu ích nếu bạn chỉ muốn hiển thị các cảnh báo.
Tính năng này đặc biệt hữu ích trong quá trình đánh giá mã thủ công. Trong quá trình phát triển bình thường hoặc bản dựng tự động, bạn có thể chỉ muốn kiểm tra các vấn đề định dạng mã trong khi trong quá trình xem xét mã, bạn có thể muốn hiển thị các lỗi và cảnh báo ít nghiêm trọng hơn có thể cần xem xét ngang hàng thủ công.

Thay thế các tab bằng khoảng trống

Hầu hết các đánh hơi được viết cho PHP_CodesNiffer không hỗ trợ việc sử dụng các tab để thụt và căn chỉnh. Bạn có thể viết những tiếng ngửi của riêng mình kiểm tra các tab thay vì không gian, nhưng bạn cũng có thể nhận PHP_CodesNiffer để chuyển đổi các tab của bạn thành không gian trước khi kiểm tra tệp. Điều này cho phép bạn sử dụng các đánh hơi dựa trên không gian hiện có trên các tệp dựa trên tab của bạn.

Trong ví dụ sau, PHP_CodesNiffer sẽ thay thế tất cả các tab trong các tệp được kiểm tra bằng từ 1 đến 4 khoảng trắng, tùy thuộc vào cột mà tab chỉ ra.

Chuyển đổi tab thành không gian


$ phpcs --tab-width=4 /path/to/code

Chỉ định một mã hóa

Một số Php_CodesNiffer báo cáo đầu ra XML được mã hóa UTF-8, có thể gây ra sự cố nếu các tệp của bạn đã được mã hóa UTF-8. Trong trường hợp này, một số nội dung từ các tệp của bạn (thường nhận xét) được sử dụng trong các thông báo lỗi và có thể được mã hóa gấp đôi. Để giúp các báo cáo mã hóa PHP_CodesNiffer một cách chính xác, bạn có thể chỉ định mã hóa các tệp nguồn của mình bằng đối số dòng lệnh


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
0.

Chỉ định mã hóa UTF-8


$ phpcs --extensions=php,inc,lib /path/to/code
0

Mã hóa mặc định được sử dụng bởi PHP_CodesNiffer là ISO-8859-1.

Chỉ định cài đặt php.ini

PHP_CodesNiffer cho phép bạn đặt cài đặt php.ini tạm thời trong quá trình chạy bằng đối số dòng lệnh


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
1. Tên của cài đặt php.ini phải được chỉ định trên dòng lệnh, nhưng giá trị là tùy chọn. Nếu không có giá trị được đặt, cài đặt php.ini sẽ được cung cấp một giá trị true.

Chỉ định giới hạn bộ nhớ


$ phpcs --extensions=php,inc,lib /path/to/code
1

Chỉ định nhiều giá trị


$ phpcs --extensions=php,inc,lib /path/to/code
2

Đặt tùy chọn cấu hình

PHP_CodesNiffer có một số tùy chọn cấu hình có thể được đặt. Các tiêu chuẩn mã hóa cá nhân cũng có thể yêu cầu các tùy chọn cấu hình được đặt trước khi có thể sử dụng chức năng. Xem danh sách đầy đủ các tùy chọn cấu hình.

Để đặt tùy chọn cấu hình, hãy sử dụng đối số dòng lệnh


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
2.

Đặt tùy chọn cấu hình


$ phpcs --extensions=php,inc,lib /path/to/code
3

Xóa các tùy chọn cấu hình

PHP_CodesNiffer cho phép bạn xóa bất kỳ tùy chọn cấu hình nào, hoàn nguyên nó về giá trị mặc định của nó. Xem danh sách đầy đủ các tùy chọn cấu hình.

Để xóa tùy chọn cấu hình, hãy sử dụng đối số dòng lệnh


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
3.

Xóa tùy chọn cấu hình


$ phpcs --extensions=php,inc,lib /path/to/code
4

Xem các tùy chọn cấu hình

Để xem các tùy chọn cấu hình hiện đang được đặt, hãy sử dụng đối số dòng lệnh


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
4.

Xem các tùy chọn cấu hình


$ phpcs --extensions=php,inc,lib /path/to/code
5

In đầu ra inkeniser in

Tính năng này chỉ được cung cấp cho mục đích gỡ lỗi. Sử dụng tính năng này sẽ tăng đáng kể thời gian chạy màn hình và kịch bản.

PHP_CodesNiffer chứa nhiều mức độ xác suất. Cấp độ 2 (được biểu thị bằng đối số dòng lệnh


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
5) sẽ in tất cả thông tin về tính xác suất cho cấp 1 (mã thông báo cụ thể và số lượng dòng với thời gian chạy) cũng như đầu ra tokeniser verbose.

Đầu ra của tokeniser PHP_CodesNiffer cho thấy việc tạo từng bước của bản đồ phạm vi và bản đồ cấp độ.

Bản đồ phạm vi

Bản đồ phạm vi được giải thích tốt nhất với một ví dụ. Đối với tệp sau:


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
6

Đầu ra bản đồ phạm vi là:

Đầu ra bản đồ phạm vi mẫu


$ phpcs --extensions=php,inc,lib /path/to/code
6

Đầu ra bản đồ phạm vi ở trên hiển thị các phần thông tin sau đây về tệp:

  • Một mã thông báo phạm vi,


    // @codingStandardsIgnoreFile
    $xmlPackage = new XMLPackage;
    $xmlPackage['error_code'] = get_default_error_code_value();
    $xmlPackage->send();
    ?>
    7, đã được tìm thấy tại mã thông báo 1 (lưu ý rằng mã thông báo 0 là thẻ PHP mở).

  • Người mở cho câu lệnh


    // @codingStandardsIgnoreFile
    $xmlPackage = new XMLPackage;
    $xmlPackage['error_code'] = get_default_error_code_value();
    $xmlPackage->send();
    ?>
    7, nẹp xoăn mở, được tìm thấy ở mã thông báo 7.

  • Càng gần đối với tuyên bố


    // @codingStandardsIgnoreFile
    $xmlPackage = new XMLPackage;
    $xmlPackage['error_code'] = get_default_error_code_value();
    $xmlPackage->send();
    ?>
    7, nẹp xoăn gần, được tìm thấy ở mã thông báo 15.

  • Mã thông báo 8 - 15 đều được bao gồm trong phạm vi được đặt bởi bộ mở phạm vi tại mã thông báo 7, nẹp xoăn mở. Điều này chỉ ra rằng các mã thông báo này đều nằm trong câu lệnh


    // @codingStandardsIgnoreFile
    $xmlPackage = new XMLPackage;
    $xmlPackage['error_code'] = get_default_error_code_value();
    $xmlPackage->send();
    ?>
    7.

Đầu ra bản đồ phạm vi là hữu ích nhất khi gỡ lỗi bản đồ phạm vi của PHP_CodesNiffer, điều này rất quan trọng đối với việc kiểm tra thành công một tệp, nhưng cũng hữu ích cho việc kiểm tra loại mã thông báo cụ thể. Ví dụ: nếu bạn không chắc chắn về loại mã thông báo cho nẹp xoăn mở, đầu ra bản đồ phạm vi cho bạn thấy rằng loại là T_OPEN_CURLY_BRACKET và không, ví dụ, T_OPEN_CURLY_BRACE.T_OPEN_CURLY_BRACKET and not, for example, T_OPEN_CURLY_BRACE.

Bản đồ cấp độ

Bản đồ cấp độ được giải thích tốt nhất với một ví dụ. Đối với tệp sau:


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
6

Đầu ra bản đồ cấp là:

Đầu ra bản đồ cấp mẫu


$ phpcs --extensions=php,inc,lib /path/to/code
7

Đầu ra bản đồ cấp trên cho thấy các phần thông tin sau đây về tệp:

  • Một mở phạm vi, một nẹp xoăn mở, đã được tìm thấy tại mã thông báo 7 và mở phạm vi cho một câu lệnh


    // @codingStandardsIgnoreFile
    $xmlPackage = new XMLPackage;
    $xmlPackage['error_code'] = get_default_error_code_value();
    $xmlPackage->send();
    ?>
    7, được xác định tại mã thông báo 1.

  • Mã thông báo 8 - 15 đều được bao gồm trong phạm vi được đặt bởi bộ mở phạm vi tại mã thông báo 7, nẹp xoăn mở. Tất cả các mã thông báo này ở cấp 1, cho thấy chúng được đặt trong 1 điều kiện phạm vi và tất cả các mã thông báo này được đặt trong một điều kiện duy nhất; một tuyên bố


    // @codingStandardsIgnoreFile
    $xmlPackage = new XMLPackage;
    $xmlPackage['error_code'] = get_default_error_code_value();
    $xmlPackage->send();
    ?>
    7.

Bản đồ cấp được sử dụng phổ biến nhất để xác định các quy tắc thụt (ví dụ: độ sâu 4 mã thông báo DEEP yêu cầu 16 không gian thụt lề) hoặc để xác định xem một mã thông báo cụ thể có nằm trong phạm vi cụ thể không (ví dụ: từ khóa


$xmlPackage = new XMLPackage;
// @codingStandardsIgnoreStart
$xmlPackage['error_code'] = get_default_error_code_value();
// @codingStandardsIgnoreEnd
$xmlPackage->send();
4 nằm trong phạm vi lớp, tạo ra nó là một phương pháp).

In đầu ra xử lý mã thông báo dài dòng

Tính năng này chỉ được cung cấp cho mục đích gỡ lỗi. Sử dụng tính năng này sẽ tăng đáng kể thời gian chạy màn hình và kịch bản.

PHP_CodesNiffer chứa nhiều mức độ xác suất. Cấp độ 3 (được biểu thị bằng đối số dòng lệnh


$xmlPackage = new XMLPackage;
// @codingStandardsIgnoreStart
$xmlPackage['error_code'] = get_default_error_code_value();
// @codingStandardsIgnoreEnd
$xmlPackage->send();
5) sẽ in tất cả thông tin tính xác thực cho cấp 1 (mã thông báo cụ thể và số lượng dòng với thời gian chạy), cấp 2 (đầu ra tokeniser) cũng như đầu ra xử lý mã thông báo với thời gian chạy ngửi.

Đầu ra xử lý mã thông báo được giải thích tốt nhất với một ví dụ. Đối với tệp sau:


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
6

Đầu ra xử lý mã thông báo là:

Đầu ra xử lý mã thông báo mẫu


$ phpcs --extensions=php,inc,lib /path/to/code
8

Mỗi mã thông báo được xử lý được hiển thị, cùng với ID, loại và nội dung của nó. Đối với mỗi mã thông báo, tất cả các đánh hơi được thực thi trên mã thông báo được hiển thị, cùng với thời gian chạy.

Ví dụ: đầu ra ở trên cho chúng ta thấy rằng mã thông báo 1, từ khóa


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
7, đã thực hiện 3 lần đánh hơi trên đó; Việc đánh hơi điều khiển, spoPeclosingBrace đánh hơi và đánh hơi khắt khe. Mỗi người được thực hiện khá nhanh, nhưng điều chậm nhất là sniff scopeclosingbrace, mất 0,0248 giây để xử lý mã thông báo đó.

Một mẩu thông tin thú vị khác mà chúng ta nhận được từ đầu ra ở trên là chỉ có 2 mã thông báo trong toàn bộ tệp đã đánh hơi được thực hiện trên chúng; Mã thông báo 0 và 1. Đây là hành vi bình thường đối với PHP_CodesNiffer khi hầu hết các đánh hơi nghe cho một mã thông báo rất cụ thể và hiếm khi được sử dụng và sau đó thực thi trên nó và một số mã thông báo theo nó.

Ví dụ: ScopeAndentSniff chỉ thực hiện trên mã thông báo của câu lệnh


// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
7, nhưng thực sự kiểm tra vết lõm của mọi dòng trong câu lệnh

// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
7. Sniff sử dụng bản đồ phạm vi để tìm tất cả các mã thông báo trong câu lệnh

// @codingStandardsIgnoreFile
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
?>
7.