Rubyの魔神 このページをアンテナに追加 RSSフィード

   「Ruby」は宝石の魔神のイメージ(The Jinn of the Ruby)
[DMY] [VB] [VB6] [Python] [C#] [Android] [電子工作] [個人メモ] [仕事メモ] [アイデア] [TstLink] [CE] [LTSA]
[自動化] [Qt] [OCaml] [3Dプリンタ] [TOOLS] [RAA] [Forge]
  [機能別索引] [逆引きRuby] [マニュアル] [るびま] [標準ライブラリ] [るりまサーチ] [Try! Ruby] [PRaggerまとめ] [ピジョン・ブラッド]
   [Rubyコーディング規約] [プログラミングのオキテ] [Rubyist SNS] [TOOLBIS]
   [RubyネットワークProg] [druby] [コードなにがし] [RDocテンプレ] [Ruby/Tkサンプル]
   [WAVE] [Xperia] [github] [twitterなど] [EA] [マクロ]

2007-10-17

Mantisのバグ情報から信頼度成長曲線作成ツール

12:59 | Mantisのバグ情報から信頼度成長曲線作成ツール - Rubyの魔神 を含むブックマーク はてなブックマーク - Mantisのバグ情報から信頼度成長曲線作成ツール - Rubyの魔神 Mantisのバグ情報から信頼度成長曲線作成ツール - Rubyの魔神 のブックマークコメント

MantisXoopsモジュール版(Mantis Ver1.0.3)

Mantisの「検索」-「CSV エクスポート」で取り出したデータに対して変換を行う

※日付は以下の記事の方法で「日本式(yy-mm-dd)」に変えてあるものとします。

違う時は「Date.new」の所をいじってください。

http://d.hatena.ne.jp/garyo/20070910/1189386912

使用方法

makeBugGraph.rb 入力ファイル

例 makeBugGraph.rb project_id_0000000001.csv

出力ファイル 入力ファイルの頭に「c_」をつけたもの

例 c_project_id_0000000001.csv

makeBugGraph.rb

#! ruby -Ke
#Mantis(XOOPSモジュール)から信頼性成長曲線作成

require 'kconv'
require 'date'


class MantisBug
  Id = 0 #Id
  Project = 1 #プロジェクト
  Registrant = 2 #登録者
  Charge = 3 #担当者
  Priority = 4 #優先度
  Importance = 5 #重要度
  Plasticity = 6 #再現性
  ProductVersion = 7 #製品バージョン
  RevisionMethod = 8 #修正方法
  Category = 9 #カテゴリ
  RegistrationDay = 10 #登録日
  PlanManHour = 11 #予定工数
  OS = 12 #OS
  Version = 13 #バージョン
  Platform = 14 #プラットフォーム
  ReferenceFromTheOutside = 15 #外部からの参照
  LastUpdateDate = 16 #最終更新日時
  Abstract = 17 #要約
  Status = 18 #ステータス
  SolutionSituation = 19 #解決状況
  FinishedVersion = 20 #修正済みバージョン
  Completion = "完了"
  Settled = "解決済"
  attr_accessor :data

  def initialize
    @data = []
  end
end

class BugData
  attr_accessor :bugDate,:bugCount

  def initialize
    @bugDate = nil
    @bugCount = 0
  end
end

class BugGraph
  attr_accessor :mantisBugList,:mantisBugListTitle

  def initialize
    @mantisBugList = []
    @detectDate = []
    @fixDate = []
    @outStr = "日付,発見日,対策日,発見日(累積),対策日(累積)\n".tosjis
  end

  def readFile(file)
    f = File.open(file,"r")
    line = f.gets
    @mantisBugListTitle = line.split(",")
    while line = f.gets
      mb = MantisBug.new
      mb.data = line.split(",")
      @mantisBugList << mb
    end
  end

  def calcBugData
    @mantisBugList.each {|d|
      /(\d\d)-(\d\d)-(\d\d)/ =~ d.data[MantisBug::RegistrationDay]
      dt = Date.new(2000 + $1.to_i, $2.to_i ,$3.to_i)
      @detectDate << dt

      if /(#{MantisBug::Completion}|#{MantisBug::Settled})/ =~ d.data[MantisBug::Status]
        /(\d\d)-(\d\d)-(\d\d)/ =~ d.data[MantisBug::LastUpdateDate]
        dt = Date.new(2000 + $1.to_i, $2.to_i ,$3.to_i)
        @fixDate << dt
      end
    }

    maxD = @detectDate.max
    if maxD > @fixDate.max then
      maxD = @fixDate.max
    end

    minD = @detectDate.min
    if minD < @fixDate.min then
      minD = @fixDate.min
    end

    detectDateCountSum = 0
    fixDateCountSum = 0

    for i in minD..maxD
      detectDateCount = @detectDate.select{|d| d == i}.size
      fixDateCount = @fixDate.select{|d| d == i}.size
      detectDateCountSum += detectDateCount
      fixDateCountSum += fixDateCount
      @outStr = @outStr + "#{i},#{detectDateCount},#{fixDateCount},#{detectDateCountSum},#{fixDateCountSum}\n"
    end
  end

  def writeFile(file)
    f = File.open(file,"w")
    f.puts @outStr
    f.close
  end

  def main(file)
    readFile(file)
    calcBugData
    writeFile("c_" + file)
  end
end

bg = BugGraph.new
bg.main(ARGV[0])
トラックバック - http://ruby.g.hatena.ne.jp/garyo/20071017