PHP开源 Bug跟踪系统

3 篇文章 0 订阅
本文介绍了几种常用的Bug跟踪系统,包括BUGS、eTraxis、BugTracker、DoubleChocoLatte、Mantis、Eventum和phpBugTracker。这些系统提供了项目管理、集成版本控制、邮件通知等功能,适用于不同规模的软件开发团队。
摘要由CSDN通过智能技术生成

 

 BUGS   

BUGS是一个基于Web(PHP5)的Bug跟踪系统。提供的功能包括:项目管理(支持多个项目/版本/里程碑),集成svn,程序发布工具,短消息,日程安排,自动email提醒,等。

 eTraxis   

eTraxis是一个可以无限量定制流程模板个数的Bug跟踪系统。它支持的数据库包括:MySQL、PostgreSQL、MSSQL和Oracle。支持LDAP。可以自定义Bug记录模板。灵活的权限管理。提供高级查询过滤器。Email通知。导出成CSV。历史事件与变更管理。类似于论坛的用户讨论功能等。

 Bug Tracker   

Bug Tracker是一个采用PHP开发的软件缺陷追踪系统,它可以协助您管理软件开发流程。它使用数据库(PostgreSQL 或MySQL )来存储缺陷、待增的功能、待办事项,可以让您在管理软件开发时更有效率。Bug Tracker 有二种使用者界面,一个是给内部开发团队使用,另一个则是给外部客户查看报表用。它具有完整的使用者、群组权限管理系统、数据库查询及过滤功能、常见问答、文件管理、通过email发送报表等诸多功能。

 Double Choco Latte   

Double Choco Latte是一个用于跟踪软件Bug,变更,改进和请求的系统。该系统支持多项目,多用户。

 Mantis   

Mantis是一个缺陷跟踪系统具有多特性包括:易于安装,易于操作,基于Web,支持任何可运行PHP的平台( Windows,Linux,Mac,Solaris,AS400/i5等),已经被翻译成68种语言,支持多个项目,为每一个项目设置不同的用户访问级别,跟踪缺陷变更历史,定制我的视图页面,提供全文搜索功能,内置报表生成功能(包括图形报表), 通过Email报告缺陷,用户可以监视特殊的Bug,附件可以保存在web服务器上或数据库中(还可以备份到FTP服务器上),自定义缺陷处理工作流,支持输出格包括 csv、Microsoft Excel、 Microsoft Word,集成源代码控制( SVN与CVS ),集成wiki知识库与聊天工具(可选/可不选),支持多种数据库( MySQL、MSSQL、 PostgreSQ、 Oracle、 DB2),提供WebService(SOAP)接口,提供Wap访问。

 Eventum   

Eventum是一个用户友好,灵活的缺陷跟踪系统。支持部门可以用它来跟踪新的技术支持请求。软件开发团队可以用它来快速组织任务与Bug。Eventum已经被MySQL AB技术支持团队使用,并帮助他们提高响应时间。

 phpBugTracker   

phpBugTracker是一个基于web的bug跟踪器提供的功能类似于其它缺陷跟踪系统,比如Bugzilla。采用分层设计:表现层+应用层+数据库层。所需要的运行环境:Web服务器+PHP+PEAR+数据库(MySQL,PostgreSQL或Oracle)。

 

-------------------------------------

 

BugTracker.net :http://www.ifdefined.com/bugtrackernet.html

 

下面说说在使用BugTracker.net前考虑的几个类似软件:
OnTimer
有cs版和web版,是要收费的,不过用.net编写的东西似乎比较容易破解,我用Reflector看了看,很容易找到加密的地方。这个软件 比bugTracker.net要复杂些,权限等控制的更细,同时似乎并不仅限于bug跟踪,而倾向与缺陷管理。同时它使用了aspnetmenu等组件,和bugTracker.net相比速度要慢些。
BugZilla
听说是很强大的工具,但是下下来一看,要用MySql,同时代码好象是Perl写的(.pm和.pl文件是用什么写的?),怕怕,不用。
myTracker
 使用InterBse数据库,也有cs和web两种方式,我下午才装上InterBase,准备明天看看,这个软件看样子也不仅限于bug跟踪,还有其他的功能,帮助比较全,等用起来再说。
Mantis:
基于PHP和MySql,不会维护,不用。
 
上面列举的软件,都是在我的随笔:
Bug跟踪软件 中其他朋友提到的。

总的来说,BugTracker.net虽然有很多缺陷,但是对与一个小团队来说,简单实用是最大的优点,同时也易于维护,扩展。

<?php define('IN_SITE', true); require(dirname(__FILE__) . '/includes/init.php'); if(trim($_GET['ac']) == 'del') { deletetable('bug', "id='$_GET[bug_id]'"); goto($_SESSION['php_self']); } $_SESSION['php_self'] = geturl(); //echo $_SESSION['php_self']; $pro_id = empty($_GET['pro_id'])?'':intval($_GET['pro_id']); $bug_id = empty($_GET['bug_id'])?'':intval($_GET['bug_id']); $types = set_supetype($_SESSION['supe_type']); $sql = "SELECT * FROM ".tname('project')." WHERE `father` = '$pro_id'"; $pro_list = $db->getAll($sql); $sql = "SELECT pro_name, father, pro_id FROM ".tname('project')." WHERE `pro_id` = '$pro_id'"; $pro_info = $db->getRow($sql); if(!($_SESSION['supe_username'] and (($_SESSION['supe_project']!=$pro_info['pro_id'] ? $_SESSION['supe_project']==$pro_info['father'] : 1) or $_SESSION['supe_type']==-1))) { goto("login.php?pro_id=$pro_id"); } $sql = "SELECT pro_name FROM ".tname('project')." WHERE `pro_id` = '$pro_id'"; $pro_name = $db->getOne($sql); if($bug_id) { $sql = "select * from ".tname('bug')." where id='$bug_id'"; $bug = $db->getRow($sql); } if($_POST['submit']) { if($_POST['bug_id']) { if($_POST['pro_id']) { $pro_id = $_POST['pro_id']; } $sqlarr = array( 'pro_id' => $pro_id, 'title' => $_POST['title'], 'quick' => $_POST['quick'], 'bug' => $_POST['bug'] ); updatetable('bug', $sqlarr, "id='$_POST[bug_id]'"); } else { if($_POST['pro_id']) { $pro_id = $_POST['pro_id']; } $sqlarr = array( 'pro_id' => $pro_id, 'name' => $_SESSION['supe_username'], 'title' => $_POST['title'], 'quick' => $_POST['quick'], 'bug' => $_POST['bug'], 'dateline' => NOW ); inserttable('bug', $sqlarr); } goto("bug_list.php?pro_id=$pro_id"); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?=SITE_CHARSET?>" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <title><?=$_CFG['site_name']?></title> <link href="css/style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" charset="utf-8" src="includes/editer/kindeditor.js"></script> <script language="javascript"> KE.show({ id : 'bug', cssPath : './css/editer.css', items : [ 'undo', 'redo', 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold', 'italic', 'underline', 'removeformat', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist', 'insertunorderedlist', 'image', 'source'] }); function checkuser(frm) { with(frm) { if (title.value.length < 1) { alert('标题不能为空'); title.focus(); return false; } } } </script> </head> <body> <div class="block"> <div class="header"> <div style="height:50px; padding:3px 10px; background:#006CC5; color:#ffffff;"> <div><?=$_SESSION["supe_username"]?>,欢迎您! 用户组:<span class="org"><?=$types['name_type']?></span> <a href="index.php?ac=loginout">退出</a></div> <div class="pro_name"><?=$pro_name?></div> </div> <div class="line_gray white"> <a href="index.php">首页</a> >> <a href="bug_list.php?pro_id=<?=$_GET['pro_id']?>"><?=$pro_name?></a> >> 发布问题 </div> </div> <form name="reg" action="bug.php?pro_id=<?=$pro_id?>" method="post" onsubmit="return checkuser(this);"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td width="80" height="30" align="right">发布人:</td> <td><?php if($bug_id) {echo $bug['name'];} else { echo $_SESSION['supe_username'];}?></td> </tr> <?php if($pro_list) {?> <tr> <td height="30" align="right">项目选择:</td> <td> <select name="pro_id"> <option value="<?=$pro_info['pro_id']?>" <?php if($pro_info['pro_id']==$bug['pro_id']) { echo "selected";}?>><?=$pro_info['pro_name']?></option> <?php if(is_array($pro_list)) { foreach($pro_list as $value) { ?> <option value="<?=$value['pro_id']?>" <?php if($value['pro_id']==$bug['pro_id']) { echo "selected";}?>><?=$value['pro_name']?></option> <?php }}?> </select> </td> </tr> <?php }?> <tr> <td height="30" align="right">标题:</td> <td><input type="text" name="title" id="title" class="mid_input" value="<?=$bug['title']?>"/></td> </tr> <tr> <td height="30" align="right">迫切度:</td> <td> <select name="quick"> <option value="严重" <?php if($bug['quick']=='严重') echo "selected";?>>严重</option> <option value="较急" <?php if($bug['quick']=='较急') echo "selected";?>>较急</option> <option value="一般" <?php if($bug['quick']=='一般') echo "selected";?>>一般</option> </select> </td> </tr> <tr> <td align="right">问题:</td> <td><textarea name="bug" id="bug" style="width:500px; height:230px;"><?=$bug['bug']?></textarea></td> </tr> <tr> <td height="30" height="30"></td> <td> <input type="hidden" name="bug_id" value="<?=$bug_id?>"/> <input type="submit" name="submit" class="submit" value="提交"/> </td> </tr> </table> </form> </div> </body> </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值