@prophp7

Страница 856 из 1387
?
30.12.2017
06:29:36
Блин, для кода же есть https://hastebin.com/ https://pastebin.com/

Sergey
30.12.2017
07:21:10
Ivan
30.12.2017
07:21:58
Не переживайте, я уже согласовал все с врачами, иду лечиться так балуюсь :)



Google
Ivan
30.12.2017
07:34:34
Хочеться сделать интерерсное координатное поле, разных пропорцый

Sergey
30.12.2017
08:52:25
кто-нибудь загонялся когда-нибудь по сравнению статических анализаторов?

сча сравниваю результаты phan и phpstan - последний нашел больше "ошибок", но серьезные не нашел в отличии от phan

Nick
30.12.2017
08:54:29
Запилишь статью мейби?

Sergey
30.12.2017
08:56:11
хз... на это времени много надо) может лучше в формате wiki?)

Nick
30.12.2017
08:56:36
В гист какой-нибудь хотябы

Sergey
30.12.2017
08:57:40
я пока разбираюсь с конфигурацией phpstan - может чего не доуказал... судя по всему разница основная в том что phpstan учитывает касты типов... и от этого не ловит ошибки. Ну мол я передаю string в конструктор, туда где нужен int и phan мне сказал что я лох (и там я действительно лох - забыл sprintf), а phpstan сказал что все норм только phpdoc поправить надо)

ну то есть weak types как-то надо вырубить для phpstan

но что меня прельщает в phpstan - намного проще добавлять свои правила

https://phpstan.org/r/a96b9bc847bb0a69ec2bea44af63d1e0

как поймать эту ошибку?

ошибка состоит в том что я пихаю string туда где нужен int

phan это дело ловит

Google
Sergey
30.12.2017
09:19:44
так, понятненько... phpstan игнорит часть проверок для конструктора... судя по всему бага

если через статический метод-фабрику - все ловится прекрасно

хм.... короч он только для исключений так себя ведет... очень странно

https://phpstan.org/r/888545c407cd0142df96fb788cc98b2b

Dmitry
30.12.2017
09:36:28
ну так они не стрикт

Sergey
30.12.2017
09:40:32
ну так они не стрикт
strict на это не влияет

можешь его убрать и проверить

просто игнорируется анализ вызова конструктора исключений

все, понятненько...

он их не знает просто, типы эти

рефлекшен php не может их достать

phan сделали что-то типа тайпингов для внутренних функций и методов

phpstan сделали втупую

Dmitry
30.12.2017
09:50:12
м.. тут даже не совсем в этом дело имхо... код в исключении не типизирован принципиально...

Sergey
30.12.2017
09:55:35
https://phpstan.org/r/f13c2dc954ae7d2ee3cd37274129226c

м.. тут даже не совсем в этом дело имхо... код в исключении не типизирован принципиально...
то что там нет тайпхинтов и phpstan не может узнать типы это так себе отговорка, типы то есть)

я добавил пример с ReflectionClass

public __construct ([ string $message = "" [, int $code = 0 [, Throwable $previous = NULL ]]] )

вот тебе типы для исключений

https://github.com/phpstan/phpstan/blob/8b56b454b71ea15196b73fb2fcb0155b17de431d/src/Reflection/FunctionReflection.php#L81-L101

Google
Sergey
30.12.2017
09:57:35
а вот например как в phpstan добавляют "знания о типах"

Dmitry
30.12.2017
09:57:40
есть, да... думал он тупо пропускает ибо позволяет этот code в наследниках менять тип

Sergey
30.12.2017
09:59:25
он не позволяет, просто php позволяет тебе для любого конструктора менять сигнатуру так как это не совсем "метод".

но типы это не мешает проверять)

https://github.com/phan/phan/blob/master/src/Phan/Language/Internal/FunctionSignatureMap.php

вот как в phan это решают

Dmitry
30.12.2017
09:59:57
getCode позволяет я имею ввиду ;)

Sergey
30.12.2017
10:01:41
ну это еще одна капля в бочку "неконсистентностей" php)

короч сделал багу для phpstan - пойду дальше дела делать

Dmitry
30.12.2017
10:07:16
интересно если вообще делать notice при нахождении паттернов % вне printf - много ли false positive будет...

Sergey
30.12.2017
10:11:06
лучше на типы смотреть)

ситуация когда забываешь sprintf или printf написать редка

Sergey
30.12.2017
10:11:58
а вот то что phpstan не учитывает сигнатуры внутренних php методов и расширений - это реально большой пласт потенциальных ошибок

вообще нужно что-то типа тайпингов из тайпскриптов ибо вендорные либы часто тоже тупят

в phan например вчера словил багу

у вендорной функции сигнатура isArray(array $array, string|callable|null $message = null)

и поскольку есть callable то любую строку phan воспринимал как вызов функции... которой нет)

но это на тему того что в php все плохо с callable и от них нужно отказываться. Но возможности поправить сигнатуру у меня как бы нет нормальной

Google
Sergey
30.12.2017
10:15:40
типы могут и совпасть
ну и хорошо, вероятность того что у меня типы совпадают с сигнатурой да еще и я забыл sprintf/printf - крайне мала

Admin
ERROR: S client not available

Sergey
30.12.2017
10:15:50
ну адаптеры делать
это ооооооочень не эффективно

Dmitry
30.12.2017
10:16:39
зато потом вендора легко менять...

а если не сложная либа, проще ее в проект затянуть и править

кстати... а композер при install проверяет хеш пакета скачанного?

Sergey
30.12.2017
10:20:43
кастыли короч предлагаешь)

Dmitry
30.12.2017
10:23:31
ну не сказал бы что костыли.. если считать адаптер костылем, то тогда много что костылем будет. А затягивать в проект... ну мы ж не на js пишем где любой пук в пакетах, к счастью

ну в общем от контекста зависит... можно просто статанализ научить конфигурить сигнатуры руками в конфиге

Sergey
30.12.2017
10:27:58
ну не сказал бы что костыли.. если считать адаптер костылем, то тогда много что костылем будет. А затягивать в проект... ну мы ж не на js пишем где любой пук в пакетах, к счастью
1. это кастыль поскольку ты не учитываешь причину по которой ты делаешь адаптер. Не для того что бы направление зависимостей было от менее стабильной к более стабильной (вендорная то в этом случае стабильнее) а потому что там косяк с типами и ты ничего с этим другого сделать не можешь. 2. затягивать все в проект потому что "мы не нода" это другая крайность которая свидетельствует о каких-то религиозных проблемах нежели говорит что это не кастыль

ну в общем от контекста зависит... можно просто статанализ научить конфигурить сигнатуры руками в конфиге
можно, но речь идет не о специфических вещах все же. Какой-нибудь итератор оно тоже не умеет анализировать и кучу чего еще.

и это часто стандартной библиотеки PHP а не экстеншен васи пупкина

стыдоба короч.... я разачарован

у phan другие проблемы но пока-что на нем посижу ибо без этой штуки количество мусора у phpstan побольше. Ну то есть у него ошибки вида "ну короч ты тут phpdoc не обновил" и это гдето 80% ошибок. phan сам типы вывел и ему хорошо

подумаешь что phan мой проект за 20 секунд сканит а phpstan за 5

Dmitry
30.12.2017
10:44:40
не обновленный пхпдок это же не есть гуд ;)

Muhammad
31.12.2017
04:35:41
Привет. Почему в docker-compose.yml указывают вторую версию конфига (в тех, которые я видел), а не используют последнюю?

M
31.12.2017
06:49:40
Привет. Почему в docker-compose.yml указывают вторую версию конфига (в тех, которые я видел), а не используют последнюю?
Сам хз, наверное чтобы динозавры которые докер композ из пакетов системы ставят не бежали плакать в ишьюс.

Google
Mikhail
31.12.2017
07:13:54
https://github.com/docker/compose/issues/4513#issuecomment-289620945

и выше

Muhammad
31.12.2017
07:19:12
Mikhail
31.12.2017
07:19:34
плюс там еще много ссылок на интересные треды

Новое — не всегда лучше.

Sergey
31.12.2017
09:22:17
Привет. Почему в docker-compose.yml указывают вторую версию конфига (в тех, которые я видел), а не используют последнюю?
я просто не юзаю плюшки которые есть в 3.0+ да и там есть несовместимые штуки которые я пока не придумал как заменить - жду пока пофиксят

Muhammad
31.12.2017
15:56:34
Как использовать докер при разработке я более менее понял, а вот как деплоить это дело на сервер не доходит

https://github.com/LaravelRUS/laravel.ru/blob/2.0/docker-compose.yml

Здесь пароль прописывается прямо в конфиге

Страница 856 из 1387