当前位置: 首页 > 工具软件 > BugFreeHelper > 使用案例 >

bugfreeHelper不支持新版bugfee解决方法

傅嘉悦
2023-12-01

今天下载了bugfeeHelper,配置完成以后,也登录成功,但是却接收不到bugfree的bug提交情况。

查看了bugfee的版本,发现是2.1.3,发布时间是2011年6月份,但是bugfreehelper最新版本是2008年6月份。

看了下bugfree的更新记录,发现对界面做了不少的更新,就怀疑是不是界面的改变,导致bugfreehelper拿不到数据。

于是就按这个思路查看了bugfreehelper的源代码,结果跟自己想到一样。

解决方法:(由于本人不会Delphi,只能通过该php了)

1.在得到最近的bug数的方法中,bugfreehelper是通过页面返回的记录结果来计算的

在bugfreehelper的MonitorBug.pas源代码可以找到

 

 TParamList.FindSubStr(Html, '<td style="text-align:left;border:0;width:30%">'#13#10, #13#10, Html);
  StartIndex := Pos('/', Html);
  if StartIndex <= 0 then Exit;
  StartIndex := StartIndex + 1;
  RecordStr := MidStr(Html, StartIndex, MaxInt);
  BugCount := StrToIntDef(RecordStr, 0);

 

 在之前版本的页面结构里,是“<td style="text-align:left;border:0;width:30%">”,

但是新版的改为“<td style="text-align:right;width:50%">”,只要将这个地方改为原来的样式就可以(对页面的影响不大)

bugfreehelper得到结果以后,是通过截取字符串来得到bug数的,新版的bugfree还是有点问题,需要去掉一些空格

将:

 

{$Lang.Pagination.Result} 
                {$PaginationDetailInfo.FromNum}-{$PaginationDetailInfo.ToNum}/{$PaginationDetailInfo.RecTotal}

 

 改为:

 

{$Lang.Pagination.Result} {$PaginationDetailInfo.FromNum}-{$PaginationDetailInfo.ToNum}/{$PaginationDetailInfo.RecTotal}

 

 这样就可以了

 

2.bug数是可以得到了,但是得到的结果却是不对的,是所有的bug数,而不是自己的bug数,对比了一下新版的查询包跟旧版的查询包,发现新版的多了几个参数(QueryFieldCountQueryRowOrder)。

  看了下bugfree的源代码,发现QueryFieldCount没有用到,而QueryRowOrder这个是用来计算一个有几个查询条件的。问题解决了。。。

就是原来旧版没有这个参数,导致查询条件都没有用上。修改方法如下:

在bugfree\Include\FuncModel.inc.php页面中,就如如下的判断,如果这个参数没有,就手动加上(大概在495行)

 

if($QueryRowOrderStr=='' || $QueryRowOrderStr==null){
		$QueryRowOrderStr='SearchConditionRow0,SearchConditionRow2,SearchConditionRow3,SearchConditionRow6,SearchConditionRow5,SearchConditionRow4';
	}

 

 加入这个的依据是原来使用了6个查询条件,在bugfreehelper源代码里也看到了如下的代码

 

UnclosedBugCountParam = 'AutoComplete=on&AndOr0=And&Field0=ProjectName&Operator0=%3D&' +
  'Value0=&AndOrGroup=AND&AndOr1=And&Field1=OpenedBy&Operator1=%3D&Value1=&' +
  'AndOr2=And&Field2=ModulePath&Operator2=LIKE&Value2=&AndOr3=And&' +
  'Field3=AssignedTo&Operator3=%3D&Value3=${username}&AndOr4=And&' +
  'Field4=BugID&Operator4=%3D&Value4=&AndOr5=And&Field5=BugTitle&' +
  'Operator5=LIKE&Value5=&PostQuery=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2%E5%86%85%E5%AE%B9&QueryType=Bug';

 

 这个是拼接查询条件的。

 

 

自此,这个问题就解决了。。。

 类似资料: