Hướng dẫn phpstan config - cấu hình phpstan
Thực đơn Show
Định dạng neon #Phpstan sử dụng định dạng cấu hình được gọi là neon. Nó rất giống với YAML vì vậy nếu bạn quen thuộc với nó, bạn cũng có thể viết neon. Đây là cách một ví dụ có thể của tệp cấu hình có thể trông giống như:
Tập tin cấu hình #Một tệp cấu hình có thể được chuyển cho 5 có thể thực thi bằng cách sử dụng tùy chọn 6:
Khi sử dụng tệp cấu hình, bạn phải chuyển tùy chọn 7 cho lệnh 8 (giá trị mặc định 9 không áp dụng ở đây) hoặc cung cấp nó dưới dạng tham số 0 trong chính tệp cấu hình. Tìm hiểu thêm về các tùy chọn dòng lệnh khác »Nếu bạn không cung cấp tệp cấu hình một cách rõ ràng, PHPSTAN sẽ tìm các tệp có tên 1, 2 hoặc 3 trong thư mục hiện tại.Ưu tiên độ phân giải là như vậy:
Thực tiễn thông thường là có 2 hoặc 3 theo kiểm soát phiên bản và cho phép người dùng ghi đè một số cài đặt nhất định trong môi trường của họ (trên máy tính của chính họ hoặc trên máy chủ tích hợp liên tục) bằng cách tạo 1 mà Lừa có trong tệp 0. Xem nhiều tệp để biết thêm chi tiết:Nhiều tệp #Định dạng neon hỗ trợ phần 1 để soạn cấu hình cuối cùng từ nhiều tệp. Hãy nói rằng tệp cấu hình dự án 2 trông như thế này:
Nếu người dùng không có các tiện ích mở rộng PHP nhất định, muốn bỏ qua một số lỗi được báo cáo từ phân tích và để vô hiệu hóa xử lý CPU song song, họ có thể tạo tệp 1 với nội dung này:
Các đường dẫn tương đối trong phần 1 được giải quyết dựa trên thư mục của tệp cấu hình đang ở. Vì vậy, trong ví dụ này, 2 và 1 nằm cạnh nhau trong cùng một thư mục. 1 cũng có thể tham chiếu các tệp PHP có thể được sử dụng để xác định các cấu hình động, xem bỏ qua by-php-version.neon.php và phpstan.neon làm ví dụ.Bỏ qua lỗi #Tìm hiểu thêm về việc bỏ qua các lỗi trong Hướng dẫn sử dụng. Các khóa cấu hình liên quan: 8, 9.Khám phá các ký hiệu #Tìm hiểu thêm về khám phá các ký hiệu trong Hướng dẫn sử dụng. Các khóa cấu hình liên quan: 0, 1.Bootstrap #Nếu bạn cần khởi tạo một cái gì đó trong thời gian chạy PHP trước khi phpstan chạy (như trình tải tự động của riêng bạn), bạn có thể cung cấp các tệp bootstrap của riêng mình:
Các đường dẫn tương đối trong khóa 2 được giải quyết dựa trên thư mục của tệp cấu hình đang ở.Bộ nhớ đệm #Theo mặc định, PHPSTAN lưu trữ các tệp bộ đệm của mình trong 3 (thường là 4). Bạn có thể ghi đè này bằng cách đặt tham số 5:
Đường dẫn tương đối trong khóa 5 được giải quyết dựa trên thư mục của tệp cấu hình được phát hành. Trong ví dụ này, bộ đệm PHPSTAN sẽ được lưu trữ trong thư mục ____67 mà bên cạnh tệp cấu hình.Các tệp được phân tích #Phpstan chấp nhận danh sách các tệp và thư mục trên dòng lệnh:
Bạn có thể lưu một số tổ hợp phím mỗi khi bạn chạy PHPSTAN bằng cách di chuyển các đường dẫn được phân tích vào tệp cấu hình:
Các đường dẫn tương đối trong khóa 8 được giải quyết dựa trên thư mục của tệp cấu hình đang ở.Nếu bạn cung cấp các đường dẫn được phân tích đến PHPSTAN trên dòng lệnh và trong tệp cấu hình cùng một lúc, chúng không được hợp nhất. Chỉ các đường dẫn trên dòng lệnh sẽ được sử dụng. Nếu cơ sở mã của bạn chứa một số tệp bị hỏng có mục đích (e. G. Để kiểm tra hành vi của ứng dụng của bạn trên các tệp có mã PHP không hợp lệ), bạn có thể loại trừ chúng bằng khóa 9. Mỗi mục được sử dụng làm mẫu cho hàm 0.
Đây là một lối tắt cho:
Nếu cấu trúc thư mục của dự án của bạn trộn mã của riêng bạn (mã bạn muốn phân tích và sửa lỗi trong) và mã bên thứ ba (mà bạn đang sử dụng để khám phá các ký hiệu, nhưng không muốn phân tích), cấu trúc tệp có thể trông giống như đây: 0Trong trường hợp này, bạn muốn phân tích toàn bộ thư mục 1, nhưng muốn loại trừ 2 khỏi phân tích. Đây là cách cấu hình PHPSTAN: 1Ngoài ra, có thể có một thư mục 3 chứa các tệp mà bạn không muốn phân tích cũng như không sử dụng để khám phá các ký hiệu. Bạn có thể sửa đổi cấu hình để đạt được hiệu ứng đó: 2Theo mặc định, PHPSTAN chỉ phân tích các tệp với tiện ích mở rộng 4. Để bao gồm các tiện ích mở rộng khác, hãy sử dụng khóa 5: 3Cấp độ quy tắc #Tìm hiểu thêm về các cấp quy tắc trong Hướng dẫn sử dụng. Thay vì sử dụng tùy chọn CLI 6, bạn có thể lưu một số tổ hợp phím mỗi khi bạn chạy PHPSTAN bằng cách di chuyển mức mong muốn vào tệp cấu hình: 4Quy tắc tùy chỉnh #Phpstan yêu cầu bạn chỉ định một cấp độ để chạy, điều đó có nghĩa là nó sẽ chọn các quy tắc được thực thi cho bạn. Nếu bạn không muốn tuân theo các cấp độ quy tắc được xác định trước và muốn tạo quy tắc của riêng mình, hãy nói với Phpstan không yêu cầu một cấp bằng cách đặt 7 thành đúng: 5Sau đó, bạn có thể chọn quy tắc của riêng mình bằng cách sao chép các phần của các tệp cấu hình cấp từ các nguồn PHPSTAN hoặc bao gồm các quy tắc tùy chỉnh của riêng bạn. Giải các biến không xác định #Tìm hiểu thêm về việc giải các biến không xác định trong việc viết mã PHP. Các khóa cấu hình liên quan: 8, 9.Các thùng đối tượng phổ quát #Các lớp không có cấu trúc được xác định trước là phổ biến trong các ứng dụng PHP. Chúng được sử dụng làm người giữ dữ liệu phổ quát - bất kỳ thuộc tính nào cũng có thể được đặt và đọc trên chúng. Các ví dụ đáng chú ý bao gồm 0, 1 (chúng được bật theo mặc định), các đối tượng có kết quả của các truy vấn cơ sở dữ liệu, v.v. 6Hằng số #Tìm hiểu thêm về việc cho Phpstan biết về các hằng số toàn cầu của bạn trong Hướng dẫn sử dụng. Đôi khi các hằng số của bạn có thể có các giá trị khác nhau trong các môi trường khác nhau, như 3 có thể có các giá trị khác nhau như 4 hoặc 5. Để cho Phpstan biết rằng giá trị của hằng số có thể khác nhau và ngăn ngừa các lỗi như 6, hãy thêm tên hằng số vào khóa 7: 7Tệp stub #Tìm hiểu thêm về các tập tin sơ khai trong Hướng dẫn sử dụng. Khóa cấu hình liên quan: 8.Phân tích chặt chẽ hơn #Hiện tại ngoài các cấp quy tắc Có các tham số bổ sung ảnh hưởng đến kết quả phân tích mà bạn có thể điều chỉnh. parameters: excludePaths: - tests/*/data/*9 #Mặc định: 0
(strict-rules sets it to 1)Ví dụ: với 0, with 1Khi được đặt thành 1, nó ngăn chặn các biến đọc được đặt trong câu lệnh ban đầu vòng ____995 và điều kiện vòng 6 sau vòng lặp.parameters: excludePaths: analyseAndScan: - tests/*/data/*7 #Mặc định: 0 (strict-rules sets it to 1)Ví dụ: với 0,
with 1Khi được đặt thành 1, nó ngăn chặn các biến đọc được đặt trong câu lệnh ban đầu vòng ____995 và điều kiện vòng 6 sau vòng lặp.parameters: excludePaths: analyseAndScan: - tests/*/data/*7 #Khi được đặt thành 1
(strict-rules sets it to 0)
1, with 0Mặc định: 1 (các quy tắc nghiêm ngặt đặt nó thành 0)Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0Khi được đặt thành 1 (strict-rules sets it to 0)
1, with
0Mặc định: 1 (các quy tắc nghiêm ngặt đặt nó thành 0)Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0Khi được đặt thành 1 (strict-rules sets it to 0)
1, with 0Mặc định: 1 (các quy tắc nghiêm ngặt đặt nó thành 0)Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0Khi được đặt thành 1 (strict-rules sets it to 0)
1, with 0Mặc định: 1 (các quy tắc nghiêm ngặt đặt nó thành 0)Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0Khi được đặt thành 1 (strict-rules sets it to 0)
1,
with 0Mặc định: 1 (các quy tắc nghiêm ngặt đặt nó thành 0)Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0Khi được đặt thành 1 (strict-rules
sets it to 0)
1, with 0Mặc định: 1 (các quy tắc nghiêm ngặt đặt nó thành 0)Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0Khi được đặt thành 1 (strict-rules sets it to 0)
1, with 0Mặc định: 1 (các quy tắc nghiêm ngặt đặt nó thành 0)Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0Khi được đặt thành 1 (strict-rules sets it to 0)
1, with 0Mặc định: 1 (các quy tắc nghiêm ngặt đặt nó thành 0)Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0Khi được đặt thành 1 (strict-rules sets it to 0)
1, with 0Mặc định: 1 (các quy tắc nghiêm ngặt đặt nó thành 0)Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0Khi được đặt thành 1 09 # 8vendor/bin/phpstan analyse -c phpstan.neon65 #Mặc định: 1Khi được đặt thành 0, nó báo cáo các thuộc tính với các loại gốc mà weren được khởi tạo trong hàm tạo lớp. 9vendor/bin/phpstan analyse -c phpstan.neon68 #Mặc định: 1 (strict-rules sets it to 0)Ví dụ: Với 1, with 0Khi được đặt thành 0, nó báo cáo việc sử dụng các thuộc tính động là không xác định.vendor/bin/phpstan analyse -c phpstan.neon74 #Có sẵn trong Phpstan 1.8.0 Mặc định: 0Theo mặc định, PHPSTAN coi tất cả các chức năng trả về giá trị là thuần khiết. Điều đó có nghĩa là cuộc gọi thứ hai đến cùng một hàm trong cùng một phạm vi sẽ trả về cùng loại bị thu hẹp: 0Đây là một mặc định lành mạnh trong trường hợp getters nhưng đôi khi chúng ta có một hàm có thể trả về các giá trị khác nhau dựa trên trạng thái toàn cầu như trình tạo số ngẫu nhiên, cơ sở dữ liệu hoặc thời gian. 1Bạn có thể đánh dấu 76 với 77 nhưng nếu bạn có nhiều chức năng như thế này trong cơ sở mã của mình và donith muốn giả định các hàm trả về cùng một giá trị khi được gọi là nhiều lần, bạn có thể đặt 74 thành 1: 2vendor/bin/phpstan analyse -c phpstan.neon80 #Mặc định: 1Khi được đặt thành 0, PHPStan nghiêm ngặt về các giá trị với loại không xác định ( 83) không xác định. Nó cho phép các kiểm tra tương tự cho các giá trị không có loại được chỉ định mà Cấp 9 cho phép các giá trị loại 83 được chỉ định rõ ràng.Ngoại lệ #Các quy tắc liên quan đến ngoại lệ nâng cao có sẵn. Đọc bài viết này để biết thêm chi tiết ». Các khóa cấu hình liên quan: 85, 86, 87, 88, 89, 90, 91Tiểu đồ mơ hồ #Cấp 6 kiểm tra các kiểu chữ bị thiếu. Không chỉ nó báo cáo khi không có kiểu chữ nào cả, mà còn khi nó không đủ cụ thể. Phpstan cần biết về các loại mục mảng. Vì vậy, 92 không đủ cụ thể nhưng 93 là.Nếu bạn muốn sử dụng Cấp 6 để báo cáo các loại hình ảnh bị thiếu, nhưng vẫn ổn với 92 thay vì 93, bạn có thể vô hiệu hóa hành vi này bằng cách đặt khóa 96 thành FALSE: 3Nếu bạn sử dụng thuốc generic, một điều khác mà Cấp 6 làm là nó yêu cầu các biến loại luôn được chỉ định trong TypeHints. Vì vậy, 97 là đủ nhưng 98 là.Bạn có thể vô hiệu hóa cách tiếp cận nghiêm ngặt này đối với thuốc generic bằng cách đặt khóa 99 thành FALSE: 4Nếu bạn sử dụng các thiết bị gọi, bạn có thể thấy rằng 00 hoặc 01 quá mơ hồ theo ý thích của bạn. Ví dụ, PHPSTAN đã giành được khiếu nại nếu bạn chuyển 02 đến 00, nhưng nó sẽ phàn nàn nếu bạn vượt qua 02 cho 05. Vì vậy, được cụ thể với chữ ký có thể gọi được giúp PHPStan tìm thấy nhiều lỗi hơn.Tuy nhiên, theo mặc định, PHPSTAN đã giành được khiếu nại nếu bạn không chỉ định chữ ký cho việc gọi hoặc đóng. Bạn có thể làm cho PHPSTAN yêu cầu chữ ký có thể gọi được được chỉ định với cú pháp PHPDOC có thể gọi PHPSTAN bằng cách đặt khóa 06 thành 0 (bị vô hiệu hóa theo mặc định): 5Nhập bí danh #Tìm hiểu thêm về các bí danh loại bằng văn bản mã PHP. Khóa cấu hình liên quan: 08.Tiến trình song song #Phpstan chạy trong nhiều luồng theo mặc định, tận dụng nhiều lõi trong CPU của bạn. Nó sử dụng một công thức để tìm ra có bao nhiêu quá trình con để sinh sản. Các quy trình của con được cung cấp các công việc trên mạng - mỗi công việc đại diện cho một loạt một số lượng tệp nhất định để xử lý. Các đầu vào cho công thức là:
Các biến này có thể được thay đổi trong cấu hình. Đây là mặc định: 6Bạn có thể gặp phải thông báo lỗi này khi chạy phpstan:
Điều này có thể xảy ra khi một công việc duy nhất mất nhiều thời gian hơn so với thời gian chờ đã đặt. Nó ngăn PHPSTAN chạy vô thời hạn khi có điều gì đó bất ngờ xảy ra. Trong trường hợp các tệp lớn, có thể bình thường là phân tích của một số trong số chúng mất nhiều thời gian hơn. Bạn có thể làm cho thời gian chờ dài hơn trong cấu hình: 7Để vô hiệu hóa xử lý song song hoàn toàn, đặt 09 thành 14: 8Xử lý song song cũng bị vô hiệu hóa khi chạy với 15. [1]Url url có thể nhấp #Bạn có thể định cấu hình PHPSTAN để hiển thị URL Trình chỉnh sửa có thể nhấp dẫn đến tệp và dòng có lỗi trong định dạng lỗi 16 mặc định. Tìm hiểu thêmKhóa cấu hình liên quan: 17Tham số linh tinh #parameters: level: 6 paths: - src - tests18 #Mặc định: 19 (current PHP version is used)Nếu bạn muốn phân tích một cơ sở mã như thể nó được viết cho một phiên bản PHP khác với bạn đang chạy, hãy thay đổi tham số 18: 9PHPSTAN sẽ tự động suy ra phiên bản 21 từ tệp 22 cuối cùng mà nó có thể tìm thấy, nếu không được cấu hình trong tệp cấu hình PHPSTAN.parameters: level: 6 paths: - src - tests23 #Mặc định: 1Khi được đặt thành 0, nó không yêu cầu kiểu chữ cho các thuộc tính nếu các loại có thể được suy ra từ tiêm hàm tạo: 0parameters: level: 6 paths: - src - tests26 #Mặc định: 0Ví dụ: với 0, with 1Phpstan theo mặc định không phân biệt giữa các loại PHPDOC và các loại gốc. Nó coi cả hai đều chắc chắn. Đây có thể không phải là những gì bạn muốn trong trường hợp bạn viết một thư viện mà người dùng có thể chuyển một loại đối số sai cho một hàm. Đặt 26 thành 1 thư giãn một số quy tắc xung quanh kiểm tra loại.parameters: level: 6 paths: - src - tests32 #Mặc định: 0Ví dụ: với 0, với 1Phpstan theo mặc định không phân biệt giữa các loại PHPDOC và các loại gốc. Nó coi cả hai đều chắc chắn.Đây có thể không phải là những gì bạn muốn trong trường hợp bạn viết một thư viện mà người dùng có thể chuyển một loại đối số sai cho một hàm. Đặt 19 32 # 1Thỉnh thoảng, PHPSTAN cho thấy các mẹo của ngày trong ngày khi kết thúc một phân tích thành công. Bạn có thể tắt điều này bằng cách đặt khóa parameters: level: 6 paths: - src - tests32 thành parameters: excludePaths: analyseAndScan: - tests/*/data/*1. 36 #
Mở rộng đường dẫn # Có hai tham số được xác định trước có thể sử dụng để mở rộng trong các tham số cấu hình đại diện cho các đường dẫn: 2 38 - Thư mục gốc trong đó Phpstan cư trú (tức là 39 trong cài đặt nhà soạn nhạc) 40 - Thư mục làm việc hiện tại nơi Phpstan được thực thiChúng không còn hữu ích vì tất cả các đường dẫn tương đối trong các tham số cấu hình được giải quyết dựa trên thư mục của tệp cấu hình, dẫn đến một ký hiệu ngắn và ngắn gọn.Xem xét cấu trúc thư mục này: Để tham khảo tệp 41 từ 1, bạn chỉ cần sử dụng 43.Để tham khảo 41 liên quan đến 38, bạn phải sử dụng 46, điều này thực sự rất tốt. 3Tham số tùy chỉnh # 4
Phpstan không cho phép các tham số không xác định có mặt trong cấu hình để ngăn lỗi chính tả. Bất kỳ tham số mới nào cũng cần được thêm vào phần 47 cấp cao nhất của tệp cấu hình. |