Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Hudson Warnings PluginとVCBuild /M2

タグ: Hudson VS2005

VCBuild.exeは/Mオプションを使うことでソリューション内の複数のプロジェクトを並行ビルドできる。

C:\temp>VCBuild.exe /M2 test.sln

並行ビルドでは複数のビルドプロセスの診断メッセージが入り交じることになるので、そのメッセージがどのプロセスに属するものかを識別するために、診断メッセージの先頭にはビルドプロセス番号が記される。

1>ビルド 開始: プロジェクト: Hoge、構成: Debug|Win32
2>ビルド 開始: プロジェクト: Fuga、構成: Debug|Win32
1>コンパイルしています...
2>コンパイルしています...
1>hoge.cpp
2>fuga.cpp
1>c:\temp\hoge\hoge.cpp(15) : warning C6386: バッファ オーバーランです:
1>c:\temp\hoge\hoge.cpp(24) : warning C6386: バッファ オーバーランです:
1>c:\temp\hoge\hoge.cpp(34) : warning C6386: バッファ オーバーランです:
1>c:\temp\hoge\hoge.cpp(35) : warning C6386: バッファ オーバーランです:
2>c:\temp\fuga\fuga.cpp(13) : warning C6386: バッファ オーバーランです:
2>c:\temp\fuga\fuga.cpp(36) : warning C6385: 無効なデータです:

しかるにHudson Warnings Plugin 3.2のMSBuildパーサはこのビルドプロセス番号を含む表記に正しく対応しておらず、コンパイラの警告ビューの詳細タブからソースコードを表示させようとしても

Caused by: java.io.FileNotFoundException: 1>c:\temp\hoge\hoge.cpp (No such file or directory)

とエラーになってしまう。
原因はMSBuildパーサがビルドプロセス番号までファイルパスの一部と認識しているからなので、MsBuildParser.javaの正規表現の先頭部分

private static final String MS_BUILD_WARNING_PATTERN = "(?:(?:

にビルドプロセス番号を無視する記述を加えて

private static final String MS_BUILD_WARNING_PATTERN = "(?:\\d+>)?(?:(?:

こうすれば表示できるようになる。

スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/235-7c44edc6
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。