私は Visual Studio を使用しています。Doxygen で TODO タスクから todolist を作成したいと考えています。
Getting Doxygen and MSVC TODO tags to work togetherという記事を見つけました。この記事では、Doxygen FILE_VERSION_FILTER オプションを使用して MS スタイルの TODO を Doxygen スタイルの @todo に変換することを提案していますが、この例ではナイトリー ビルド マシンでは使用できない sed を使用しています。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 が閉じられる理由がわかりません。