Почему проекты SBT в IntelliJ IDEA ломаются и требуют пересоздания? - PullRequest
0 голосов
/ 11 октября 2018

При использовании SBT с IntelliJ IDEA проект часто переходит в плохое состояние, когда ошибки компилятора возникают там, где их не должно быть, когда они не возникают в терминале.

Проект будет sbt compile в терминале без проблем, но останется испорченным в IntelliJ IDEA, пока я не удалю каталог .idea и не нажму «Создать новый проект из существующих источников».

Настройка использования проекта SBT в IntelliJ для использованияоболочка SBT совсем не помогает.

Прежде всего, почему это происходит?Какие факторы способствуют возникновению проблемы:

  1. Ошибки в SBT
  2. Ошибки в ядре или системе плагинов IntelliJ IDEA
  3. Ошибки в плагине IntelliJ IDEA SBT
  4. Фундаментальный дизайн SBT 1.2 или более ранних версий
  5. Фундаментальный дизайн IntelliJ IDEA или его системы плагинов

И, наконец, как можно избежать этой поломки?

1 Ответ

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

Насколько я знаю, Intellij IDEA создает свою собственную структуру памяти для представления фактического состояния проанализированных файлов, вплоть до представления, которое включает все полезные функции, которые вы получаете из IDE (ссылки, использования, документы, закорючки дляошибки компилятора, ...).

Эта модель не выводится в сборке sbt.Плагин позволяет IDE создавать такое представление в памяти на основе файла сборки sbt, а в последнее время - с использованием самого движка sbt (его необходимо включить в настройках).

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

Обычно, когда вы что-то изменяете в файле сборки, IDEA автоматически обновляет состояние сборки или предлагает вам сделать это (когда фокус находится в редакторе файла сборки)).Этого должно быть достаточно, чтобы «выровнять» сборку с IDE.

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

Как мы говорим,В настоящее время предпринимаются многочисленные усилия для исправления этой ситуации

  • реализация scala LSP находится в процессе разработки, который фактически соединится с базовым инструментом сборки для предоставления полезной информации любому совместимому редактору (любомуКлиент LSP)
  • в дополнение к усилиям LSP исследуется BSP (протокол сервера сборки) , определение которого должно позволять использовать различные инструменты сборки (sbt, mill, cbt, ...)для лучшей интеграции с базовым компилятором и различными редакторами

Более подробную информацию можно найти в Scala Blog Announcement

...