有没有一种简单的方法可以让 doxygen 只记录包中导出的 tcl 函数。配置文件中的命令可能吗?
1 回答
在 tcl 成为受支持的语言之前,我以前使用 doxygen 生成 Tcl 文档。有一个用于处理输入文件的配置选项。
FILTER_PATTERNS = *.tcl=bin\tcl_converter.bat
其中 bin\tcl_converter.bat 只是一个启动自定义处理器的批处理脚本。在添加 tcl 支持之前,我们使用它来最小化地将 tcl 语法更改为 doxygen 可以理解的内容。但是,您可以在这里使用它来删除所有未导出的方法。编写一个处理器来删除所有未导出的过程将非常简单。就像是:
- 读取输入文件(它将作为 [lindex $argv 0] 传递)到行数组中
- 遍历所有查找导出命令的行
- 遍历所有查找 procs 的行并匹配上面列出的导出命令
- 将所有当前过程及其前导码保存在一个字符串中 - 如果它与导出的命令匹配,则在最后写入输出文件
一个适当的解析器会使这个万无一失,但可能是矫枉过正。您可以只查找命名空间的开头和 proc 的开头并设置状态机。启动命名空间后,只需将每一行附加到字符串并使用info complete $accumulated_ns_string进行测试。同样,一旦你看到一个proc命令,开始将这些行累积到一个不同的字符串中,并在每行之后继续检查info complete $accumulated_proc_string。一旦评估为真,您可以打印或不打印并重置字符串。
使用完整的信息将大大简化生活 - 所有的诡计都将跟踪命名空间并根据完全限定的导出名称评估完全限定的 proc 名称,以确定是否将其打印到输出文件。有一些代码发生在命名空间之外或动态生成的导出的病态案例,但这种方法在我之前的工作中与我们投入的所有内容相比效果很好。