java - sbt中核心库的约束

标签 java scala sbt

有没有办法在 sbt 中对核心库创建约束?

例如:

我不希望任何人使用 Java Date 类,有没有办法为所有直接导入这些类创建编译错误/警告?

最佳答案

使用Wart Remover 。改编自述文件中的示例,这应该类似于(未经测试)

import org.brianmckenna.wartremover.{WartTraverser, WartUniverse}

object JavaDate extends WartTraverser {
  def apply(u: WartUniverse): u.Traverser = {
    import u.universe._

    val JavaDate: Type = typeOf[java.util.Date]
    val JavaCal: Type = typeOf[java.util.Calendar]
    new Traverser {
      override def traverse(tree: Tree) {
        tree.tpe match {
          case JavaDate =>
            u.error(tree.pos, "java.util.Date not allowed")
          case JavaCal =>
            u.error(tree.pos, "java.util.Calendar not allowed")
          case _ =>
        }
        super.traverse(tree)
      }
    }
  }
}

关于java - sbt中核心库的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26341480/

相关文章:

scala - "Appending"通过 Enumeratee 到 Enumerator 的元素

scala - IntelliJ IDEA 2020.3 Scala 插件不适用于新项目

java - Log4j 是一个死项目吗?

java - 按数值排序 List<>

java - 无法运行使用 Java 10 从 Spring Initializer 创建的基于 Maven 的 Spring 项目

java - 当我更改 borderLayout 时,JPanel 不会移动

scala - 如何使用模式匹配在 Scala 中获取非空列表?

scala - 从不重新计算相同的部分评估两次的意义上说,部分函数应用程序可以是惰性的吗?

playframework - 运行 Play 命令时如何关闭颜色代码?

intellij-idea - IDEA 在尝试解析喷雾模板的 build.sbt 文件时提示 Revolver.settings