Câu trả lời:
Tôi đã gặp sự cố này và đặt các điểm dừng trên mỗi phiên bản 'Không cung cấp mã thông báo' Tôi có thể tìm thấy bằng cách sử dụng:
grep -lr 'No tokens were provided' vendor/
đã trả lại:
vendor/zendframework/zend-code/src/Scanner/ConstantScanner.php
vendor/zendframework/zend-code/src/Scanner/TokenArrayScanner.php
vendor/zendframework/zend-code/src/Scanner/MethodScanner.php
vendor/zendframework/zend-code/src/Scanner/PropertyScanner.php
vendor/zendframework/zend-code/src/Scanner/ClassScanner.php
Ngoại lệ của tôi đã bị ném vào TokenArrayScanner.php
tập tin. Giá trị cá thể "mã thông báo" được đặt trong hàm tạo, vì vậy tôi đặt điểm dừng ở đó và khởi chạy lại quy trình. Thật không may, hàm tạo này được gọi nhiều lần trên nhiều tệp và dữ liệu cho tệp được mã hóa không được bao gồm trong lệnh gọi cấu trúc. Tôi đã có thể xác định rằng "mã thông báo" chỉ là các dòng của tệp đang được kiểm tra. Dựa trên bài đăng của CarComp, tôi đã sử dụng tệp này để tìm tệp vi phạm:
find . -type f -name '*.php' -empty
Điều này đã tạo ra một số tệp sống trong các đường dẫn có chứa "dev / tests", loại trừ khỏi quá trình quét và một tệp từ nhà phát triển bên thứ ba. loại bỏ tệp này đã giải quyết vấn đề và lệnh biên dịch hoàn thành chỉ với các khiếu nại và không có ngoại lệ.
Có vẻ như bạn có một tệp trống được phân tích cú pháp bởi \ Magento \ Setup \ Module \ Di \ Code \ Reader \ ClassesScanner , sử dụng phương thức PHP token_get_all . Ngoại lệ được đưa ra, nếu phương thức không trả về bất kỳ giá trị nào, đó là trường hợp trên một tệp trống.
Các tệp trống cũng gây ra vấn đề Không được cung cấp mã thông báo, do đó cần có một kiểm tra trên ClassesScanner để đánh giá xem mục nhập thư mục đã sử dụng hay bất kỳ tệp lớp nào là tệp hợp lệ và nếu nội dung của nó không trống. Bạn cần thêm nội dung phù hợp trong các tệp đã tạo HOẶC không nên xác định / tạo.