网上有很多缺陷报告库可供开发者使用,如果我们需要针对这些缺陷进行深层次的分析,就需要把这些缺陷信息收集起来。Bicho就是一个这种工具,他是基于python语言开发的。
1. 安装Bicho
Bicho的安装是一个比较复杂的工作,一些依赖的工具在安装过程中可能会遇到很多麻烦。这里的环境是Ubuntu 10.04 LTS i686
1.1 安装Python
略,python的版本要高于2.4
# python --version
Python 2.6.5
1.2 安装Storm
-
# ls storm-0.19
-
build NEWS README storm.egg-info
-
LICENSE PKG-INFO setup.cfg test
-
Makefile python2.6-dev_2.6.5-1ubuntu6.1_i386.deb setup.py tests
-
MANIFEST.in python-dev_2.6.5-0ubuntu1_all.deb storm TODO
-
-
$ sudo apt-get install python-mysqldb python-psycopg2 mysql-server postgresql build-essential
-
-
$ sudu python setup.py install
如果这里出现“gcc”错误以及“fatal error: Python.h: No such file or directory”,需要安装python-dev
1.3 安装BeautifulSoup
-
# ls ../BeautifulSoup-3.2.1/
-
BeautifulSoup.py BeautifulSoupTests.py build setup.py
-
BeautifulSoup.pyc BeautifulSoupTests.pyc PKG-INFO
1.4 安装bicho
-
# ls bicho-0.9/
-
AUTHORS Bicho build config.sample doc README
-
bicho bin ChangeLog COPYING NEWS setup.py
-
-
# python setup.py install
2. 使用bicho
2.1 配置mysql数据库
mysql> CREATE DATABASE bicho_jboss CHARACTER SET utf8;
2.2 启动bicho
关于bicho的使用方法可以参考README,以及bicho --help。Bicho可以分析多种缺陷库,包括Bugzilla,sourceforge.net,JIRA等。
需要注意的是,要设置适当的延迟(-d 15),否则可能会被网站禁掉。
-
# python -m pdb bicho --db-user-out=root --db-password-out=root --db-database-out=bicho_jboss -d 15 jira https://issues.jboss.org/browse/JBAS -g
-
-
or
-
-
# bicho --db-user-out=root --db-password-out=root --db-database-out=bicho_jboss -d 15 jira https://issues.jboss.org/browse/JBAS
3. 问题
在实验的过程中,问题总是不能避免的,最多的问题出在版本的不一致上。
在分析Jira缺陷库的时候,发现代码里面明确表明是"4.1.2",然而要分析的Jira是“5.2.9”的,然后分析的过程中就报出如下错误。
TypeError: "'NoneType' object is not callable"
在对代码进行跟踪调试后发现,问题出在一处html处理上:
-
Num Type Disp Enb Where
-
1 breakpoint keep yes at /home/.ddt/ddt/workspace/bicho/bicho-0.9/Bicho/backends/jira.py:766
-
breakpoint already hit 4 times
-
2 breakpoint keep yes at /home/.ddt/ddt/workspace/bicho/bicho-0.9/Bicho/backends/jira.py:337
-
breakpoint already hit 4 times
-
3 breakpoint keep yes at /usr/lib/python2.6/xml/sax/xmlreader.py:107
-
4 breakpoint keep yes at /usr/lib/python2.6/xml/sax/expatreader.py:207
-
-
# vi bicho-0.9/Bicho/backends/jira.py
-
if change_author == None:
-
break
-
author = People(change_author.contents[2].contents[0].strip())
-
date = parse(change_author.contents[4].contents[0].contents[0]).replace(tzinfo=None)
在jira.py的337,338行,标签的嵌套层数发生了改变,导致代码执行错误,改了之后就好了。
阅读(2255) | 评论(3) | 转发(0) |