我正在使用 Visual Studio,我希望 Doxygen 从我的 TODO 任务中创建一个 todolist。
我发现文章Getting Doxygen and MSVC TODO tags to work together,它建议使用 Doxygen FILE_VERSION_FILTER 选项将 MS 样式 TODO 转换为 Doxygen 样式 @todo,但示例使用 sed,它在 nightly build 机器上不可用。VBScript 似乎是一个合适的解决方案,因此我创建了以下脚本来进行替换:
Const ForReading = 1
' Input file is passed as argument
inputFilePath = Wscript.Arguments(0)
strOldText = "/{2,3}\s*TODO:{0,1}"
strNewText = "/// @todo"
' Read input file
Set fso = CreateObject("Scripting.FileSystemObject")
Set inFile = fso.OpenTextFile(inputFilePath, ForReading)
strText = inFile.ReadAll
inFile.Close
' Create regular expression.
Set regEx = New RegExp
regEx.Global = True
regEx.Multiline = False
regEx.IgnoreCase = True
regEx.Pattern = strOldText
' Make replacement.
strNewText = regEx.Replace(strText, strNewText)
Set objStdOut = WScript.StdOut
objStdOut.Write strNewText
我将 FILE_VERSION_FILTER 选项设置为:
FILE_VERSION_FILTER = "cscript.exe //NoLogo Documentation/versionFilter.vbs"
不幸的是,当我使用 Doxygen 构建文档时,没有生成我的 todolist。
我已手动将@todo 项目添加到我的代码中,以验证 Doxygen 是否已正确设置以生成 todolist。
从命令行运行时,脚本的输出似乎可以正确地进行替换。
我还通过将输出保存到文件以及 StdOut 来验证运行 Doxygen 时正在调用脚本。
我试过寻找示例,但没有一个使用 VBScript 或我可用的任何工具。任何建议将不胜感激。
谢谢
PS 我查看了 Doxygen 的输出,发现了这个错误:
versionFilter.vbs(27, 1) (null):管道已经结束。
其中第 27 行对应于脚本中的最后一行。该文件部分输出,完整文件写入我的测试文件。我不确定为什么 StdOut 会被关闭。