提取Scala源代码注释

3
在我们的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

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

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表达式在它们自己的行上,并且不进行任何后处理,但这应该是一个很好的开始。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接