gcovのログファイルをマージするgccr.plのバグ退治をした

id:eel3:20090326:1238028836 で入手したgccr.plで、10000行以上のソースファイルのログをマージしようとしたらパースに失敗した。

ちょっと悩んだのだけど、要はパースの時に例えば「/^\s+-:\s+(\d+):(.*)/」のような正規表現でマッチングしていて、

        -:   10:

こんな行にはマッチするけど、

        -:10000:

この行にはマッチしない。「-:」と「10000」の間に空白文字が含まれていないので、マッチしなくて当たり前だ。

一応「/^\s+-:\s*(\d+):(.*)/」に修正して対応。まあ10000行以上のソースを取り扱っている私のほうが悪い気もするけど。

ところでつい最近気づいたのだけど、gcovにログをマージして出力するオプションが追加されるかもしれない。いや、実は既に追加されているかも。

  • m/--merge-resultsというオプションを追加するパッチ。「patch approved.」だから、承認されたということだろうか?

ただ、仮に取り込まれるとして、GCCのどのバージョンからか分からない。4.3以降だろうか?