Tracy debugger – zobrazení depricated volání

milanb
Člen | 64
+
0
-

Ahoj, chtěl bych, aby mi Tracy debugger nějak nahlásil, že někde v kódu používám depricated funkce (upgraduju). A takto mám nastavený Tracy v bootstrap.php:

$configurator->setTempDirectory(__SITEDIR__ . '/temp');
$configurator->setDebugMode(true);
Tracy\Debugger::$logSeverity = E_NOTICE | E_WARNING; // loguj PHP chyby jako E_NOTICE nebo E_WARNING s podrobnými informacemi (HTML report)
Tracy\Debugger::$strictMode = true; // zobraz všechny chyby
Tracy\Debugger::$scream = E_USER_DEPRECATED | E_DEPRECATED;
$configurator->enableDebugger(__SITEDIR__ . '/log');

A bezpečně má v k=odu pužito například setAttribute pro komponentu formuláře, což je depricated (ukazuje intellisense), a má být místo toho setHtmlAttribute, ale Tracy to při zobrazení formuláře s tagovým kódem nikde neukáže.
Co mám špatně?
Díky.

jeremy
Člen | 50
+
+1
-

Intellisense ti to ukazuje protoze to je oznaceny /** @deprecated ... */ anotaci. To ti php ani tracy nedetektuje.

E_DEPRECATED a E_USER_DEPRECATED funguje jen pro funkce, ktere jsou deprecated nativne v php nebo pokud je pouzita funkce trigger_error(message: $message, error_level: E_USER_DEPRECATED).

Pokud chces najit /** @deprecated ... */ funkce tak musis pouzit nastroj jako PHPStan.

Edit: Mozna by se to do tracy mohlo implementovat, ale asi to nemelo velkou prioritu.

Editoval jeremy (22. 3. 19:53)

Marek Bartoš
Nette Blogger | 1177
+
0
-

Deprecations nejsou notice ani warnings
Celý seznam konstant s úrovněmi errorů najdeš tady https://www.php.net/…onstants.php
Lepší postup než je přidávat všechny je začít na všech a odebírat ty, které nechceš, takto E_ALL & ~(E_NOTICE|E_USER_NOTICE) (vše kromě notice)

Tracy ti ale takto nahlásí jen deprecations vytvořené pomocí trigger_error('message', E_USER_DEPRECATED)
Anotace @deprecated, které ti hlásí IDE samy o sobě v runtime nic nedělají a pro jejich automatické nalezení je nejvhodnější použít phpstanphpstan-deprecation-rules

Edit: tak kolega nade mnou byl rychlejší

Editoval Marek Bartoš (22. 3. 19:55)

milanb
Člen | 64
+
0
-

Díky oběma, pochopil jsem, zkusím PHPStan.

milanb
Člen | 64
+
0
-

Mám PHPStan, ale nevím, jaký level použít, aby mi to hlásilo ty depricated metody:
vendor/bin/phpstan analyse app
A v konfiguraci PHPStan mám tento řádek, tím to asi nebude:

includes:
	- vendor/phpstan/phpstan-deprecation-rules/rules.neon

Editoval milanb (23. 3. 14:11)