在 intellij 中处理错误的未使用导入的最佳方法
Best way to handle false unused imports in intellij
Intellij 错误地将某些 Scala 隐式导入标记为未使用。
有没有一种方法可以防止它在针对特定导入显式优化它们时删除那些导入,而不阻止对整个项目进行优化导入?
恐怕没有,我遇到过类似的问题,尤其是在某些情况下使用 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
}
希望对你有所帮助。
遗憾的是,没有解决方法,问题似乎出在编译器本身。
参见 https://youtrack.jetbrains.com/issue/SCL-7335 which leads to https://issues.scala-lang.org/browse/SI-8773(2014 年报告,但尚未修复)。
IntelliJ 的 Scala 插件现在允许您在 project-wide 级别抑制此错误警告。这可能并不适合所有情况,但它可以提供帮助。点击灯泡,然后 select "Mark import as always used in this project"
或者您可以直接将其添加到您的代码样式中 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
。将其提交到您的存储库以便共享可能是个好主意。
Intellij 错误地将某些 Scala 隐式导入标记为未使用。 有没有一种方法可以防止它在针对特定导入显式优化它们时删除那些导入,而不阻止对整个项目进行优化导入?
恐怕没有,我遇到过类似的问题,尤其是在某些情况下使用 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
}
希望对你有所帮助。
遗憾的是,没有解决方法,问题似乎出在编译器本身。
参见 https://youtrack.jetbrains.com/issue/SCL-7335 which leads to https://issues.scala-lang.org/browse/SI-8773(2014 年报告,但尚未修复)。
IntelliJ 的 Scala 插件现在允许您在 project-wide 级别抑制此错误警告。这可能并不适合所有情况,但它可以提供帮助。点击灯泡,然后 select "Mark import as always used in this project"
或者您可以直接将其添加到您的代码样式中 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
。将其提交到您的存储库以便共享可能是个好主意。