gpt4 book ai didi

scala - 是否可以限制编译器显示的错误数量?

转载 作者:行者123 更新时间:2023-12-01 13:49:11 24 4
gpt4 key购买 nike

有时在进行某些类型的重构时,编译器可能会生成数百个错误。我喜欢从顶部开始解决这些错误,但错误的绝对数量会使一直向上滚动非常麻烦。

是否可以让 Scala 编译器限制它显示的错误数量,以便更容易从顶部开始修复错误?显然,以可能不得不多次运行编译器为代价。

最佳答案

是的,因为 2.12可以使用自定义报告程序。

这是一个记者的例子:

package myrep

import scala.tools.nsc.Settings
import scala.tools.nsc.reporters.ConsoleReporter

import scala.reflect.internal.util._

class MyReporter(ss: Settings) extends ConsoleReporter(ss) {
var deprecationCount = 0
override def warning(pos: Position, msg: String): Unit = {
if (msg contains "is deprecated") deprecationCount += 1
super.warning(pos, msg)
}
override def hasWarnings: Boolean = count(WARNING) - deprecationCount > 0
override def reset() = { deprecationCount = 0 ; super.reset() }

// limit total
var limit = 5
override def display(pos: Position, msg: String, severity: Severity): Unit =
if (severity != ERROR || severity.count <= limit) print(pos, msg, severity)
}

你的记者类必须在工具类路径上:

$ ~/scala-2.12.0-M3/bin/scalac -toolcp . -Xreporter myrep.MyReporter test.scala

您可以选择以某种方式配置限制,也许使用系统属性,但配置不是内置的。

对于这个示例文件,有六个错误,但报告了五个:

package tester

@deprecated("Don't use me", since="2.12.0")
class C

object Test extends App {
Console println s"${new C}"

val x: String = 42

val y: Int = "42"

val z: Int = 2.0

Console println (42 drop 1)
Console println (42 take 1)
Console println (42 shift 1)
}

关于scala - 是否可以限制编译器显示的错误数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33242616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com