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ư:

parameters:
level: 6
paths:
- src
- tests

Tập tin cấu hình #

Một tệp cấu hình có thể được chuyển cho

includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

5 có thể thực thi bằng cách sử dụng tùy chọn
includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

6:

vendor/bin/phpstan analyse -c phpstan.neon

Khi sử dụng tệp cấu hình, bạn phải chuyển tùy chọn

includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

7 cho lệnh
includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

8 (giá trị mặc định
includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

9 không áp dụng ở đây) hoặc cung cấp nó dưới dạng tham số
parameters:
bootstrapFiles:
- phpstan-bootstrap.php
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

parameters:
bootstrapFiles:
- phpstan-bootstrap.php
1,
parameters:
bootstrapFiles:
- phpstan-bootstrap.php
2 hoặc
parameters:
bootstrapFiles:
- phpstan-bootstrap.php
3 trong thư mục hiện tại.

Ưu tiên độ phân giải là như vậy:

  1. Nếu tệp cấu hình được cung cấp dưới dạng tùy chọn dòng lệnh, nó sẽ được sử dụng.
  2. Mặt khác, nếu
    parameters:
    bootstrapFiles:
    - phpstan-bootstrap.php
    1 tồn tại trong thư mục làm việc hiện tại, nó sẽ được sử dụng.
  3. Mặt khác, nếu
    parameters:
    bootstrapFiles:
    - phpstan-bootstrap.php
    2 tồn tại trong thư mục làm việc hiện tại, nó sẽ được sử dụng.
  4. Mặt khác, nếu
    parameters:
    bootstrapFiles:
    - phpstan-bootstrap.php
    3 tồn tại trong thư mục làm việc hiện tại, nó sẽ được sử dụng.
  5. Nếu không có điều gì ở trên là đúng, sẽ không có cấu hình nào được sử dụng.

Thực tiễn thông thường là có

parameters:
bootstrapFiles:
- phpstan-bootstrap.php
2 hoặc
parameters:
bootstrapFiles:
- phpstan-bootstrap.php
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
parameters:
bootstrapFiles:
- phpstan-bootstrap.php
1 mà Lừa có trong tệp
parameters:
tmpDir: tmp
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

parameters:
tmpDir: tmp
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
parameters:
bootstrapFiles:
- phpstan-bootstrap.php
2 trông như thế này:

parameters:
level: 6
paths:
- src
- tests

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

parameters:
bootstrapFiles:
- phpstan-bootstrap.php
1 với nội dung này:

includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

Các đường dẫn tương đối trong phần

parameters:
tmpDir: tmp
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,
parameters:
bootstrapFiles:
- phpstan-bootstrap.php
2 và
parameters:
bootstrapFiles:
- phpstan-bootstrap.php
1 nằm cạnh nhau trong cùng một thư mục.

parameters:
tmpDir: tmp
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:

parameters:
tmpDir: tmp
8,
parameters:
tmpDir: tmp
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:

vendor/bin/phpstan analyse -c src tests
0,
vendor/bin/phpstan analyse -c src tests
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:

parameters:
bootstrapFiles:
- phpstan-bootstrap.php

Các đường dẫn tương đối trong khóa

vendor/bin/phpstan analyse -c src tests
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

vendor/bin/phpstan analyse -c src tests
3 (thường là
vendor/bin/phpstan analyse -c src tests
4). Bạn có thể ghi đè này bằng cách đặt tham số
vendor/bin/phpstan analyse -c src tests
5:

parameters:
tmpDir: tmp

Đường dẫn tương đối trong khóa

vendor/bin/phpstan analyse -c src tests
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:

vendor/bin/phpstan analyse -c src tests

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:

parameters:
paths:
- src
- tests

Các đường dẫn tương đối trong khóa

vendor/bin/phpstan analyse -c src tests
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

vendor/bin/phpstan analyse -c src tests
9. Mỗi mục được sử dụng làm mẫu cho hàm
parameters:
paths:
- src
- tests
0.

parameters:
excludePaths:
- tests/*/data/*

Đây là một lối tắt cho:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*

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:

vendor/bin/phpstan analyse -c phpstan.neon
0

Trong trường hợp này, bạn muốn phân tích toàn bộ thư mục

parameters:
paths:
- src
- tests
1, nhưng muốn loại trừ
parameters:
paths:
- src
- tests
2 khỏi phân tích. Đây là cách cấu hình PHPSTAN:

vendor/bin/phpstan analyse -c phpstan.neon
1

Ngoài ra, có thể có một thư mục

parameters:
paths:
- src
- tests
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 đó:

vendor/bin/phpstan analyse -c phpstan.neon
2

Theo mặc định, PHPSTAN chỉ phân tích các tệp với tiện ích mở rộng

parameters:
paths:
- src
- tests
4. Để bao gồm các tiện ích mở rộng khác, hãy sử dụng khóa
parameters:
paths:
- src
- tests
5:

vendor/bin/phpstan analyse -c phpstan.neon
3

Cấ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

parameters:
paths:
- src
- tests
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:

vendor/bin/phpstan analyse -c phpstan.neon
4

Quy 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

parameters:
paths:
- src
- tests
7 thành đúng:

vendor/bin/phpstan analyse -c phpstan.neon
5

Sau đó, 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:

parameters:
paths:
- src
- tests
8,
parameters:
paths:
- src
- tests
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

parameters:
excludePaths:
- tests/*/data/*
0,
parameters:
excludePaths:
- tests/*/data/*
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.

vendor/bin/phpstan analyse -c phpstan.neon
6

Hằ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ư

parameters:
excludePaths:
- tests/*/data/*
3 có thể có các giá trị khác nhau như
parameters:
excludePaths:
- tests/*/data/*
4 hoặc
parameters:
excludePaths:
- tests/*/data/*
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ư
parameters:
excludePaths:
- tests/*/data/*
6, hãy thêm tên hằng số vào khóa
parameters:
excludePaths:
- tests/*/data/*
7:

vendor/bin/phpstan analyse -c phpstan.neon
7

Tệ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:

parameters:
excludePaths:
- tests/*/data/*
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:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1)
:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1)

Ví dụ: với

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0, với
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1
: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
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
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
6 sau vòng lặp.

parameters: excludePaths: analyseAndScan: - tests/*/data/*7 #

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1)
:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1)

Ví dụ: với

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0, với
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1
: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
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
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
6 sau vòng lặp.

parameters: excludePaths: analyseAndScan: - tests/*/data/*7 #

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, nó sẽ ngăn chặn các biến số và giá trị đọc được đặt trong foreach khi lặp lại trên một mảng không trống.:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

vendor/bin/phpstan analyse -c phpstan.neon
03 #: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, nó sẽ ngăn chặn các biến số và giá trị đọc được đặt trong foreach khi lặp lại trên một mảng không trống.:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

vendor/bin/phpstan analyse -c phpstan.neon
03 #: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, nó sẽ ngăn chặn các biến số và giá trị đọc được đặt trong foreach khi lặp lại trên một mảng không trống.:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

vendor/bin/phpstan analyse -c phpstan.neon
03 #: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, nó sẽ ngăn chặn các biến số và giá trị đọc được đặt trong foreach khi lặp lại trên một mảng không trống.:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

vendor/bin/phpstan analyse -c phpstan.neon
03 #: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, nó sẽ ngăn chặn các biến số và giá trị đọc được đặt trong foreach khi lặp lại trên một mảng không trống.:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

vendor/bin/phpstan analyse -c phpstan.neon
03 #: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, nó sẽ ngăn chặn các biến số và giá trị đọc được đặt trong foreach khi lặp lại trên một mảng không trống.:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

vendor/bin/phpstan analyse -c phpstan.neon
03 #: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, nó sẽ ngăn chặn các biến số và giá trị đọc được đặt trong foreach khi lặp lại trên một mảng không trống.:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

vendor/bin/phpstan analyse -c phpstan.neon
03 #: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, nó sẽ ngăn chặn các biến số và giá trị đọc được đặt trong foreach khi lặp lại trên một mảng không trống.:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

vendor/bin/phpstan analyse -c phpstan.neon
03 #: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, nó sẽ ngăn chặn các biến số và giá trị đọc được đặt trong foreach khi lặp lại trên một mảng không trống.:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

vendor/bin/phpstan analyse -c phpstan.neon
03 #: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

Ví dụ: Với parameters: excludePaths: analyseAndScan: - tests/*/data/*1, với parameters: excludePaths: analyseAndScan: - tests/*/data/*0

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0, nó báo cáo các chức năng kiểm tra loại luôn được đánh giá là true.:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1

vendor/bin/phpstan analyse -c phpstan.neon
09 #

vendor/bin/phpstan analyse -c phpstan.neon
8

vendor/bin/phpstan analyse -c phpstan.neon65 #

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
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.

vendor/bin/phpstan analyse -c phpstan.neon
9

vendor/bin/phpstan analyse -c phpstan.neon68 #

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (các quy tắc nghiêm ngặt đặt nó thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)
:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 (strict-rules sets it to
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0)

Ví dụ: Với

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, với
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0
: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
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:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Theo 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:

parameters:
level: 6
paths:
- src
- tests
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.

parameters:
level: 6
paths:
- src
- tests
1

Bạn có thể đánh dấu

vendor/bin/phpstan analyse -c phpstan.neon
76 với
vendor/bin/phpstan analyse -c phpstan.neon
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
vendor/bin/phpstan analyse -c phpstan.neon
74 thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1:

parameters:
level: 6
paths:
- src
- tests
2

vendor/bin/phpstan analyse -c phpstan.neon80 #

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0, PHPStan nghiêm ngặt về các giá trị với loại không xác định (
vendor/bin/phpstan analyse -c phpstan.neon
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
vendor/bin/phpstan analyse -c phpstan.neon
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:

vendor/bin/phpstan analyse -c phpstan.neon
85,
vendor/bin/phpstan analyse -c phpstan.neon
86,
vendor/bin/phpstan analyse -c phpstan.neon
87,
vendor/bin/phpstan analyse -c phpstan.neon
88,
vendor/bin/phpstan analyse -c phpstan.neon
89,
vendor/bin/phpstan analyse -c phpstan.neon
90,
vendor/bin/phpstan analyse -c phpstan.neon
91

Tiể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,

vendor/bin/phpstan analyse -c phpstan.neon
92 không đủ cụ thể nhưng
vendor/bin/phpstan analyse -c phpstan.neon
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

vendor/bin/phpstan analyse -c phpstan.neon
92 thay vì
vendor/bin/phpstan analyse -c phpstan.neon
93, bạn có thể vô hiệu hóa hành vi này bằng cách đặt khóa
vendor/bin/phpstan analyse -c phpstan.neon
96 thành FALSE:

parameters:
level: 6
paths:
- src
- tests
3

Nế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,

vendor/bin/phpstan analyse -c phpstan.neon
97 là đủ nhưng
vendor/bin/phpstan analyse -c phpstan.neon
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

vendor/bin/phpstan analyse -c phpstan.neon
99 thành FALSE:

parameters:
level: 6
paths:
- src
- tests
4

Nếu bạn sử dụng các thiết bị gọi, bạn có thể thấy rằng

parameters:
level: 6
paths:
- src
- tests
00 hoặc
parameters:
level: 6
paths:
- src
- tests
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
parameters:
level: 6
paths:
- src
- tests
02 đến
parameters:
level: 6
paths:
- src
- tests
00, nhưng nó sẽ phàn nàn nếu bạn vượt qua
parameters:
level: 6
paths:
- src
- tests
02 cho
parameters:
level: 6
paths:
- src
- tests
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

parameters:
level: 6
paths:
- src
- tests
06 thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0 (bị vô hiệu hóa theo mặc định):

parameters:
level: 6
paths:
- src
- tests
5

Nhậ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:

parameters:
level: 6
paths:
- src
- tests
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à:

  • Số lượng lõi CPU logic được phát hiện tự động trên hệ thống của bạn. Nếu bạn có 8 lõi vật lý và CPU hỗ trợ siêu luồng, bạn có 16 lõi CPU logic.
  • Số lượng tối đa của các quy trình sinh sản mong muốn, để ngăn chặn việc vắt CPU của toàn bộ hệ thống nếu nó bị hạn chế tài nguyên. (
    parameters:
    level: 6
    paths:
    - src
    - tests
    09)
  • Số lượng công việc tối thiểu cho mỗi quá trình. Quá trình chỉ được sinh ra nếu nó sẽ xử lý ít nhất 2 công việc theo mặc định. (
    parameters:
    level: 6
    paths:
    - src
    - tests
    10)
  • Kích thước công việc - Có bao nhiêu tệp được phân tích trong một lô (
    parameters:
    level: 6
    paths:
    - src
    - tests
    11)
  • Số lượng các tệp được phân tích - nó khác nhau mỗi lần vì cách thức cơ thể mã của bạn thay đổi và cũng nhờ vào bộ đệm kết quả.

Các biến này có thể được thay đổi trong cấu hình. Đây là mặc định:

parameters:
level: 6
paths:
- src
- tests
6

Bạn có thể gặp phải thông báo lỗi này khi chạy phpstan:

Quá trình trẻ em hết thời gian sau 60 giây. Hãy thử làm cho nó dài hơn với cài đặt

parameters:
level: 6
paths:
- src
- tests
12.

Đ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:

parameters:
level: 6
paths:
- src
- tests
7

Để vô hiệu hóa xử lý song song hoàn toàn, đặt

parameters:
level: 6
paths:
- src
- tests
09 thành
parameters:
level: 6
paths:
- src
- tests
14:

parameters:
level: 6
paths:
- src
- tests
8

Xử lý song song cũng bị vô hiệu hóa khi chạy với

parameters:
level: 6
paths:
- src
- tests
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

parameters:
level: 6
paths:
- src
- tests
16 mặc định. Tìm hiểu thêm

Khóa cấu hình liên quan:

parameters:
level: 6
paths:
- src
- tests
17

Tham số linh tinh #

parameters: level: 6 paths: - src - tests18 #

Mặc định:

parameters:
level: 6
paths:
- src
- tests
19 (phiên bản PHP hiện tại được sử dụng):
parameters:
level: 6
paths:
- src
- tests
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ố

parameters:
level: 6
paths:
- src
- tests
18:

parameters:
level: 6
paths:
- src
- tests
9

PHPSTAN sẽ tự động suy ra phiên bản

parameters:
level: 6
paths:
- src
- tests
21 từ tệp
parameters:
level: 6
paths:
- src
- tests
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:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1

Khi được đặt thành

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
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:

includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

0

parameters: level: 6 paths: - src - tests26 #

Mặc định:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Ví dụ: với

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0, với
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1
: with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0, with
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1

Phpstan 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

parameters:
level: 6
paths:
- src
- tests
26 thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
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:

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0:
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0

Ví dụ: với

parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
0, với
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1

Phpstan 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

parameters:
level: 6
paths:
- src
- tests
26 thành
parameters:
excludePaths:
analyseAndScan:
- tests/*/data/*
1 thư giãn một số quy tắc xung quanh kiểm tra loại.
:
parameters:
level: 6
paths:
- src
- tests
19

parameters:
level: 6
paths:
- src
- tests
32 #

includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

1

Thỉ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.

parameters:
level: 6
paths:
- src
- tests
36 #

  • Mặc định:
    parameters:
    level: 6
    paths:
    - src
    - tests
    19
  • Nếu bạn muốn thay đổi định dạng lỗi mặc định, bạn có thể chỉ định rằng bằng cách sử dụng:

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:

includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

2

parameters:
level: 6
paths:
- src
- tests
38 - Thư mục gốc trong đó Phpstan cư trú (tức là
parameters:
level: 6
paths:
- src
- tests
39 trong cài đặt nhà soạn nhạc)

parameters:
level: 6
paths:
- src
- tests
40 - Thư mục làm việc hiện tại nơi Phpstan được thực thi

Chú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

parameters:
level: 6
paths:
- src
- tests
41 từ
parameters:
bootstrapFiles:
- phpstan-bootstrap.php
1, bạn chỉ cần sử dụng
parameters:
level: 6
paths:
- src
- tests
43.

Để tham khảo

parameters:
level: 6
paths:
- src
- tests
41 liên quan đến
parameters:
level: 6
paths:
- src
- tests
38, bạn phải sử dụng
parameters:
level: 6
paths:
- src
- tests
46, điều này thực sự rất tốt.

includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

3

Tham số tùy chỉnh #

includes:
- phpstan.neon.dist

parameters:
ignoreErrors:
- '#Function pcntl_open not found\.#'
parallel:
maximumNumberOfProcesses: 1

4
  1. Khi phát triển các tiện ích mở rộng Phpstan tùy chỉnh, bạn có thể cần một tham số cấu hình tùy chỉnh để cung cấp tùy chỉnh cho người dùng.

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

parameters:
level: 6
paths:
- src
- tests
47 cấp cao nhất của tệp cấu hình.