2012-09-04(火) [長年日記]
_ Jenkins sourcemonitor-plugin ほげり
1か月ほど前の話ですが,Jenkins の jenkinsci/sourcemonitor-plugin が壊れていて,それを直そうとしている ZOETROPE さんの zoetrope/sourcemonitor-plugin を更に直して野良ビルドして使っています.
ところで,SourceMonitor の使い方が不便です.SourceMonitor 付属のヘルプやサンプルのファイルを読む限りではパラメータを渡して実行することができないようで,事前に XML にパラメータを書いておいて実行時にそれを喰わせて実行する仕様なので,Jenkins のジョブの設定のビルド手順の追加でWindowsバッチコマンドの実行を以下のようにしています.
echo ^<?xml version="1.0" encoding="UTF-8" ?^> > sourcemonitor_commands.xml echo ^<sourcemonitor_commands^> >> sourcemonitor_commands.xml echo ^<write_log^>true^ >> sourcemonitor_commands.xml echo ^<command^> >> sourcemonitor_commands.xml echo ^<project_file^>Hoge.smproj^ >> sourcemonitor_commands.xml echo ^<project_language^>C#^ >> sourcemonitor_commands.xml echo ^<source_directory^>Hoge^ >> sourcemonitor_commands.xml echo ^<file_extensions^>*.cs^|*.Designer.cs^ >> sourcemonitor_commands.xml echo ^<include_subdirectories^>true^ >> sourcemonitor_commands.xml echo ^<parse_utf8_files^>true^ >> sourcemonitor_commands.xml echo ^<ignore_headers_footers^>3^ >> sourcemonitor_commands.xml echo ^<export^> >> sourcemonitor_commands.xml echo ^<export_file^>dump.xml^ >> sourcemonitor_commands.xml echo ^<!--export_type^>1 (project summary as XML)^ >> sourcemonitor_commands.xml echo ^<export_type^>1^ >> sourcemonitor_commands.xml echo ^<!--export_type^>2 (checkpoint details as XML)^ >> sourcemonitor_commands.xml echo ^<export_option^>Include method metrics: option 3^ >> sourcemonitor_commands.xml echo ^</export^> >> sourcemonitor_commands.xml echo ^<!--delete_checkpoint /--^> >> sourcemonitor_commands.xml echo ^</command^> >> sourcemonitor_commands.xml echo ^</sourcemonitor_commands^> >> sourcemonitor_commands.xml "C:\Program Files (x86)\SourceMonitor\SourceMonitor.exe" /C sourcemonitor_commands.xml
なぜこのような面倒なことをしているかというと,私は開発メンバーではないのでリポジトリの中身をいじれないからです.commit 権限があれば XML ファイルを入れておけば済む話なんですが.
ここで1つ問題が... コマンドプロンプトからSourceMonitorを実行するとプロジェクトの全ての*.csファイルを集計してくれるのですが,Jenkins 経由で実行するとなぜか特定の1つのファイルしか集計されないのです.コマンドの引数や与える sourcemonitor_commands.xml は全く同じなのに結果が異なるのです.どこに問題があるのか今のところ見当がつきません.
取り敢えずビルドがとおって動くという意味で pull request は出していますが,今のところ全く反応がありません.まぁいいか.