Yoichi's diary



2012-04-06

_ scan-build (LLVM) を試してみた。

Ubuntu環境にて pupnpのbranch-1.6.x を対象にして試した。まずは clang で普通にビルドして成功するのを確認
% CC=clang ./configure
% make clean all
つづいて解析
% make clean
% ./configure
% scan-buld -k make
もしくは以下のようにしてもいい
% make clean
% scan-build ./configure
% scan-build make
すると、CC=/usr/share/clang/scan-build/ccc-analyzerしてビルドしつつ解析を行い結果を集計してくれて、最後に
scan-build: 19 bugs found.
scan-build: Run 'scan-view /tmp/scan-build-2012-04-06-2' to examine bug reports.
と表示される。実際に scan-view を実行すると web server を起動の上でブラウザを起動して結果を表示してくれる。
結果の表示例としてはscan-build: running the analyzer from the command lineにちらっとスクリーンショットが載っているが、コード中にインラインで説明が入り問題に至るコードパスを示してくれる("scan-build results" でググると具体的な解析結果の例がいろいろ見つかります)。
あとは変更すべきかどうか、変更するならどう変更するべきかをじっくり考えて(必要ならテストプログラム書いて)、変更して、テスト(scan-build でビルド成功して警告減ってること、テストプログラムで問題解消してることを確認)して、コミット
解析させるまでの手順が簡単なのと、結果をわかりやすく表示してくれるのがいいね。

_ Jenkinsのマルチ構成を試してみた。

Building a matrix projectを参照して試した。注意点は
  • プロジェクト作成時にマルチ構成を選んでおく必要がある
  • 既存のマルチ構成でないプロジェクトに対する設定変更では移行できない
  • スレーブノードを固定する設定の場所が通常のプロジェクトと違う
ターゲットにしたのはVisual Studioのソリューションで、スレーブノード固定で複数のソリューション構成をビルドするもの。
  • よかったこと
    • これまで構成毎にプロジェクト作っていたのがプロジェクト一つになるのでプロジェクト数が抑えられる
    • ひとつのプロジェクトにまとまるので同じ対象の別構成ということが見やすくなる(どれか一つでもコケると親玉は赤色になる。中を見るとそれぞれの成功失敗が見れる)
  • 問題点
    • 構成毎にスケジュールすることができない

2012-04-07

_ お花見

桜ノ宮で同僚とか元同僚とか集合してお花見。


2012-04-08

_ 万博公園

家族でお花見。広場で何かのイベントをやっていて焼き牡蠣食した。


2012-04-17

_ Jenkinsのマルチ構成を試してみた。の続き

いろいろひっかかったのでメモ
  • 制御用ジョブがマスターノードで実行される
  • svn のクリーンチェックアウトのエミュレートを選択するとビルド用の作業コピーが毎回チェックアウトされる
  • 制御用ジョブでSCMからチェックアウトする。
    • ビルド走ってる裏でこれによるディスクアクセスが発生→ビルド時間が伸びる
    • flyweight jobは同時実行数の制約外なので抑止できない
    • 何か回避策はありませんか?
  • 軸毎にSCMからチェックアウトする。

2012-04-20

_ [jenkins] Clang Scan-Build Plugin

Clang Scan-Build Pluginを試してみた。元々xcode用のプラグインのようだがpublisher は使えるだろうということで。対象にしたのはpupnp。 結論だけだが、scan-build実行時にpluginで決め打ちされてる出力先を指定をしてやればレポートを収集してくれた。 シェルスクリプトとして以下の内容を設定した:
rm -rf clangScanBuildReports
./bootstrap
scan-build ./configure --enable-debug --enable-ipv6
scan-build -o clangScanBuildReports make clean all