【问题标题】:Best way to handle false unused imports in intellij在 intellij 中处理错误未使用导入的最佳方法
【发布时间】:2017-08-27 23:13:04
【问题描述】:

Intellij 错误地将 Scala 隐式的某些导入标记为未使用。 有没有办法防止它在针对特定导入显式优化它们时删除这些导入,而不是阻止整个项目的优化导入?

【问题讨论】:

  • 你能举个例子吗?从记忆中,我认为某些隐式解析导入会发生这种情况,但我不太确定要给出一个明确的例子。
  • 如果 IntelliJ 无法确定使用了导入,这可能是必要的。例如,github.com/xdotai/… 使用宏生成代码,所以我猜测 IntelliJ 只会删除一些导入,因为它看不到生成的代码。

标签: scala intellij-idea import scala-implicits


【解决方案1】:

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。将其提交到您的存储库以便共享可能是个好主意。

【讨论】:

    【解决方案2】:

    恐怕没有,我遇到过类似的问题,尤其是在使用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
    }
    

    希望对你有帮助。

    【讨论】:

    • 我正在寻找更优雅的东西,比如只是抑制警告,如果你有多个隐式要导入,这个解决方案可能会很丑:)但这会起作用..谢谢!
    • 是的,你是对的,它可能会变得非常混乱,但不幸的是,这是我所知道的唯一解决方法:(
    【解决方案3】:

    不幸的是,没有修复程序,问题似乎源于编译器本身。

    参见https://youtrack.jetbrains.com/issue/SCL-7335 导致https://issues.scala-lang.org/browse/SI-8773(2014 年报告,但尚未修复)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-10
      • 2017-09-13
      • 2015-01-19
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多