在Scala中提取源代码注释
在Scala代码中,我们有许多用户可能需要理解的跟踪语句,因此我们自然希望对它们进行记录。理想情况下,我们应该能够在代码本身中记录它们,并从源代码自动创建文档 跟踪字符串不需要本地化,因此我更愿意将它们嵌入源代码本身,而不是首先将它们放在资源文件中 目前,一个典型的行可能是:在Scala中提取源代码注释,scala,Scala,在Scala代码中,我们有许多用户可能需要理解的跟踪语句,因此我们自然希望对它们进行记录。理想情况下,我们应该能够在代码本身中记录它们,并从源代码自动创建文档 跟踪字符串不需要本地化,因此我更愿意将它们嵌入源代码本身,而不是首先将它们放在资源文件中 目前,一个典型的行可能是: trace("value for x is %s" format x) 我希望它是这样的(尽管这是一个简单的例子) 然后使用工具自动生成文档,方法是解析源文件并输出跟踪信息以及文档 我想这可以通过使用注释和在源代码上运行
trace("value for x is %s" format x)
我希望它是这样的(尽管这是一个简单的例子)
然后使用工具自动生成文档,方法是解析源文件并输出跟踪信息以及文档
我想这可以通过使用注释和在源代码上运行自定义工具来实现,但我以前从未做过类似的事情,希望您能提出建议。我认为没有任何工具可以做到这一点,但您可以编写一个:
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
表达式位于它们自己的行上,并且不进行任何后处理,但这应该是一个良好的开端
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
}