Компилируют ли IDE ваш исходный код на Java или Scala для статического анализа? - PullRequest
0 голосов
/ 08 октября 2018

IDE предлагают много интересных функций, таких как переход к объявлению и подсветка синтаксиса.Просто из любопытства, для того чтобы предоставить эти функции, должна ли моя IDE (IntelliJ) сначала скомпилировать мой исходный код?Как я заметил, всякий раз, когда я открываю новый проект в моей IDE, возникает задержка, и он генерирует «целевую» папку.Компилирует ли IDE какой-либо из моих исходных кодов без явного запуска кода или указания на его компиляцию?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Здесь происходит несколько вещей.Когда вы импортируете проект sbt, IntelliJ запускает sbt для извлечения структуры проекта.Это занимает некоторое время, и sbt сам создает папку target.

Большинство функций IDE, таких как переход к объявлению, не требуют компиляции.Вместо этого IntelliJ анализирует код в своей собственной модели внутреннего синтаксиса, которая позволяет индексировать, подсвечивать ошибки и так далее.Эта модель позволяет проводить много рефакторингов и анализа даже кода, в котором есть ошибки компиляции.Индексирование обычно происходит после первоначального импорта в фоновом процессе.

0 голосов
/ 08 октября 2018

Это в значительной степени зависит от IDE.

IntelliJ использует процесс индексации, в котором он берет весь ваш проект и индексирует его в своих внутренних структурах, известных как Psi* классы.Затем на эти классы ссылается IDE для обеспечения статического анализа и определения потока кода.

Я не так хорошо знаком с Eclipse, но абстрактное синтаксическое дерево существует и, вероятно, аналогично внутренней структуре IntelliJ.

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

...