1

我正在使用 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 会被关闭。

4

0 回答 0