Respostas:
Tive esse problema e coloquei pontos de interrupção em cada instância de 'Nenhum token foi fornecido' que eu poderia encontrar usando:
grep -lr 'No tokens were provided' vendor/
que retornou:
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
Minha exceção estava sendo lançada no TokenArrayScanner.php
arquivo. O valor da instância "tokens" é definido no construtor, então coloquei um ponto de interrupção lá e reiniciei o processo. Infelizmente, esse construtor é chamado várias vezes em vários arquivos, e os dados do arquivo que está sendo tokenizado não são incluídos na chamada de construção. Consegui determinar que os "tokens" são apenas linhas do arquivo que está sendo inspecionado. Baseado no post do CarComp, usei isso para encontrar o arquivo incorreto:
find . -type f -name '*.php' -empty
Isso resultou em vários arquivos que residiam em caminhos que continham "dev / tests", excluídos da verificação, e um único arquivo de um desenvolvedor de terceiros. a remoção desse arquivo resolveu o problema e o comando de compilação foi concluído com apenas reclamações e não exceções.
Parece que você tem um arquivo vazio que é analisado pelo \ Magento \ Setup \ Module \ Di \ Code \ Reader \ ClassesScanner , que usa o método token_get_all do PHP . A exceção é lançada, se o método não retornar nenhum valor, como é o caso de um arquivo vazio.
Os arquivos vazios também provocam o problema Não foram fornecidos tokens; portanto, deve-se verificar o ClassesScanner para avaliar se a entrada de diretório usada ou qualquer arquivo de classe é um arquivo válido e se seu conteúdo não está vazio. Você precisa adicionar o conteúdo adequado aos arquivos criados OU não deve ser definido / criado.