Спасибо за очередную годноту. Ждем финальное видео из серии про стат анализ с сравнением и обзором всех пройденных инструментов. Опять же радует количество полезного содержания, но не радует количество подписчиков, за подобное это очень мало( очень хотелось бы видеть продолжения подобного контента
Спасибо за обзор! Еще было бы интересно услышать больше оценочных суждений. Уже столько средств для статического анализа, что глаза разбегаются) С другой стороны, может быть, стоит использовать все эти инструменты сразу?
в репозитории как раз пример того что применяются сразу все инструменты анализа о которых я делал видео, одна из целей сделать из этого репозитория пример как можно разрабатывать пакет (скелет который можно брать за основу своего проекта) Если посмотреть лог сборки travis-ci.com/github/smpl/example/jobs/369277748 тот тут видно какие команды выполняются и результат их работы: phpcs phpstan phpinsights psalm phpmd и этот список при желание можно продолжить еще инструментами по своему вкусу (phpunit, infection это в планах чуть позже сделать), также в анализе видно сколько выполняется та или иная команда. В одном из следующих видео я планирую сделать просто "статический анализ" в котором рассказать что это, зачем и где я его применяю, как бы я советовал его применять подписчикам и тд.
@@kuvshinovee да. было бы очень полезно. Т.к. вот недавно наткнулся на eslint и стало интересно может есть стандарт де-факто как в js в php, ну по крайней мере чтобы успокоить внутренний вопрос а тот ли статический анализатор я выбрал.
Спасибо за понятное видео! А не знаете каким средством проверить код на предмет вызова несуществующих методов / свойств класса? Я использую VS Code. При этом ни PHP_codeSniffer ни Mess Detector не замечают что происходит обращение к $instance->property1 когда property1 даже не определена в классе.
я взял phpstan (видео по нему есть на канале вроде) в этом проекте сделал отдельный класс Magic где внутри создал экземпляр Hello и попробовал ему проставить свойство которое никак не определено. после запустил phpstan и он мне сообщил ``` $ ./vendor/bin/phpstan analyse Note: Using configuration file /home/smpl/project/example/phpstan.neon.dist. 2/2 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100% ------ ------------------------------------------------------------------ Line Magic.php ------ ------------------------------------------------------------------ 12 Access to an undefined property Kuvshinov\Example\Hello::$magic. ------ ------------------------------------------------------------------ [ERROR] Found 1 error ```
также psalm еще обнаружает ``` $ ./vendor/bin/psalm Scanning files... Analyzing files... ░E ERROR: UndefinedPropertyAssignment - src/Magic.php:12:9 - Instance property Kuvshinov\Example\Hello::$magic is not defined (see psalm.dev/038) $hello->magic = 123; ------------------------------ 1 errors found ------------------------------ Checks took 0.34 seconds and used 67.735MB of memory Psalm was able to infer types for 100% of the codebase ```
Спасибо за очередную годноту. Ждем финальное видео из серии про стат анализ с сравнением и обзором всех пройденных инструментов. Опять же радует количество полезного содержания, но не радует количество подписчиков, за подобное это очень мало( очень хотелось бы видеть продолжения подобного контента
Круто, установил на ларавеле проверить, тоже оказывается у него нашел достаточно предупреждений )
Спасибо за обзор! Еще было бы интересно услышать больше оценочных суждений. Уже столько средств для статического анализа, что глаза разбегаются)
С другой стороны, может быть, стоит использовать все эти инструменты сразу?
в репозитории как раз пример того что применяются сразу все инструменты анализа о которых я делал видео, одна из целей сделать из этого репозитория пример как можно разрабатывать пакет (скелет который можно брать за основу своего проекта)
Если посмотреть лог сборки travis-ci.com/github/smpl/example/jobs/369277748 тот тут видно какие команды выполняются и результат их работы:
phpcs
phpstan
phpinsights
psalm
phpmd
и этот список при желание можно продолжить еще инструментами по своему вкусу (phpunit, infection это в планах чуть позже сделать), также в анализе видно сколько выполняется та или иная команда.
В одном из следующих видео я планирую сделать просто "статический анализ" в котором рассказать что это, зачем и где я его применяю, как бы я советовал его применять подписчикам и тд.
@@kuvshinovee да. было бы очень полезно. Т.к. вот недавно наткнулся на eslint и стало интересно может есть стандарт де-факто как в js в php, ну по крайней мере чтобы успокоить внутренний вопрос а тот ли статический анализатор я выбрал.
Спасибо за понятное видео! А не знаете каким средством проверить код на предмет вызова несуществующих методов / свойств класса?
Я использую VS Code.
При этом ни PHP_codeSniffer ни Mess Detector не замечают что происходит обращение к $instance->property1 когда property1 даже не определена в классе.
я взял phpstan (видео по нему есть на канале вроде)
в этом проекте сделал отдельный класс Magic где внутри создал экземпляр Hello и попробовал ему проставить свойство которое никак не определено.
после запустил phpstan и он мне сообщил
```
$ ./vendor/bin/phpstan analyse
Note: Using configuration file /home/smpl/project/example/phpstan.neon.dist.
2/2 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
------ ------------------------------------------------------------------
Line Magic.php
------ ------------------------------------------------------------------
12 Access to an undefined property Kuvshinov\Example\Hello::$magic.
------ ------------------------------------------------------------------
[ERROR] Found 1 error
```
также psalm еще обнаружает
```
$ ./vendor/bin/psalm
Scanning files...
Analyzing files...
░E
ERROR: UndefinedPropertyAssignment - src/Magic.php:12:9 - Instance property Kuvshinov\Example\Hello::$magic is not defined (see psalm.dev/038)
$hello->magic = 123;
------------------------------
1 errors found
------------------------------
Checks took 0.34 seconds and used 67.735MB of memory
Psalm was able to infer types for 100% of the codebase
```
@@kuvshinovee спасибище!