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のソリューションで、スレーブノード固定で複数のソリューション構成をビルドするもの。
  • よかったこと
    • これまで構成毎にプロジェクト作っていたのがプロジェクト一つになるのでプロジェクト数が抑えられる
    • ひとつのプロジェクトにまとまるので同じ対象の別構成ということが見やすくなる(どれか一つでもコケると親玉は赤色になる。中を見るとそれぞれの成功失敗が見れる)
  • 問題点
    • 構成毎にスケジュールすることができない