Насколько я знаю, 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