Thực đơn
PHPStan yêu cầu PHP >= 7. 2. Bạn phải chạy nó trong môi trường với PHP 7. x nhưng mã thực tế không phải sử dụng PHP 7. tính năng x. [Code viết cho PHP 5. 6 trở về trước có thể chạy trên 7. x hầu như không được sửa đổi. ]
PHPStan hoạt động tốt nhất với mã hướng đối tượng hiện đại. Mã của bạn càng được gõ mạnh, thì càng có nhiều thông tin bạn cung cấp cho PHPStan để làm việc với
Mã được chú thích và đánh máy đúng cách [thuộc tính lớp, đối số hàm và phương thức, kiểu trả về] không chỉ giúp các công cụ phân tích tĩnh mà cả những người khác làm việc với mã hiểu mã đó
Cài đặt
Để bắt đầu thực hiện phân tích trên mã của bạn, hãy yêu cầu PHPStan trong Composer
composer require --dev phpstan/phpstan
Trình soạn thảo sẽ cài đặt tệp thực thi của PHPStan trong
vendor/bin/phpstan analyse src tests
4 của nó, mặc định là vendor/bin/phpstan analyse src tests
5Bạn cũng có thể tải xuống PHAR mới nhất và chỉ cần sử dụng. Nhưng nếu không có Composer, bạn sẽ không thể cài đặt và sử dụng các tiện ích mở rộng PHPStan
Đi đến đây nếu bạn muốn sử dụng PHPStan trong Docker
Lần chạy đầu tiên
Để PHPStan phân tích cơ sở mã của bạn, bạn phải sử dụng lệnh
vendor/bin/phpstan analyse src tests
6 và trỏ nó đến đúng thư mụcVì vậy, ví dụ nếu bạn có các lớp của mình trong các thư mục
vendor/bin/phpstan analyse src tests
7 và vendor/bin/phpstan analyse src tests
8, bạn có thể chạy PHPStan như thế nàyvendor/bin/phpstan analyse src tests
Bạn chỉ nên phân tích các tệp có mã do chính bạn viết. Không cần phải phân tích thư mục
vendor/bin/phpstan analyse src tests
9 với sự phụ thuộc của bên thứ 3 vì bạn không có khả năng sửa chữa tất cả các lỗi do nhà phát triển mà bạn không làm việc trực tiếp gây raCó, PHPStan cần biết về tất cả các lớp, giao diện, đặc điểm và chức năng mà mã của bạn sử dụng, nhưng điều đó đạt được thông qua khám phá các ký hiệu, chứ không phải bằng cách đưa các tệp vào phân tích
Tìm hiểu thêm về các tùy chọn dòng lệnh »
PHPStan có thể sẽ tìm thấy một số lỗi, nhưng đừng lo, mã của bạn có thể vẫn ổn. Lỗi được tìm thấy trong lần chạy đầu tiên có xu hướng
- Các đối số bổ sung được truyền cho các hàm [e. g. hàm yêu cầu hai đối số, mã vượt qua ba]
- Các đối số bổ sung được truyền cho các hàm print/sprintf [e. g. chuỗi định dạng chứa một trình giữ chỗ, mã sẽ chuyển hai giá trị để thay thế]
- Lỗi rõ ràng trong mã chết
- Các ký hiệu không xác định - như “không tìm thấy lớp”. Xem Khám phá các biểu tượng để biết thêm chi tiết
Theo mặc định, PHPStan chỉ chạy các kiểm tra cơ bản nhất. Đi tới Cấp độ quy tắc để tìm hiểu cách bật kiểm tra chặt chẽ hơn
Mã của bạn thường sẽ chạy tốt cho đến ngày máy chủ sản xuất của bạn gặp sự cố do lỗi bạn đã mắc phải ba tháng trước khi tái cấu trúc mã kế thừa hiếm khi chạy
Đó là những gì PHPStan đã được tạo ra cho. nó tìm thấy lỗi trong mã của bạn mà không thực sự chạy mã đó và phát hiện toàn bộ lớp lỗi ngay cả trước khi bạn viết kiểm tra mã
Điều này được gọi là phân tích tĩnh
Nó đưa PHP đến gần hơn với các ngôn ngữ được biên dịch theo nghĩa là có thể kiểm tra tính chính xác của từng dòng mã trước khi bạn chạy dòng thực tế trên máy chủ của mình
Cài đặt
Nhập PHPStan vào dự án của bạn bằng cách sử dụng lệnh
composer require --dev phpstan/phpstan
0composer require --dev phpstan/phpstan
Và sau đó chạy nó bằng cách sử dụng công cụ CLI của nó
vendor/bin/phpstan analyse src
Điều này sẽ chạy PHPStan trên thư mục
vendor/bin/phpstan analyse src tests
7 của bạn và phân tích mã của bạnĐầu ra CLI của PHPStan
Sử dụng tệp cấu hình
PHPStan có nhiều tùy chọn có thể được chuyển vào CLI dưới dạng tham số [chẳng hạn như mức độ phân tích, đường dẫn được phân tích, v.v. ] nhưng cách dễ nhất để chạy PHPStan với các tùy chọn này là sử dụng tệp NEON
NEON tương tự như YAML. Đây là giao diện của tệp cấu hình PHPStan cơ bản
parameters:
level: 6
paths:
- src
- tests
Mức có thể được đặt thành bất kỳ số nguyên nào trong khoảng từ 0 đến 9. Dưới đây là tổng quan ngắn gọn về những gì được kiểm tra ở mỗi cấp độ. Các cấp độ được tích lũy — ví dụ: chạy cấp độ 5 cũng cung cấp cho bạn tất cả các lần kiểm tra từ cấp độ 0–4
- Kiểm tra cơ bản, lớp không xác định, hàm không xác định, phương thức không xác định được gọi trên
composer require --dev phpstan/phpstan
2, sai số lượng đối số được truyền cho các phương thức và hàm đó, biến luôn không xác định - Có thể là các biến không xác định, các phương thức và thuộc tính ma thuật không xác định trên các lớp có
composer require --dev phpstan/phpstan
3 vàvendor/bin/phpstan analyse src
0 - Đã kiểm tra các phương thức không xác định trên tất cả các biểu thức [không chỉ
composer require --dev phpstan/phpstan
2], xác thực PHPDocs - Kiểu trả về, kiểu được gán cho thuộc tính
- Kiểm tra mã chết cơ bản — luôn sai
vendor/bin/phpstan analyse src
2 và các loại kiểm tra khác, nhánhvendor/bin/phpstan analyse src
3 chết, mã không truy cập được sau khi trả lại; - Kiểm tra các loại đối số được truyền cho các phương thức và hàm
- Báo cáo lỗi đánh máy
- Báo cáo các loại kết hợp sai một phần - nếu bạn gọi một phương thức chỉ tồn tại trên một số loại trong loại kết hợp, cấp 7 bắt đầu báo cáo điều đó;
- Báo cáo các phương thức gọi và truy cập các thuộc tính trên các loại nullable
- Hãy nghiêm ngặt về loại
vendor/bin/phpstan analyse src
4 - thao tác được phép duy nhất mà bạn có thể thực hiện với nó là chuyển nó cho mộtvendor/bin/phpstan analyse src
4 khác
Chạy PHPStan với tệp cấu hình này được thực hiện bằng cách thêm cờ
vendor/bin/phpstan analyse src
6 vào lệnhvendor/bin/phpstan analyse src tests
1Đây là trang tham khảo cấu hình đầy đủ trên trang web chính thức của PHPStan
Tiện ích mở rộng
PHPStan có thể tận dụng các tiện ích mở rộng để hiểu rõ hơn một số đoạn mã của bạn, trong khi sử dụng Doctrine/PHPUnit/Prophecy hoặc các thư viện khác…
Trong ví dụ về Doctrine, một số hàm như findBy / findOneBy / getRepository không được PHPStan hiểu và sẽ tạo ra lỗi ngay cả khi mã đúng
Để bắt đầu, hãy cài đặt thư viện trình cài đặt tiện ích mở rộng của PHPStan. Nó sẽ làm cho quá trình thêm tiện ích mở rộng nhanh hơn nhiều
vendor/bin/phpstan analyse src tests
2Đây là danh sách các tiện ích mở rộng chính thức [và một số không chính thức] được hỗ trợ bởi PHPStan
Việc cài đặt tiện ích mở rộng được thực hiện đơn giản bằng cách yêu cầu gói trình soạn thảo, trình cài đặt tiện ích mở rộng của PHPStan sẽ lo mọi thứ khác
vendor/bin/phpstan analyse src tests
3tự động hóa
Bạn có thể đưa PHPStan vào bộ GitHub Action của mình để mã của bạn được kiểm tra mỗi khi bạn thực hiện một cam kết trên các PR của mình
Đó là nó
Nếu bạn thích bài viết này, hãy đảm bảo kiểm tra các bài viết khác của tôi, tôi xuất bản về hệ sinh thái và phát triển PHP nói chung. Theo dõi tài khoản của tôi để được cập nhật nội dung trong tương lai của tôi