Redmine Redmine 入门五——Redmine 中生成 smi

bernardlai · 发布于 2016年4月15日 · 163 次阅读
53642

[align=center] Redmine中生成smi [/align]

SMI是使用数据来评价软件质量的一种方法。 在Redmine中使用SMI需要三个步骤,首先完成SMI的评价标准,其次定期存储smi在数据库中,最后选择合适的方法进行展示。 一、SMI的评分标准 通常smi的评价有两个维度,问题的状态和严重度。例如:打开10分,修复5分,验证3分;严重4分,普通3分,轻微2分,体验1分。完成评价量表。 打开10分 修复5分 验证3分 合计 严重4分 1 0 2 64 普通3分 0 1 1 24 轻微2分 1 2 1 36 体验1分 0 0 1 3 合计 127 二、系统中定期生成smi 2.1 Rails中有gem rufus-scheduler可以进行执行定期任务。 rufus-scheduler要去必须有一个活动线程,因此如果使用Apache配置redmine需要添加如下配置。 [code]PassengerMaxPreloaderIdleTime 0 PassengerMinInstances 1[/code] 2.2 在数据库中创建表redmine_smis用来存储定期数据,结构可以参考: [code]DROP TABLE IF EXISTS redmine_smis; CREATE TABLE redmine_smis ( id int(11) NOT NULL AUTO_INCREMENT, due_date date DEFAULT NULL, project_id int(11) NOT NULL, status_id int(11) NOT NULL, severity varchar(30) NOT NULL DEFAULT '', issue_count int(11) NOT NULL DEFAULT '0', weight float(13,1) NOT NULL DEFAULT '0.0', PRIMARY KEY (id), KEY issues_project_id (project_id), KEY index_issues_on_status_id (status_id) );[/code] 2.3 编写定期统计方法 [code]def CalculationSmi() status_weight = {“打开”=> 10, “修复” => 5,” 验证”=> 3} severity_weight = {"严重" => 4 ,"普通" => 3, "轻微" => 2, "体验" => 1, }

@projects = Project.all if !@projects.nil? @projects.each do |project| @query = IssueQuery.new(:name => "_", :filters => filters ,:group_by=>"") if @query.issue_count>0 #系统 {“打开”=> 10, “修复” => 5,” 验证”=> 3}.each do |status|

@query ||= IssueQuery.new(:name => "_") @query.filters = filters @query.group_by = "严重度"

if @query.issue_count>0 @issue_count_by_group = @query.issue_count_by_group if !@issue_count_by_group.nil? Rails.logger.info @issue_count_by_group @issue_count_by_group.each do |k,v| @smi = RedmineSmi.new @smi.project_id = project.id @smi.status_id = status @smi.severity = k @smi.issue_count = v @smi.due_date = Date.today @smi.weight = (status_weight[status] * severity_weight[k]).round(1) @smi.save! end end end end end[/code] 2.4 定期调用 [code]schedulersmi = Rufus::Scheduler.new cronStsmi = '00 00 * * 6' schedulersmi.cron cronStsmi do begin scheduler = Object.new.extend(Scheduler) scheduler.CalculationSmi() rescue Exception => e Rails.logger.info "Scheduler failed: #{e.message}" end end[/code] 三、数据显示 可以通过趋势图、统计表来显示数据。 画图的JavaScript库有很多这里推荐highchart和echart

共收到 4 条回复
4
laofo · #1 · 2016年4月18日

小赖,给力

53642
bernardlai · #2 · 2016年4月19日

后悔了没?

4
laofo · #3 · 2016年4月20日

后悔啥???

53642
bernardlai · #4 · 2016年4月20日

错过这么帅气的小伙伴

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册