Около 3-х месяцев — в основном во внерабочее время. Долго. Во-первых, это первый опыт в плагинах, и работы там действительно очень много. А во-вторых, документации по внутренностям PhpStorm крайне мало, аналогичных плагинов нет, подглядеть некуда, поэтому — эксперименты и декомпилированные исходники. И спасибо ребятам из JetBrains, отвечавшим на мои вопросы на первых порах.
Нет, все типы выводятся полностью локально, а ошибки — это опять-таки локальные инспекции на определённые паттерны кода. Никакие части KPHP внутрь не интегрированы, никуда удалённо запросы не посылаются. Это технически невозможно, да и бессмысленно. Всё происходит прям в IDE.
Вроде бы нет никакого оверхеда, т.е. скорость работы PhpStorm и потребление CPU не изменилось. С поправкой на то, что единожды проходит полная переиндексация, это заметно греет проц на больших проектах.
Нет, конечно. KPHP честно выводит всё по всем достижимым исходникам, а плагин работает очень поверхностно. Он доверяет phpdoc’ам, анализирует только локальный scope и уж точно ничего не поймёт в нетипизированном коде. Поэтому даже если плагин считает, что всё ок, то KPHP может ругнуться. Но базовый принцип такой: чем проще код и чем он явнее типизирован, тем больше шансов локально вывести типы и подсветить ошибки при наличии.
Нет.
Нет. Чтобы shape и tuple были нормальными, нужно было подхачить именно вывод типов, а не просто дать какие-то подсказки на месте курсора. Тот плагин из спец. синтаксиса в целом даже умеет после →стрелочки выводить кастомные подсказки — но которые он формирует самостоятельно, и только по горячей клавише. Поэтому там не работают ни parameter info, ни go to, а главное — find usages и рефакторинг.
Если не поддерживать плагин, то на следующую версию PhpStorm он просто не поставится. Поддержка будет нужна обязательно. Дело осложняется тем, что плагин использует много недокументированного API, и есть вероятность, что оно поменяется в будущем и что-то будет работать не так. Буду бдить, чтобы эффект был минимальный. В конце концов, если уж получилось всё это сделать сейчас, то вряд ли что-то изменится так уж кардинально в будущем.
Ответ здесь: Установка и настройка.
Кратко: часть вещей действуют на все проекты сразу, а часть включается per-project.
Пишите в личку ВК или на гитхабе, буду рад адекватной помощи. Но предупреждаю: область очень специфичная, вникать сложно, а из документации — только комментарии в коде.