Nette 3.0 update – TypeFixer selže

milanb
Člen | 64
+
0
-

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
+
0
-

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)

milanb
Člen | 64
+
0
-

Uff, díky, zkusím postupně :-)

milanb
Člen | 64
+
0
-

Ahoj, díky moc všem za pomoc, už se i podařilo upgradovat z 2.3 na 3.1, už zbává jen kousek cesty k 3.2… :-)