bugzilla 缺陷报告功能改造

本文介绍如何在Bugzilla中实现自定义报告,包括缺陷趋势数据、生命周期、原因统计等功能。通过编写Perl程序,每当创建或更新BUG时自动更新统计数据,以网页形式展示。同时,代码示例展示了如何按日期、原因、模块和严重级别进行统计。
摘要由CSDN通过智能技术生成

     在bugzilla中,由于要用到一些自定义报告的方式,如缺陷生命周期、缺陷趋势数据 ...,,这两种报告bugzilla工具没有提供此报告,所以想办法写了写,实现统计数据方法,并用网页形式出

1.自定义了一张表,来记录缺陷趋势数据,写了一个程序,来实现数据统计功能;

2.修改bugzilla的页面程序,使之每当新建BUG,或bug属性变化时,就自己动更新一次统计数据;

3.缺陷报告,实现了数据的统计,缺陷趋势数据、缺陷生命周期、缺陷原因、按模块统计、按严重级别等几个功能;

the last ,用perl实现图形报表时,一直没有做出来,知道是不是模块的与操作系统的原因,我已经安装过图形包,而bugzilla自己的图形报告也出不来, so,就只能是数据报表输出,再放到excle表中,就出图了:)

 

此程序的完成得感谢谢杨明同志的辛苦,哈哈,杨明是好同志啊 ~!~

 

 

下面是两个程序的代码:

==================================== 报表程序 ======================================

#!/usr/bin/perl
###############################################################
# Author           :  liulin
#
# Last Edit date   :  2010-11-18
#
# change comment   :  统计方法有BUG,BUG的生命周期方法修正
################################################################
use strict;
use warnings;
use Switch;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use DBI;

my $bugzillaDBaddr="localhost";
my $bugzillaDBdatabase="bugs";
my $bugzillaDBusr="bugs";
my $bugzillaDBpwd="123123";

# Connect to the database.
my $dbh = DBI->connect("DBI:mysql:".
    "database=".$bugzillaDBdatabase
    .";host=".$bugzillaDBaddr,
    $bugzillaDBusr ,
    $bugzillaDBpwd ,
    {'RaiseError' => 1});
# test mysql conn
eval { $dbh->do("SET NAMES gbk;") };
print "Set chareset failed: $@/n" if $@;

 

############################################################
# function : 主执行函数
# parameter:
# return   :
############################################################
sub main{
   print header(-charset => 'gb18030');
    print start_html('statistic bugs data ....');
   printHead();
   do_work();
   print end_html;
}

############################################################
# function : Statistic bugs total trend
# parameter:
# return   :
############################################################
sub statisticTrend{
   #sql statement handle
   my $sth = $dbh->prepare("select substr(bug_time,1,10) as date,bug_sum as bugs_total, bug_close_sum as bugs_closed_total,bug_open_sum  from bug_sum_data");
   $sth->execute();

   print "<table border=/"1/">";
   print "<tr><td>日期</td><td>BUG总数</td><td>关闭总数</td><td>打开总数</td></tr>";

   while (my $ref = $sth->fetchrow_hashref()) {
       print "<tr><td>$ref->{'date'}</td><td>$ref->{'bugs_total'}</td><td>$ref->{'bugs_closed_total'}</td><td>$ref->{'bug_open_sum'}</td></tr>";
   }
   print '</table>';
}


############################################################
# function : Statistic bugs reason
# parameter:
# return   :
############################################################
sub statisticReason{
   # sql statement handle
   my $sth = $dbh->prepare('select cf_bugwhen,count(*) as bugNum  from bugs group by cf_bugwhen;');
   $sth->execute();
    print "<table border=/"1/">";
   print "<tr><td>bugcause</td><td>bugnum</td></tr>";
   while (my $ref = $sth->fetchrow_hashref()) {
           print "<tr><td>$ref->{'cf_bugwhen'}</td><td>$ref->{'bugNum'}</td></tr>";
   }
   print '</table>';
}


############################################################
# function : 按模块统计  每个模块的bug数
# parameter:
# return   :
############################################################
sub statisticModel{
   # sql statement handle
   my $sth = $dbh->prepare(' select comp.name as compname,count(*) as bugnumbycomp from components comp inner join bugs  on comp.id = bugs.component_id group by comp.id order by comp.id;');
   $sth->execute();
    print "<table border=/"1/">";
   print "<tr><td>compname</td><td>bugnumbycomp</

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值