Nette 3.0 update – TypeFixer selže
- milanb
- Člen | 64
Ahoj,
předně vím, že TypeFixer je starý a descontinued. Zatím ale nevím
o lepší možnosti, tak jsemo zkusil.
Předesílám, že jsem četl existující vlákna:
https://forum.nette.org/…u-na-nette-3
https://forum.nette.org/…e-type-fixer
Spustil jsem TypeFixer takto:
php -d memory_limit=1024M d:\TEMP\_0repos\type-fixer\typefixer d:\TEMP\_0repos\a\app --fix
A dostal jsem error:
Nette Type Fixer v0.1
---------------------
Error: Undefined array key 314p.php
ErrorException: Undefined array key 314 in D:\TEMP\_0repos\type-fixer\vendor\nikic\php-parser\lib\PhpParser\Lexer.php:258
Stack trace:
#0 D:\TEMP\_0repos\type-fixer\vendor\nikic\php-parser\lib\PhpParser\Lexer.php(258): Nette\TypeFixer\{closure}(2, 'Undefined array...', 'D:\\TEMP\\_0repos...', 258)
#1 D:\TEMP\_0repos\type-fixer\vendor\nikic\php-parser\lib\PhpParser\ParserAbstract.php(186): PhpParser\Lexer->getNextToken('Nette\\Configura...', Array, Array)
#2 D:\TEMP\_0repos\type-fixer\vendor\dg\parser-reflection\src\ReflectionContext.php(242): PhpParser\ParserAbstract->parse('<?php\r\nrequire ...')
#3 D:\TEMP\_0repos\type-fixer\vendor\dg\parser-reflection\src\ReflectionFile.php(70): Go\ParserReflection\ReflectionContext->parseFile('D:\\TEMP\\_0repos...')
#4 D:\TEMP\_0repos\type-fixer\src\Collector.php(46): Go\ParserReflection\ReflectionFile->__construct('D:\\TEMP\\_0repos...', NULL, Object(Nette\TypeFixer\ReflectionContext))
#5 D:\TEMP\_0repos\type-fixer\src\Collector.php(31): Nette\TypeFixer\Collector->parseFiles(Object(Nette\Utils\Finder))
#6 D:\TEMP\_0repos\type-fixer\src\bootstrap.php(76): Nette\TypeFixer\Collector->collect(Object(Nette\Utils\Finder))
#7 D:\TEMP\_0repos\type-fixer\typefixer(4): require('D:\\TEMP\\_0repos...')
#8 {main}
Prosím, buď jestli se to dá spravit a pokračovat, anebo jak ty typehinty pro parametry a návratové hodnoty metod doplnit nějak jinak, tedy když ne ručně.
Díky.
- Marek Bartoš
- Nette Blogger | 1177
Na automatické upgrady se používá Rector https://github.com/…orphp/rector
Specificky pro Nette existují tahle pravidla, ale jsou už pro dost starou
verzi Rectora, a tak se dají použít spíš jen pro inspiraci, co je kde
třeba změnit https://github.com/…rector-nette
Pokud není aplikace nějak obří, tak je lepší si před upgradem
nainstalovat phpstan, nastavit vysokou úroveň (používám 8) a vygenerovat si
baseline. Po upgradu pak uvidíš, jaké chyby se oproti baseline objevily nově
a jet podle ní.
Čím hůře otypovaný kód, tím méně ti toho phpstan najde, ale
chybějící return typy ti nahlásí vždy (typy parametrů ne, protože
rozšiřování typů parametrů v php jde)