Как обнаружить нетронутое будущее? - PullRequest
2 голосов
/ 23 апреля 2019

Фьючерсы выполняются в моем коде и не обнаруживаются.

def f(): Future[String] = {
  functionReturningFuture() // How to detect this?
  Future("")
}

В идеале инструмент статического анализа поможет обнаружить это.

1 Ответ

3 голосов
/ 23 апреля 2019

Чем ближе вы можете получить NonUnitStatements бородавка от WartRemover, но он не может ошибаться только в Future заявлениях и пропускать все остальные.

Тот факт, что у вас есть такая проблемаможет быть использовано в качестве аргумента против использования Future и замены его на некоторые операции ввода-вывода: Cats 'IO, Monix's Task или Scalaz Z IO.Когда дело доходит до них, вы сначала строите свой конвейер, а потом запускаете его.Если вы пропустили значение IO в ответ и не скомпоновали его в результат другим способом (flatMap, map2, for понимание и т. Д.), То не будет выполнено -он все еще будет там, но это не принесет вреда.

Если вы хотите иметь больший контроль и ошибки только на Future, вам, вероятно, придется написать бородавку вашего собственного WartRemover или Правило ScalaFix .

...