‘Trac’ タグのついている投稿
2010
Jul
28
01:45
Trac のレポート機能を使ってバグ収束曲線を描いてみた
こんにちは、金子です。
今回は Trac のレポート機能を使って簡単な集計をしてみたいと思います。
まず、レポート一覧画面からこんな SQL 文を入力してレポートを作成します。
SELECT day AS 日付, substr("日月火水木金土", w, 1) AS 曜日,
inc AS 増, -dec AS 減,
(CASE WHEN inc + dec > 0 THEN '+' ELSE '' END)||(inc + dec) AS 増減,
(CASE WHEN w == 7 THEN "background:#DFF"
WHEN w == 1 THEN "background:#FDC"
ELSE "background:white" END) AS __style__ FROM
(SELECT distinct t0.day AS day, strftime('%w', t0.day) + 1 AS w,
(CASE WHEN t1.delta IS NULL THEN 0 ELSE t1.delta END) AS inc,
(CASE WHEN t2.delta IS NULL THEN 0 ELSE t2.delta END) AS dec FROM
(SELECT strftime('%Y-%m-%d', time, 'unixepoch') AS day FROM ticket UNION
SELECT strftime('%Y-%m-%d', time, 'unixepoch') AS day FROM ticket_change
WHERE field='status' AND newvalue='reopened') AS t0
LEFT OUTER JOIN
(SELECT day, sum(delta) AS delta FROM
(SELECT strftime('%Y-%m-%d', time, 'unixepoch') AS day,
id AS ticket, 1 AS delta FROM ticket UNION
SELECT strftime('%Y-%m-%d', time, 'unixepoch') AS day,
ticket, 1 AS delta FROM ticket_change
WHERE field='status' AND newvalue='reopened')
GROUP BY day) AS t1 ON t0.day=t1.day
LEFT OUTER JOIN
(SELECT day, sum(delta) AS delta FROM
(SELECT strftime('%Y-%m-%d', time, 'unixepoch') AS day,
ticket, -1 AS delta FROM ticket_change
WHERE field='status' AND newvalue='closed')
GROUP BY day) AS t2 ON t0.day==t2.day
ORDER BY t0.day);
日毎の新規チケットの増加数、チケットがクローズされた数を確認することができます。
1週間の区切りが分かりやすいように土日に色を付けました。
次に TSV 区切りでデータをダウンロードします。
ダウンロードしたファイルをグラフ化するのには gnuplot を使います。
set xdata time
set timefmt "%Y-%m-%d"
set xtics 86400*7
set boxwidth 86400
set xzeroaxis
plot "report.tsv" using 1:3 every ::2 notitle w boxes, \
"report.tsv" using 1:(-$4) every ::2 notitle w boxes, \
"<awk '{x=x+$5; print $1,x}' report.tsv" using 1:2 every ::2 notitle w l
出力されたグラフはこんな感じです。
赤色の棒グラフが追加されたチケットの数、緑色の棒グラフが解決したチケットの数、青色の折れ線グラフが残存チケット数です。
…バグ収束曲線と言いつつむしろ発散してるような気もしますが、これはチケット管理のフローが徹底されてなくて当面やらないタスクもチケットとして残っているからです。リリースに向けてプロジェクトは順調に進んでいます。本当ですよ?
ということで、オチが付いたところで今回はこの辺で終わります。
すくすくスクラム
アクセスログ
アジャイル
アラン・クーパー
クラウド
コメントの書き方
コンパイル
コーディング規約
スクラム
スマートフォン
ソーシャルメディア
タブレット
タブレット端末
テキストマイニング
テーマ
デザイン
デバッグ
ドン・ノーマン
ネットワーク
プログラマ
ペルソナ
マーケティング
メソッド
ユーザ行動モデリング
便利ツール
勉強会
壁紙
実行時間
教育
暑中見舞い
行動パターン分析
開発
Android
article
aside
buildbot
CSS3
daemon mode
facebook
facebook page
GAE
Getting Things Done
gnuplot
Google Analytics
Google App Engine
GTD
Hadoop
Hardy
HTML5
iframe
iOS
iOS4.2
iPad
iPhone
Jinja
Jinja2
Mahout
Mako
MapReduce
NFS
PEP
pybundle
Pylons
PyPl
Python
Pyxis
Review Board
RHEL4
section
Smartphone
Sphinx
Tablet
Toscawidgets
Trac
TrStyle
UX
Validator
virtualenv
web-kit
Widget
WSGI
