如何检测未跟踪的未来?
How to detect untracked future?
期货在我的代码中执行,未被检测到。
def f(): Future[String] = {
functionReturningFuture() // How to detect this?
Future("")
}
理想情况下,静态分析工具将有助于检测这一点。
越接近 WartRemover 的 NonUnitStatements
疣,但它不能只出错 Future
语句而跳过所有其他语句。
您遇到此类问题的事实可以作为反对使用 Future
并将其替换为某些 IO 的论据:Cats 的 IO
、Monix 的 Task
或 Scalaz ZIO
。说到他们,你先建立你的管道,然后你 运行 它。如果您在 return 中省略了 IO
值并且您没有以任何其他方式将其组合到结果中(flatMap
、map2
、for
理解等)它 不会 被执行 - 它仍然存在,但不会造成任何伤害。
如果你只想在 Future
上有更好的控制和错误,你可能必须写 your own WartRemover's wart or ScalaFix rule.
期货在我的代码中执行,未被检测到。
def f(): Future[String] = {
functionReturningFuture() // How to detect this?
Future("")
}
理想情况下,静态分析工具将有助于检测这一点。
越接近 WartRemover 的 NonUnitStatements
疣,但它不能只出错 Future
语句而跳过所有其他语句。
您遇到此类问题的事实可以作为反对使用 Future
并将其替换为某些 IO 的论据:Cats 的 IO
、Monix 的 Task
或 Scalaz ZIO
。说到他们,你先建立你的管道,然后你 运行 它。如果您在 return 中省略了 IO
值并且您没有以任何其他方式将其组合到结果中(flatMap
、map2
、for
理解等)它 不会 被执行 - 它仍然存在,但不会造成任何伤害。
如果你只想在 Future
上有更好的控制和错误,你可能必须写 your own WartRemover's wart or ScalaFix rule.