11# BugZoo
22
3- [ ![ Join the chat at https://gitter.im/BugZoo/Lobby ] ( https://badges.gitter.im/BugZoo/Lobby.svg )] ( https://gitter.im/BugZoo/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge )
4- [ ![ Build Status] ( https://travis-ci.org/squaresLab/BugZoo.svg?branch=master )] ( https://travis-ci.org/squaresLab/BugZoo )
5-
6- BugZoo is an ongoing effort to provide a series of controlled environments
7- for performing experiments on automated program repair of C programs. BugZoo
8- provides a number of bug scenarios, adapted from existing publicly-available
9- datasets, including [ ManyBugs] ( http://repairbenchmarks.cs.umass.edu/ ) ,
10- [ GenProg's earlier benchmarks] ( http://dijkstra.cs.virginia.edu/genprog/ ) , and
11- several datasets from the
12- [ Software Infrastructure Repository] ( http://sir.unl.edu/ ) .
13-
14- As well as providing the files necessary to study each bug,
15- BugZoo also provides a minimal, isolated environment for execution, in the
16- form of an accompanying Docker container. By providing a container for
17- each bug, rather than a single, monolithic virtual machine for a group of bugs,
18- BugZoo incurs fewer overheads (resulting in a much higher performance, crucial
19- for rigorous experimental trials), makes dependencies easier to manage, and
20- results in a smaller disk footprint.
21-
22- For more information on [ Docker] ( https://www.docker.com/ ) , the interested user is
23- referred to
24- [ https://docs.docker.com/learn/ ] ( https://docs.docker.com/learn/ ) .
3+ [ ![ Build Status] ( https://travis-ci.org/squaresLab/BugZoo.svg?branch=master )] ( https://travis-ci.org/squaresLab/BugZoo )
4+ [ ![ PyPI version] ( https://badge.fury.io/py/bugzoo.svg )] ( https://badge.fury.io/py/bugzoo )
5+
6+ BugZoo is a decentralised platform for distributing,
7+ reproducing, and interacting with historical software bugs. BugZoo is designed
8+ to support both software engineering researchers as well as developers of tools
9+ for program testing, analysis and repair.
10+
11+ Under the hood, BugZoo uses [ Docker] ( https://www.docker.com/ ) containers to
12+ provide a controlled, sterile environment for safely interacting with
13+ historical software bugs. BugZoo provides several advantages over
14+ the use of monolithic virtual machines
15+ (e.g., [ ManyBugs VM] ( http://repairbenchmarks.cs.umass.edu/ ) ):
16+
17+ * By using containerisation instead of virtualisation, BugZoo can ensure
18+ reproducibility with minimal sacrifice to performance, allowing you to run
19+ bigger experiments faster.
20+ * Since containers can be spawned in under a second, a safe, idempotent
21+ execution environment can be realistically provided for every test suite
22+ evaluation.
23+ * Each historical bug is provided as its own minimal Docker container image.
24+ There are no assumptions that bug containers should be capable of running
25+ other software, such as a testing or repair tool that is being evaluated as
26+ part of an experiment. BugZoo avoids the inevitable "DLL hell" that arises
27+ from attempting to mix bugs and tools by transforming tools into portable
28+ binaries and mounting them in the execution environment at run-time.
29+ * Thanks to their minimal nature and Docker's layer-based image caching,
30+ prebuilt datasets of historical bugs can be downloaded quickly and
31+ easily.
32+
33+
34+ ## Features
35+
36+ * A simple but powerful command-line interface for building, downloading and
37+ interacting with historical bugs.
38+ * A Python interface for complex, structured interactions with historical
39+ bugs: execute specific tests, compute line coverage, apply patches, compile
40+ with certain flags, and more.
41+ * A powerful underlying RESTful API that can be used to add BugZoo bindings to your
42+ own favourite language.
43+ * A decentralised architecture that lets you share your tools and datasets of
44+ historical bugs on the BugZoo platform without giving up ownership or control.
45+ Adding BugZoo support to your dataset of tool is as simple as adding a
46+ ` .bugzoo.yml ` file to your project.
2547
2648## Installation
2749
28- To install the latest stable version of BugZoo:
50+ We recommend using [ pipenv] ( http://pipenv.org/ ) to install BugZoo, although you
51+ may simply use ` pip3 ` instead:
52+
53+ ```
54+ $ pipenv install bugzoo
55+ ```
56+
57+ BugZoo supports Python >= 3.5.
58+
59+ ## Getting Started
60+
61+ Since BugZoo is a decentralised platform for sharing and interacting with
62+ historical bugs (* and not itself a dataset of bugs* ), you'll need to add
63+ several bugs and tools to your installation. Bugs and tools are usually
64+ provided to BugZoo by remote, public Git repositories. Adding a * source* of
65+ bugs or tools to your installation can be done via the `bugzoo source add
66+ [ name] [ url] ` command:
67+
68+ ```
69+ $ bugzoo source add manybugs https://github.com/squaresLab/ManyBugs
70+ ```
71+
72+ Note that sources do not necessarily have to be remote, public Git
73+ repositories: they can also be provided by local directories.
74+
75+ ```
76+ $ git clone https://github.com/squaresLab/ManyBugs path/to/manybugs
77+ $ bugzoo source add another-manybugs path/to/manybugs
78+ ```
79+
80+ The ` bugzoo source list ` command can be used to provide a list of registered
81+ sources:
82+
83+ ```
84+ $ bugzoo source list
85+
86+ Source Type URL Location Version
87+ -------- ------ ------------------------------------------ -------------------------------------------------------------- ---------
88+ robust Local - /home/chris/bugs/robust -
89+ genprog Remote https://github.com/squaresLab/genprog-code /home/chris/.bugzoo/sources/github_com_squaresLab_genprog-code b4de21d7
90+ manybugs Remote https://github.com/squaresLab/ManyBugs /home/chris/.bugzoo/sources/github_com_squaresLab_ManyBugs ad83bd9a
91+ ```
92+
93+ And ` bugzoo bug list ` and ` bugzoo tool list ` can be used to produce a list of
94+ all bugs and tools that are provided by your registered sources:
2995
3096```
31- $ pip3 install bugzoo
97+ $ bugzoo bug list
98+
99+ Bug Program Dataset Source Installed?
100+ ---------------------------------------------- ---------- --------- -------- ------------
101+ manybugs:gmp:13420-13421 gmp manybugs manybugs No
102+ manybugs:gmp:14166-14167 gmp manybugs manybugs No
103+ manybugs:gzip:2009-08-16-3fe0caeada-39a362ae9d gzip manybugs manybugs No
104+ manybugs:gzip:2009-09-26-a1d3d4019d-f17cbd13a1 gzip manybugs manybugs No
105+ manybugs:gzip:2009-10-09-1a085b1446-118a107f2d gzip manybugs manybugs No
106+ manybugs:gzip:2010-01-30-fc00329e3d-1204630c96 gzip manybugs manybugs No
107+ manybugs:gzip:2010-02-19-3eb6091d69-884ef6d16c gzip manybugs manybugs No
108+ manybugs:libtiff:2005-12-14-6746b87-0d3d51d libtiff manybugs manybugs No
109+ manybugs:libtiff:2005-12-21-3b848a7-3edb9cd libtiff manybugs manybugs No
110+ manybugs:libtiff:2005-12-27-6f76e76-5dac30f libtiff manybugs manybugs No
111+ manybugs:libtiff:2006-02-23-b2ce5d8-207c78a libtiff manybugs manybugs No
112+ manybugs:libtiff:2006-02-27-6074705-e6d0c32 libtiff manybugs manybugs No
113+ manybugs:libtiff:2006-03-03-a72cf60-0a36d7f libtiff manybugs manybugs No
114+ ...
32115```
33116
34- To install the latest development version of BugZoo, first produce a shallow
35- clone of this repository before executing ` pip3 ` as shown below.
117+ To interact with a particular bug or tool, you'll need to install it on your
118+ machine. There are two ways to do this: (1) you can build the Docker image for
119+ the bug or tool locally (via ` bugzoo bug build ` and ` bugzoo tool build ` ), or
120+ alternatively, you can download a prebuilt image (via ` bugzoo bug download `
121+ or ` bugzoo tool download ` ).
36122
37123```
38- $ git clone git://github.com/squaresLab/BugZoo --depth 1 bugzoo
39- $ cd bugzoo
40- $ pip3 install . --upgrade
124+ $ bugzoo bug build manybugs:libtiff:2005-12-14-6746b87-0d3d51d
125+ ...
41126```
42127
43128## Known Sources
@@ -54,3 +139,19 @@ To add one of these sources, simply execute the following from the command line:
54139$ bugzoo source add manybugs https://github.com/squaresLab/ManyBugs
55140$ bugzoo source add genprog https://github.com/squaresLab/genprog-code
56141```
142+
143+ ## Citation
144+
145+ If you use BugZoo in your research work, we would highly appreciate it if you
146+ cited the [ following paper] ( http://www.cs.cmu.edu/~clegoues/docs/timperley-icse18-poster.pdf ) :
147+
148+ ```
149+ @inproceedings{bugzoo,
150+ author = {Timperley, Christopher and Stepney, Susan and {Le Goues}, Claire}
151+ title = {{Poster: BugZoo – A Platform for Studying Software Bugs}},
152+ booktitle = {{International Conference on Software Engineering}},
153+ series = {{ICSE '18}},
154+ year = {2018}
155+ note = {{To appear}}
156+ }
157+ ```
0 commit comments