期货在我的代码中执行,没有被检测到。
def f(): Future[String] = {
functionReturningFuture() // How to detect this?
Future("")
}理想情况下,静态分析工具将有助于检测这一点。
发布于 2019-04-23 07:36:44
您可以从NonUnitStatements获得更接近的WartRemover,但它不能只出错Future语句并跳过所有其他语句。
如果您有这样的问题,可以作为反对使用Future并将其替换为一些IO: Cats‘s IO、Monix's Task或Scalaz ZIO的论据。当涉及到它们时,首先构建管道,然后运行管道。如果您省略了IO值作为回报,并且没有以任何其他方式(flatMap、map2、for理解等)将其组合到结果中,那么它就不会被执行--它仍然存在,但不会造成任何伤害。
如果您只想在Future上拥有更大的控制和错误,您可能需要编写你自己的WartRemover疣或ScalaFix规则。
https://stackoverflow.com/questions/55801435
复制相似问题