在Scala中提取源代码注释

时间:2013-09-15 21:58:56

标签: scala

在我们的Scala代码中,我们有许多用户可能需要理解的跟踪语句,因此我们自然希望将其记录下来。理想情况下,我们应该能够在代码本身中记录它们,并自动从源代码创建文档。

跟踪字符串不需要本地化,所以我更愿意将它们嵌入到源本身中,而不是将它们放在资源文件中。

目前典型的一行可能是:

trace("value for x is %s" format x)

我希望它是这样的(虽然这是一个简单的例子)

trace("value for x is %s" format x) //displays the value of [business name for x]

然后让工具通过解析源文件并输出跟踪信息以及文档来自动生成文档。

我想可以通过使用注释并在源代码上运行自定义工具来完成,但我以前从未做过类似的事情,并且会很感激建议。

1 个答案:

答案 0 :(得分:0)

我认为没有任何工具可以做到这一点,但你可以写一个:

val TRACE = "[ \t]*trace *\\((.*)\\) *//(.*)".r

case class Trace(expression: String, comment: String)

def documentFile(file: String): List[Trace] = {
  io.Source.fromFile(file).lines.flatMap{
    case TRACE(e,c) => Some(Trace(e,c))
    case _          => None
  }.toList
}

您已遍历所有源文件,然后您可以将Trace实例转换为您想要的任何输出格式。

当然,它假设trace表达式在他们自己的行上并且它不进行任何后处理,但它应该是一个好的开始。