Лучший способ справиться с ложным неиспользованным импортом в intellij

Intellij ошибочно отметил, что некоторые импликации Scala не используются. Есть ли способ предотвратить удаление этих импортов при явной их оптимизации для конкретного импорта и не помешать оптимизированному импорту для всего проекта?

3 ответа

Решение

Боюсь, что нет, у меня были подобные проблемы, особенно при использовании akka и импорт неявного контекста выполнения из ActorSystem в некоторых случаях. Я рекомендую определить значение вместо импорта. Одним из таких примеров будет:

// Avoid importing the execution context like this
class MyActor extends Actor {
  import context.system.dispatcher
}

// Define it explicitly instead
class MyActor extends Actor {
  implicit val ec = context.system.dispatcher
}

Я надеюсь, это поможет вам.

Плагин IntelliJ Scala теперь позволяет вам подавлять это ложное предупреждение на уровне проекта. Это может не подходить для всех случаев, но это может помочь. Нажмите на лампочку, затем выберите "Пометить импорт как всегда используемый в этом проекте"

введите описание изображения здесь

В качестве альтернативы вы можете добавить это прямо в ваш код стиля XML:

<component name="ProjectCodeStyleConfiguration">
  <code_scheme name="Project" version="173">
    <ScalaCodeStyleSettings>
      <option name="alwaysUsedImports">
        <array>
          <option value="models.slickless.synchronized" />
          <option value="another.import.path" />
        </array>
      </option>
    </ScalaCodeStyleSettings>
  </code_scheme>
</component>

IntelliJ обычно хранит этот файл в .idea/codeStyles/Project.xml, Это может быть хорошей идеей добавить это в свой репозиторий, чтобы им можно было поделиться.

К сожалению, нет решения, и проблема, похоже, возникла в самом компиляторе.

См. https://youtrack.jetbrains.com/issue/SCL-7335 который ведет на https://issues.scala-lang.org/browse/SI-8773 (сообщалось в 2014 году, но пока не исправлено).

Другие вопросы по тегам