Nếu bản vá của bạn thay đổi phpc. xml. dist hoặc phpc. xml, nó sẽ chạy PHPCS đối với toàn bộ dự án
Nếu dự án của bạn không có tệp cấu hình phpcs, trình chạy thử nghiệm sẽ sử dụng Composer để yêu cầu phiên bản Coder mới nhất, sau đó chạy PHPCS đối với các tệp đã thay đổi với --standard=Drupal
Và cuối cùng. Nếu dự án của bạn có yêu cầu dựa trên Composer của một phiên bản cụ thể của Coder, trình chạy thử nghiệm sẽ cài đặt phiên bản đó, sau đó chạy PHPCS đối với các tệp đã vá hoặc toàn bộ dự án
Định cấu hình trình chạy thử nghiệm
Nếu bạn muốn ghi đè các tùy chọn mặc định của trình chạy thử, điều này có thể được thực hiện bằng cách chỉnh sửa phần
$ composer require --dev slevomat/coding-standard
7 trong $ composer require --dev slevomat/coding-standard
8build:
assessment:
validate_codebase:
phpcs:
# Whether to sniff all files, or only the files changed in the patch.
# Defaults to false.
sniff-all-files: true
# Whether to terminate the test when coding standards violations are
# detected. Note that this will not cause the test result to be marked
# as failed, but it will terminate at the "Build successful" stage.
# Remaining tests will not run.
# Defaults to false.
halt-on-fail: true
# The version of Coder to use. If omitted, this will default to the
# version of Coder specified in composer.json, or to the latest version.
coder-version: '^8.2@stable'
Cách chỉ định các tiêu chuẩn mã hóa Drupal
Trong phpc của dự án của bạn. xml[. dist], bạn nên chỉ định các lần đánh hơi mà bạn muốn là các lần đánh hơi. Thích đoạn này từ dự án Ví dụ dành cho nhà phát triển
Default PHP CodeSniffer configuration for Examples for Developers.
.
Các quy tắc được chỉ định bởi tên đánh hơi. Điều này trái ngược với lõi Drupal, chỉ định các quy tắc theo vị trí tệp. Đừng làm điều này. Sử dụng tên đánh hơi
Nếu bạn vẫn muốn có thể chạy PHPCS cục bộ, bạn có thể thêm gói dealerdirect/phpcodesniffer-composer-installer vào phần composer
$ composer require --dev slevomat/coding-standard
9 hoặc thêm phần sau vào phần
Default PHP CodeSniffer configuration for Examples for Developers.
.
0 của bạn
Thêm đánh hơi của bên thứ ba
DrupalCI hỗ trợ sẵn các bộ quy tắc sau. Zend, Squiz, PSR2, PSR12, PSR1, PEAR, MySource, DrupalPractice và Drupal. Có thể thêm các lần đánh hơi bổ sung bằng cách đưa bộ quy tắc vào
Default PHP CodeSniffer configuration for Examples for Developers.
.
1 và xác định quy tắc trong
Default PHP CodeSniffer configuration for Examples for Developers.
.
0. Dưới đây là một ví dụ bổ sung một số quy tắc từ bộ quy tắc slevmat/coding-standardĐầu tiên, thêm bộ quy tắc vào
Default PHP CodeSniffer configuration for Examples for Developers.
.
1$ composer require --dev slevomat/coding-standard
Sau đó, tùy chỉnh tệp
Default PHP CodeSniffer configuration for Examples for Developers.
.
0 của bạn với các quy tắc bạn muốn đưa vào. Ngoài ra, hãy đảm bảo đặt cấu hình
Default PHP CodeSniffer configuration for Examples for Developers.
.
3 thành đường dẫn của bộ quy tắc, liên quan đến vị trí cài đặt PHPCS [thường nằm trong thư mục
Default PHP CodeSniffer configuration for Examples for Developers.
.
4] Khi một dự án phát triển, nó trở nên cần thiết để duy trì và thực thi một số tiêu chuẩn được xác định cho mã. Các tiêu chuẩn như vậy giúp đạt được tính đồng nhất, khả năng đọc và khả năng bảo trì, bất kể kỹ sư đã viết mã. Đối với một dự án PHP, một trong những cách tốt nhất để thực thi các tiêu chuẩn đó là PHP_CodeSniffer [viết tắt là PHPCS]
PHPCS là một công cụ giúp phát hiện các hành vi vi phạm các tiêu chuẩn mã hóa được xác định trước. Nó cũng bao gồm một công cụ bổ sung có thể tự động sửa những vi phạm đó
điều kiện tiên quyết
Để hoàn thành hướng dẫn này, bạn chỉ cần cài đặt Composer trên toàn cầu
Về dự án
PHPCS là framework-agnostic, nhưng để đơn giản, chúng ta sẽ sử dụng nó với một dự án Laravel đơn giản. Dự án có tên là “Twilio Greeter”, hiển thị danh sách các lời chào phổ biến tùy thuộc vào ngôn ngữ mà người dùng chọn. Bạn có thể xem mã nguồn đầy đủ tại đây
Các tệp dự án mà chúng tôi quan tâm là
7. Bộ điều khiển chính của chúng tôi có phương thức$ composer install
8 lấy ngôn ngữ ưa thích từ tham số$ composer install
9 và gửi dữ liệu tới dạng xem để hiển thị$ composer install
0. Hiển thị danh sách được truyền vào từ WelcomeController$ php artisan serve
1. Tệp lộ trình dự án của chúng tôi$ php artisan serve
Bạn có thể tìm hiểu thêm về cách hoạt động của các tệp trên và Laravel nói chung từ tài liệu chính thức của Laravel
Thiết lập dự án
Sao chép ứng dụng lời chào của chúng tôi và thay đổi vào thư mục dự án với
Default PHP CodeSniffer configuration for Examples for Developers.
.
1Tiếp theo, chạy
$ composer install
để cài đặt các phụ thuộc dự án và
$ php artisan serve
để bắt đầu máy chủ. Ứng dụng của chúng tôi hiện có thể truy cập tại
$ php artisan serve
2Cài đặt PHPCS
Vì mong muốn chạy PHPCS CLI dưới dạng một lệnh độc lập, chúng tôi sẽ cài đặt nó trên toàn cầu bằng lệnh sau
Default PHP CodeSniffer configuration for Examples for Developers.
.
5Bạn có thể kiểm tra cài đặt của mình với
Default PHP CodeSniffer configuration for Examples for Developers.
.
6GHI CHÚ. Nếu bạn gặp lỗi tương tự như “không tìm thấy lệnh”, hãy đảm bảo rằng bạn đã đặt thư mục Composer bin trong PATH của mình [thường là
$ php artisan serve
3 đối với Linux và $ php artisan serve
4 đối với MacOS]sở thích của chúng tôi
Ứng dụng của chúng tôi hoạt động tốt sau khi sao chép, nhưng phong cách mã hóa có thể sử dụng một số cải tiến. PHPCS hỗ trợ rất nhiều tiêu chuẩn viết mã như PSR12, PSR2, PEAR và Zend. Bạn cũng có thể tạo các quy tắc của riêng mình nếu tất cả chúng đều mong muốn
Đối với trường hợp sử dụng của chúng tôi, chúng tôi muốn một số quy tắc như
- Khả năng hiển thị của tất cả các thuộc tính/phương thức phải được khai báo rõ ràng [PHP mặc định hiển thị công khai nếu không được cung cấp]
- Mở và đóng dấu ngoặc nhọn cho các phương thức phải nằm trên một dòng riêng
- Các lệnh gọi hàm trải rộng trên nhiều dòng chỉ nên có một đối số trên mỗi dòng e. g
Default PHP CodeSniffer configuration for Examples for Developers.
.
9May mắn thay cho chúng tôi, các tùy chọn của chúng tôi là thông thường và đã được bao phủ bởi tiêu chuẩn PSR12, vì vậy chúng tôi sẽ tiếp tục và sử dụng PSR12 làm cấu hình cơ sở của mình
Định cấu hình PHPCS cho Dự án của chúng tôi
Để bắt đầu, hãy tạo một tệp mới có tên là
$ php artisan serve
5 trong thư mục gốc của dự án với
1và thêm vào như sau
2Đoạn mã trên đã được nhận xét để cung cấp một số giải thích, nhưng bạn có thể tra cứu PHPCS wiki để xem các tùy chọn khác nhau mà bạn có thể cung cấp
Chạy thử nghiệm đầu tiên của chúng tôi
Tại thời điểm này, dự án của chúng tôi đã sẵn sàng và chúng tôi có thể kiểm tra các vi phạm ngay bây giờ. Trong thư mục gốc, chạy
Default PHP CodeSniffer configuration for Examples for Developers.
.
6Nếu mọi việc suôn sẻ, bạn sẽ thấy một kết quả tương tự như
4Sửa chữa khi chúng tôi đi
Báo cáo ở trên bao gồm các tệp và số dòng mà chúng tôi đã vi phạm các quy tắc. Chẳng hạn, chúng ta cần chỉ định khả năng hiển thị của phương thức trên dòng 8 và di chuyển dấu ngoặc mở trên dòng 18 sang một dòng mới
Một lối thoát nhanh sẽ là chạy
$ composer install
0trong thư mục dự án và PHPCS sẽ tự động cố gắng khắc phục các vi phạm được đánh dấu bằng
$ php artisan serve
6, nhưng hãy cố gắng tự khắc phục chúngTừ báo cáo của chúng tôi, tệp duy nhất chúng tôi cần xóa là
$ php artisan serve
7, vì vậy hãy mở tệp đó và thực hiện các chỉnh sửa sau. Đầu tiên, chúng tôi thêm một dòng trống giữa dòng 1 và 2 để nó trông giống như sau$ composer install
1Sau đó, chúng tôi chỉ định khả năng hiển thị cho phương pháp
$ php artisan serve
8 và di chuyển dấu ngoặc mở sang một dòng mới, vì vậy hãy thay thế$ composer install
2với
$ composer install
3Cuối cùng, chúng tôi đánh dấu phương thức lời chào của mình là
$ php artisan serve
9 [vì chúng tôi không cần gọi nó bên ngoài lớp WelcomeController]. Chúng tôi cũng sẽ di chuyển dấu ngoặc mở của nó sang một dòng mới như sau. Thay thế$ composer install
4Với
$ composer install
5GHI CHÚ. Phiên bản sạch của dự án nằm trên nhánh
Default PHP CodeSniffer configuration for Examples for Developers.
.
50 và bạn có thể xem nó bằng cách kiểm tra nhánh gọn gàng như vậy$ composer install
6Bây giờ, hãy chạy lại phpc và các lỗi của chúng ta sẽ biến mất
Sự kết luận
Nguyên tắc mã giúp giảm tải nhận thức cần thiết để làm việc trong một dự án có nhiều nhà phát triển và PHPCodeSniffer thực hiện tốt công việc đảm bảo tuân thủ các tiêu chuẩn đặt trước. Nếu bạn đang tìm cách xây dựng các quy tắc tùy chỉnh của riêng mình, thì các bộ quy tắc hiện có là một nơi tốt để bắt đầu
Tôi hy vọng bạn thích bài đăng này và nếu có bất kỳ vấn đề hoặc câu hỏi nào, vui lòng liên hệ với tôi qua Email hoặc trên Github