Internships
Register
Copyright © 2000—2025 JetBrains s.r.o.

Улучшения внутренних инструментов для поддержки анализа кода в PhpStorm

Description

PhpStorm — самая популярная среда разработки для PHP написанная на Java/Kotlin на базе intellij.
Продвинутый статический анализ кода — один из ключевых механизмов нашей IDE. В него входят как и большое множество
достаточно простых проверок (неправильно использованный оператор, использование несуществующего класса),
так и сложный анализ, эмулирующий выполнение анализируемой программы или разбирающий иерархию классов проекта.

Для разработки таких фичей мы используем ряд внутренних инструментов, в качестве задачи предлагается
поработать над улучшением одного из них и полностью спроектировать и реализовать с нуля другой.

Улучшения визуализации control flow graph

Многие сложные проверки анализа кода пишутся на основе построенного control flow графа,
он помогает эмулировать выполнение программы. Для больших и сложных исходных файлов такой граф практически невозможно
осознать без использования инструментов визуализации, поэтому у нас есть свой, однако его реализация всегда
оставалась достаточно базовой.

В качестве задачи надо будет поработать над улучшением удобства его использования
и, возможно, придумать для него новые фичи.

Трассировка пути вывода типа

Так как PHP динамический язык, то вывод типа для произвольного выражения становится достаточно сложной задачей.
У нас написан продвинутый движок вывода типов, он включает в себя как и множество эвристик, так и реализацию
достаточно обобщаемых правил. Сейчас мы подходим к моменту, когда IDE становится настолько умной, что становится
непонятно, почему именно в данном месте вывелся именно такой тип. Это может создавать сложности для пользователей, но в первую
очередь это усложняет работу нашим QA при проверке работы IDE.

В качестве задачи предлагается придумать эту фичу с нуля и попробовать реализовать ее, вписав в существующий
механизм вывода типов. Если все получится, то подумаем как обобщить ее в таком виде, чтобы внешние пользователи
тоже смогли ею пользоваться.

По вопросам можно писать на kirill.smelov@jetbrains.com

Requirements

  • Обязательно только знание Java и желание разбираться в новом
  • Знакомство со принципами работы статических анализаторов кода является плюсом
  • Знакомство с IntelliJ платформой является плюсом

Admission

Разработчики: Лето 2021

Mentor

Kirill Smelov

Mentor's location

Remote

Product/Team

PhpStorm

Tags

Java