General Introduction

January 15, 2025 ยท View on GitHub

๐Ÿ“ข๐Ÿ“ข๐Ÿ“ข Our GrowingBugs was selected as the official dataset for the ChinaSoft 2024 Software Defect Repair Competition. Details ๐Ÿ‘‰ https://aprchallenge.github.io/

Table of Contents

General Introduction

This is a bug repository that keeps growing, called growingBugs

Notably, each bug in growingBugs is composed of a buggy version, a fixed version, a concise patch (bug-fixing changes only), and one or more triggering test cases.

Docker image

To free users (especially beginers) of the repository from the complex configuration of the environments, we create and publish a Docker image of the system with latest release version(v7.0). You may download it at https://zenodo.org/records/14286643

By simply loading the image with Docker, you can make the system ready for evaluation where all configurations (e.g., Java versions, paths, and even all data within the repository) should have been well set.

Note that we use "docker export" command to obtain a compressed file. So you nee d to run "docker import" command to use this image.

Contents of growingBugs

To date, growingBugs contains 2012 real-world bugs from open-source Java projects.

Project IDProject nameSubProject locatorNumber of bugsBug IDs
1AaltoXmlaalto-xml101-5,7-11
2Bcelcommons-bcel61-6
3Ber_tlvber-tlv41-4
4Burstburstburst31-3
5Canvas_apicanvas-api41-4
6Chartjfreechart261-26
7Clicommons-cli431-5,7-42,50-51
8Closureclosure-compiler1741-62,64-92,94-176
9Codeccommons-codec191-19
10Collectionscommons-collections825-31,35
11Commons_suncalccommons-suncalc21-2
12Compresscommons-compress511-48,50,52-53
13Coveralls_maven
_plugin
coveralls-maven
-plugin
81-8
14Csvcommons-csv171-17
15Dbutilscommons-dbutils21-2
16Deltaspike_apideltaspike-core-apideltaspike
/core/api
61-6
17DisklrucacheDiskLruCache61-6
18Docker_java_apidocker-java-api101-10
19Drools_model
_compiler
drools-model-compilerdrools-model/
drools-model-compiler
11
20Emailcommons-email33-5
21Functorcommons-functor21-2
22Geogeogeo31-3
23Geometry_coregeometry-corecommons-geometry-core21,3
24Github_release
_plugin
github-release-plugin21-2
25Graphcommons-graph61-6
26Gsongsongson251-25
27Hivemall_corecorecore31-3
28IOcommons-io221-3,5-6,8-18,
22,25,27,29-31
29Imagingcommons-imaging101,3-8,10-11,14,16
30Jackrabbit_
filevault
_vault_core
jackrabbit-filevault-vault-corevault-core11
31Jackrabbit_
filevault_vault
_validation
jackrabbit-filevault-vault-validationvault-validation41-4
32JacksonCorejackson-core301-26,28-31
33JacksonDatabindjackson-databind1501-85,87-112,121-126,
128-129,131-133,135-156
34JacksonDataformat
Binary_cbor
jackson-dataformats
-binary-cbor
cbor51-5
35JacksonDataformat
Binary_protobuf
jackson-dataformats
-binary-protobuf
protobuf41-4
36JacksonXmljackson-dataformat-xml61-6
37James_mime4j
_core
James-mime4j-corecore91-9
38Langcommons-lang721,3-33,35-65,69,71,73,
76,80-84
39Mathcommons-math351-35
40Mockitomockito381-38
41Shiro_webshiro-webweb81,3,7-12
42Timejoda-time261-20,22-27
43Deftdeft11
44Dosgi_commondosgi-commoncommon21-2
45Doubleclick_coreopenrtb-doubleclick-coredoubleclick-core11
46Doxia_module_aptdoxia-module-aptdoxia-modules/
doxia-module-apt
21-2
47Drools_traitsdrools-traitsdrools-traits11
48Dropwizard_springdropwizard-spring11
49Farmfarm41-4
50Flume_ngcoreflume-ng-coreflume-ng-core21-2
51Fluo_apifluo-apimodules/api21,3
52Hbase_commonhbase-commonhbase-common11
53Hierarchical_
clustering_java
hierarchical-
clustering-java
11
54Hilbert_curvehilbert-curve31-3
55Hive_funnel_udfhive-funnel-udf11
56Hono_clienthono-clientclient41-4
57Httpcomponents
_core_h2
httpcore5-h2httpcore5-h211
58Httpcomponents
_core_httpcore5
httpcore5httpcore531-3
59JXRmaven-jxr11
60Jsoupjsoup931-93
61JxPathcommons-jxpath221-22
62Math_4jcommons-math4j1061-106
63MShademaven-shade-plugin61-4,6-7
64Tikatika51-2,5-7
65Validatorcommons-validator211-2,4,6-9,11,
13-25
66Poolcommons-pool221,5-7,10-14,
16,20-21,24,
26-27,29-35
67Netcommons-net149,10,12,
14-18,20-21,
23-26
68Numbers_anglecommons-numbers-anglecommons-numbers
-angle
21-2
69MGpgmaven-gpg-plugin11
70Textcommons-text41-2,4-5
71Tika_coretika-coretika-core234,6,9,11,
17,20-25,28-39
72Tika_apptika-apptika-app21,3
73Shiro_coreshiro-corecore1037,40,46,52,98,
144,176,181,202-203
74Jena_corejena-corejena-core12
75MDeploymaven-deploy-plugin11
76Jackrabbit_filevault
_vault_validation
jackrabbit-filevault
-vault-validation
vault-validation41-4
77Jackrabbit_oak_coreoak-coreoak-core51-5
78Maven_checkstyle
_plugin
maven-checkstyle
-plugin
11
79James_project
_core
james-project-corecore21-2
80Pdfbox_fontboxpdfbox-fontboxfontbox71-7
81HttpClient5httpclient5httpclient571-2,4-8
82jackson_modules
_java8_datetime
jackson-modules
-java8-datetime
datetime51-5
83Pdfbox_pdfboxpdfbox-pdfboxpdfbox31-3
84Storm_clientstorm-clientstorm-client11
85JacksonDataformats
Text_yaml
jackson-dataformats
-text-yaml
yaml61-2,4-7
86JacksonDataformats
Text_properties
jackson-dataformats
-text-properties
properties21-2
87JacksonDataformat
Binary_avro
jackson-dataformats
-binary-avro
avro21-2
88JavaClassmatejava-classmate21-2
89JacksonModule
JsonSchema
jackson-module-
jsonSchema
11
90JacksonData
typeJoda
jackson-datatype-joda22-3
91JacksonDatatype
Jsr310
jackson-datatype-jsr31041-4
92JacksonDataformat
Binary_smile
jackson-dataformats
-binary-smile
smile31-3
93JacksonModule
Afterburner
jackson-module-afterburner31-3
94Woodstoxwoodstox71-7
95MetaModel_coreMetaModel-corecore91-9
96MetaModel_csvMetaModel-csvcsv11
97MetaModel_excelMetaModel-excelexcel11
98MetaModel_jdbcMetaModel-jdbcjdbc31-3
99MetaModel_pojoMetaModel-pojopojo11
100MetaModel_
salesforce
MetaModel-salesforcesalesforce11
101Wink_commonwink-commonwink-common41-4
102Xbean_namingxbean-namingxbean-naming11
103James_project_
server_container
_core
james-project-server-
container-core
server/container/core11
104Johnzon_corejohnzon-corejohnzon-core111-2,4-12
105Nifi_mocknifi-mocknifi-mock21-2
106Rat_coreapache-rat-coreapache-rat-core11
107Rat_pluginapache-rat-pluginapache-rat-plugin11
108Tez_commontez-commontez-common11
109Tinkerpop_gremlin
_core
gremlin-coregremlin-core11
110Webbeans_webwebbeans-webwebbeans-web11
111Johnzon_jsonbjohnzon-jsonbjohnzon-jsonb61-6
112Johnzon_jaxrsjohnzon-jaxrsjohnzon-jaxrs11
113Incubator_tamaya
_api
incubator-retired
-tamaya-api
code/api21-2
114James_project_
mailet_standard
james-project-
mailet-standard
mailet/standard11
115Johnzon_
jsonschema
johnzon-jsonschemajohnzon-jsonschema21-2
116Johnzon_
mapper
johnzon-mapperjohnzon-mapper61-6
117Karaf_mainkaraf-mainmain11
118Appformer_uberfire
_commons_editor
_backend
uberfire-commons-editor-backenduberfire-extensions
/uberfire-commons-editor/
uberfire-commons-editor-backend
11
119Kie_pmml_
commons
kie-pmml-commonskie-pmml-trusty/
kie-pmml-commons
31-3
120Kie_memory_
compiler
kie-memory-compilerkie-memory-compiler11
121Jbpm_human
_task_workitems
jbpm-human-task-workitemsjbpm-human-task/
jbpm-human-task-workitems
11
122Appformer_uberfire_
security_management
_client
uberfire-security-management-clientuberfire-extensions
/uberfire-security
/uberfire-security-management
/uberfire-security
-management-client
11
123Appformer_uberfire
_workbench_client
uberfire-workbench-clientuberfire-workbench/
uberfire-workbench-client
31-3
124Jandexjandex61-6
125Kogito_editors
_java_kie_wb
_common_stunner
_widgets
kie-wb-common-
stunner-widgets
kie-wb-common-stunner/
kie-wb-common-stunner-client/
kie-wb-common-stunner-widgets
11
126Ognlcommons-ognl11
127Qpid_clientqpid-jms-clientqpid-jms-client81-8
128Switchyard_adminswitchyard-adminadmin11
129Weld_se_coreweld-se-coreenvironments/se/core11
130Jboss_modulesjboss-modules51,3-6
131Jboss_threadsjboss-threads11
132Minaftp_apiftpserver-apiftplet-api11
133Sling_
validation
sling-org-apache-sling-validation-core11
134Switchyard_
config
switchyard-configconfig11
135Switchyard_
validate
switchyard-validatevalidate11
136Wildfly_naming
_client
wildfly-naming-client21-2
137Knox_assertion
_common
gateway-provider-
identity-assertion
-common
gateway-provider-
identity-assertion
-common
11
138Oozie_clientoozie-clientclient21-2
139Qpidjms_clientqpidjms-clientclient31-3
140Rdf4j_queryrdf4j-querycore/query11
141Rdf4j_rio_apirdf4j-rio-apicore/rio/api21-2
142Rdf4j_rio_jsonldrdf4j-rio-jsonldcore/rio/jsonld21-2
143Rdf4j_rio_rdfjsonrdf4j-rio-rdfjsoncore/rio/rdfjson21-2
144Rdf4j_rio_rdfxmlrdf4j-rio-rdfxmlcore/rio/rdfxml11
145Rdf4j_rio_turtlerdf4j-rio-turtlecore/rio/turtle81-4,6,8-10
146Sentry_ccommonsentry-core-commonsentry-core/sentry-core-common21-2
147Sling_apiregionssling-apiregions31-3
148Sling_cpconvertersling-cpconverter31-3
149Tiles_apitiles-apitiles-api21-2
150Tiles_coretiles-coretiles-core31-3
151Twill_dcoretwill-discovery-coretwill-discovery-core11
152Maven2_artifactmaven-artifactmaven-artifact21-2
153Maven2_projectmaven-projectmaven-project21-2
154Wicket_requestwicket-requestwicket-request61-6
155Cayenne_xmppcayenne-xmppcayenne-xmpp11
156Wicket_utilwicket-utilwicket-util41-4
157Wicket_springwicket-springwicket-spring11
158Cayenne_jgroupscayenne-jgroupscayenne-jgroups11
159Cayenne_jmscayenne-jmscayenne-jms11
160Struts1_corestruts1-corecore21-2
161Wicket_cdiwicket-cdiwicket-cdi11
162Wicket_corewicket-corewicket-core181-18
163Mshared_archivermaven-archivermaven-archiver11
164Shindig_commonshindig-commonjava/common11
165Xbean_reflectxbean-reflectxbean-reflect21-2
166Mrunitmrunit61-6
167Rave_corerave-corerave-components
/rave-core
21-2
168Rave_commonsrave-commonsrave-components
/rave-commons
11
169Rave_webrave-webrave-components/rave-web11
170Jmh_corejmh-corejmh-core11
171Sdk_coresdk-core31-3
172Cargo_containercargo-containercore/api/
container
41-4
173Oak_commonsoak-commonsoak-commons11
174Streamexstreamex71-7
175Javapoetjavapoet171-17
176RTreertree121-12
177Spoonspoon171-17
178Slack_java
_webhook
slack-java-webhook11
179Zip4jzip4j521-52
180Incubator_
retired_pirk
incubator-retired-pirk11
181SparsebitsetSparseBitSet21-2
182Assertj_assert
ions_generator
assertj-assertions
-generator
71-7
183Config_magicconfig-magic22
184Jcodemodeljcodemodel71-7
185Jdbm3JDBM361-6
186Mybatis_pagehelperMybatis-PageHelper41-4
187N5n521-2
188Stash_jenkins_
postreceive
_webhook
stash-jenkins
-postreceive-webhook
11
189Suffixtreesuffixtree11
190Template_
benchmark
template-benchmark11
191Vectorzvectorz61-6
192Cli_parsercli-parser11
193Gatling_reportgatling-report31-3
194Semux_coresemux-core13
195Solarpositioningsolarpositioning31-3
196Sparkey_javasparkey-java31-3
197Shazamcrestshazamcrest21-2
198RestfixtureRestFixture41-4
199Chronicle_networkChronicle-Network41-4
200Gocd_slack_build
_notifier
gocd-slack-
build-notifier
31-3
201Confluence_http
_authenticator
confluence_http
_authenticator
11
202Tempus_fugittempus-fugit11
203Kafka_graphitekafka-graphite11
204Simple_excelsimple-excel11
205Trident_mltrident-ml11
206Tascalate_
concurrent
tascalate-concurrent21-2
207Jcabi_githubjcabi-github811-42,44-82
208Podampodam11
209SansormSansOrm71-7
210Transmittable_
thread_local
transmittable
-thread-local
41-4
211Jchronicjchronic11
212Netconf_javanetconf-java11
213Xades4jxades4j41-4
214Spatial4jspatial4j41-4
215Iciqliciql21-2
216Metrics_opentsdbmetrics-opentsdb21-2
217Spring_context
_support
spring-context
-support
12
218Jmimemagicjmimemagic11
219Markedjmarkedj171-17
220SonartspluginSonarTsPlugin101-10
221Aws_mavenaws-maven11
222Snomed_owl
_toolkit
snomed-owl
-toolkit
21-2
223Weak_lock_freeweak-lock-free11
224Proj4Jproj4j91-9
225Markedjmarkedj21-2
226Rocketmq_mqtt_dsrocketmq-mqtt-dsmqtt-ds11
227Retrofitretrofitretrofit31-3
228Jnagmpjnagmpjnagmp11
229Rocketmq_
mqtt_cs
rocketmq-mqtt-csmqtt-cs11
230Dagger_coredagger-corecore201-20
231Google_java
_format_core
google-java
-format-core
core11
232Jimfsjimfsjimfs21-2
233Open_location
_code_java
open-location
-code-java
java41-4
234Gwtmockitogwtmockitogwtmockito31-3
235Render_apprender-apprender-app51-5
236Tapetapetape131-13
237Jcabi_httpjcabi-http161-16
238Jcabi_aetherjcabi-aether11
239Jcabi_w3cjcabi-w3c11
240Jcabi_emailjcabi-email41-4
241Jcabi_logjcabi-log91-9
242Jcabi_matchersjcabi-matchers21-2
243Jfreechart_fsejfreechart-fse21-2
244Jfreesvgjfreesvg11
245Leshan_coreleshan-coreleshan-core101-10
246Rdf_jenacommons-rdf-jenacommons-rdf-jena11
247Jackson_
annotations
jackson-annotations11
248Jackson_datatype
_hibernate4
jackson-datatype
-hibernate4
hibernate411
249Rtree2rtree261-6
250Subethasmtpsubethasmtp11
251Fileuploadcommons-fileupload21-2
252Beanutilscommons-beanutils271-18,20-21,23-29
253Hugegraph_commonhugegraph-commonhugegraph-common51-5
254Dbcpcommons-dbcp181-7,9-19
255Rng_samplingrng-samplingrng-sampling21-2
256Scxmlscxml301-12,14,16,18,20,22,25,27,31,33-42
257Mrunitcommons-mrunit41-4

Setting up GrowingBugs

Requirements

  • Java 1.8
  • Git >= 1.9
  • SVN >= 1.8
  • Perl >= 5.0.12
  • Curl

Note that only Ubuntu 18 and later are supported.

Steps to set up GrowingBugs

  1. Clone GrowingBugs:

    • git clone https://github.com/liuhuigmail/GrowingBugRepository.git
  2. Initialize GrowingBugs:

    Download the project repositories and external libraries that are not included in the git repository for size purposes and to avoid redundancies. We provide a mechanism to download them automatically as follows:

    • cd GrowingBugRepository
    • sudo cpanm --installdeps .
    • ./init.sh
    • ./repos.sh
  3. Add GrowingBugs's executables to your PATH:

    • export PATH=$PATH:"path2growingbugs"/framework/bin

Using GrowingBugs

Typical Usage

  1. Checkout a buggy source code version (If the project doesn't hava subproject, -s parameter can be ignored):

    • defects4j checkout -p project_id -v version_id -w work_dir -s subproject_locator

    Example:

    • defects4j checkout -p Shiro_core -v 37b -w /tmp/Shiro_core_37_buggy -s core
    • defects4j checkout -p Dbutils -v 1b -w /tmp/dbutils_1_buggy

    Notably, GrowingBugs supports sub-projects that are not suported by Defects4J. To this end, yor should specify the sub-project with -s parameter in the checkout command. The preceding example common leverages -s core to check out sub-proejct core from the enclosing project Shiro_core. For the compile and test commands, you should also switch to the sub-project's folder to compile and test the sub-project.

  2. Change to the working directory, compile sources and tests, and run tests:

    • cd work_dir/subproject_locator
    • defects4j compile
    • defects4j test

    Example1๏ผš

    • cd /tmp/Shiro_core_37_buggy/core
    • defects4j compile
    • defects4j test

    Example2๏ผš

    • cd /tmp/dbutils_1_buggy
    • defects4j compile
    • defects4j test

Currently, we resuse all APIs of Defects4J (more details at https://github.com/rjust/defects4j), and thus all applications relying on Defects4J could be transferred smoothly to GrowingBugs.

Versions

Because the bug repository keeps growing, let us known if you need a stable version for your study (e.g., evalutions for a research paper), and we will release a specific version where the bugs and patches are fixed (to faciliate the replication of your study).

Copyright

Notably, this bug repository is based on the well-known Defects4J https://github.com/rjust/defects4j. We reuse its source code as well as the bugs in Defects4J. The key difference is that growingBugs levearages BugBuilder[1] to exclude bug-irrelevarange changes from bug-fixing commmits automatically whereas Defects4J requests human experts to accomplish the same task. Consequently, growingBugs can keep growing automatically even without human intervention.

Citation

If you are exploiting our dataset, please kindly cite the following paper:

[1] Yanjie Jiang, Hui Liu*, Nan Niu, Lu Zhang, Yamin Hu. Extracting Concise Bug-Fixing Patches from Human-Written Patches in Version Control Systems. The 43rd International Conference on Software Engineering (ICSE), pp. 686-698, May, 2021

[2]Yanjie Jiang, Hui Liu*, Xiaoqing Luo, Zhihao Zhu, Xiaye Chi, Nan Niu, Yuxia Zhang, Yamin Hu, Pan Bian, and Lu Zhang. " BugBuilder: An Automated Approach to Building Bug Repository," in IEEE Transactions on Software Engineering, Online 2022, doi: 10.1109/TSE.2022.3177713

[3]Yanjie Jiang, Hui Liu*,Yuxia Zhang, Weixing Ji, Hao Zhong, and Lu Zhang. "Do Bugs Lead to Unnaturalness of Source Code?" In Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2022). Association for Computing Machinery, New York, NY, USA, 1085โ€“1096. https://doi.org/10.1145/3540250.3549149

@INPROCEEDINGS {GrowingBugsICSE21, author = {Yanjie Jiang and Hui Liu and Nan Niu and Lu Zhang and Yamin Hu}, booktitle = {IEEE/ACM 43rd International Conference on Software Engineering (ICSE 2021)}, title = {Extracting Concise Bug-Fixing Patches from Human-Written Patches in Version Control Systems}, year = {2021}, pages = {686-698}, doi = {10.1109/ICSE43902.2021.00069}, url = {https://doi.ieeecomputersociety.org/10.1109/ICSE43902.2021.00069}, publisher = {IEEE Computer Society}, address = {Los Alamitos, CA, USA}, month = {may} }

@ARTICLE{GrowingBugsTSE2022, author={Jiang, Yanjie and Liu, Hui and Luo, Xiaoqing and Zhu, Zhihao and Chi, Xiaye and Niu, Nan and Zhang, Yuxia and Hu, Yamin and Bian, Pan and Zhang, Lu}, journal={IEEE Transactions on Software Engineering}, title={BugBuilder: An Automated Approach to Building Bug Repository}, year={2022}, volume={}, number={}, pages={1-22}, doi={10.1109/TSE.2022.3177713}}

@inproceedings{NaturalnessOfBugsFSE2022, author = {Jiang, Yanjie and Liu, Hui and Zhang, Yuxia and Ji, Weixing and Zhong, Hao and Zhang, Lu}, title = {Do Bugs Lead to Unnaturalness of Source Code?}, year = {2022}, isbn = {9781450394130}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, url = {https://doi.org/10.1145/3540250.3549149}, doi = {10.1145/3540250.3549149}, booktitle = {Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering}, pages = {1085โ€“1096}, numpages = {12}, keywords = {Naturalness, Source Code, Bug Fixing, Bugs, Code Entropy}, location = {Singapore, Singapore}, series = {ESEC/FSE 2022} }