Есть ли в Scala эквивалент SuppressWarnings? - PullRequest
49 голосов
/ 17 августа 2010

Мне было интересно, есть ли у scala эквивалент * java @ SuppressWarnings , который можно применить к функции или что-либо еще, чтобы игнорировать любые предупреждения об устаревании [1], которые испускает функция?

1:Соответствующее предупреждение в моем случае: method stop in class Thread is deprecated: see corresponding Javadoc for more information. Я знаю о проблемах с остановкой, однако все еще есть случаи, когда из-за устаревшего кода мы должны его использовать.

Ответы [ 3 ]

26 голосов
/ 18 августа 2010

Нет, и запрос на улучшение [1] для такой функции был закрыт как wontfix.

Согласен, это было бы полезно.Я ожидаю, что основная команда Scala не против этой идеи, но у нее ограниченные ресурсы и много более высоких приоритетов.

[1] https://issues.scala -lang.org / browse / SI-1781

21 голосов
/ 15 июля 2015

Для этого есть простой плагин компилятора: глушитель (немного бесстыдный плагин)

0 голосов
/ 12 июля 2018

Вот как подавить все предупреждения в sbt:

import sbt._
import Keys._
import KeyRanks.DTask
import xsbti.{Reporter, Problem, Position, Severity}

private lazy val compilerReporter = TaskKey[xsbti.Reporter](
  "compilerReporter",
  "Experimental hook to listen (or send) compilation failure messages.",
  DTask
)

val ignoreWarnings = Seq(
  compilerReporter in (Compile, compile) :=
    new xsbti.Reporter {
      private val buffer = collection.mutable.ArrayBuffer.empty[Problem]
      def reset(): Unit = buffer.clear()
      def hasErrors: Boolean = buffer.exists(_.severity == Severity.Error)
      def hasWarnings: Boolean = buffer.exists(_.severity == Severity.Warn)
      def printSummary(): Unit = {

        print("\033c")
        if (problems.nonEmpty) {
          problems.foreach{ p =>
            println("=====================================================")
            println(p.position)
            println(p.message)
            println()
            println()
          }
        }
      }
      def problems: Array[Problem] = buffer.toArray

      def log(problem: Problem): Unit = {
        if (problem.severity == Severity.Error) {
          buffer.append(problem)
        }
      }
      def log(pos: Position, msg: String, sev: Severity): Unit = {
        log(new Problem {
          def category: String = "foo"
          def severity: Severity = sev
          def message: String = msg
          def position: Position = pos
        })
      }
      def comment(pos: xsbti.Position, msg: String): Unit = ()
    }
)
...