Knight-Jo / GrowingBugRepository

A bug repository that keeps growing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

Contents of growingBugs

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

Project ID Project name SubProject locator Number of bugs Bug IDs
1 Chart jfreechart 26 1-26
2 Cli commons-cli 41 1-5,7-42
3 Closure closure-compiler 174 1-62,64-92,94-176
4 Codec commons-codec 19 1-19
5 Collections commons-collections 8 25-31,35
6 Compress commons-compress 51 1-48,50,52-53
7 Csv commons-csv 17 1-17
8 Gson gson 18 1-18
9 JacksonCore jackson-core 30 1-26,28-31
10 JacksonDatabind jackson-databind 150 1-85,87-117,119,121-126,
128-129,131-133,135-156
11 JacksonXml jackson-dataformat-xml 6 1-6
12 Jsoup jsoup 93 1-93
13 JxPath commons-jxpath 22 1-22
14 Lang commons-lang 72 1,3-33,35-65,69,71,73,
76,80-84
15 Math_4j commons-math4j 106 1-106
16 Mockito mockito 38 1-38
17 Time joda-time 26 1-20,22-27
18 Dbutils commons-dbutils 2 1-2
19 Functor commons-functor 2 1-2
20 Imaging commons-imaging 10 1,3-8,10-11,14
21 IO commons-io 22 1-3,5-6,8-18,
22,25,27,29-31
22 JXR maven-jxr 1 1
23 MShade maven-shade-plugin 6 1-4,6-7
24 Tika tika 5 1-2,5-7
25 Validator commons-validator 21 1-2,4,6-9,11,
13-25
26 Pool commons-pool 17 1,5-7,10-14,
16,20-21,24,
26-27,29-30
27 Email commons-email 4 3-6
28 Graph commons-graph 5 1-5
29 Net commons-net 14 9,10,12,
14-18,20-21,
23-26
30 Numbers_angle commons-numbers-angle commons-numbers-angle 2 1-2
31 Geometry_core commons-geometry-core commons-geometry-core 2 1,3
32 MGpg maven-gpg-plugin 1 1
33 Text commons-text 4 1-2,4-5
34 Tika_core tika-core tika-core 25 4,6,9,11,
17,20-39
35 Tika_app tika-app tika-app 2 1,3
36 Shiro_core shiro-core core 10 37,40,46,52,98,
144,176,181,202-203
37 Jena_core jena-core jena-core 1 2
38 Shiro_web shiro-web web 9 1,3,7-13
39 MDeploy maven-deploy-plugin 1 1
40 Jackrabbit_filevault
_vault_validation
jackrabbit-filevault-vault-validation vault-validation 4 1-4
41 Jackrabbit_oak_core oak-core oak-core 5 1-5
42 Doxia_module_apt doxia-module-apt doxia-modules/doxia-module-apt 2 1-2
43 Xmlgraphics xmlgraphics-commons 4 1-4
44 Rdf_jena commons-rdf-jena commons-rdf-jena 1 1
45 Maven_checkstyle_plugin maven-checkstyle-plugin 1 1
46 James_project_core james-project-core core 2 1-2
47 Pdfbox_fontbox pdfbox-fontbox fontbox 5 1-5
48 AaltoXml aalto-xml 9 1-9
49 HttpClient5 httpclient5 httpclient5 7 1-2,4-8
50 jackson_modules
_java8_datetime
jackson-modules-java8-datetime datetime 5 1-5
51 Pdfbox_pdfbox pdfbox-pdfbox pdfbox 3 1-3
52 Storm_client storm-client storm-client 1 1
53 James_mime4j_core James-mime4j-core core 9 1-9
54 JacksonDataformatsText
_yaml
jackson-dataformats-text-yaml yaml 6 1-2,4-7
55 JacksonDataformatsText
_properties
jackson-dataformats-text-properties properties 2 1-2
56 JacksonDataformatBinary
_avro
jackson-dataformats-binary-avro avro 2 1-2
57 JacksonDataformatBinary
_cbor
jackson-dataformats-binary-cbor cbor 5 1-5
58 JavaClassmate java-classmate 2 1-2
59 JacksonModuleJsonSchema jackson-module-jsonSchema 1 1
60 JacksonDatatypeJoda jackson-datatype-joda 3 1-3
61 Bcel commons-bcel 6 1-6
62 JacksonDataformatBinary
_protobuf
jackson-dataformats-binary-protobuf protobuf 4 1-4
63 Jackrabbit_filevault
_vault_core
jackrabbit-filevault-vault-core vault-core 1 1
64 JacksonDatatypeJsr310 jackson-datatype-jsr310 4 1-4
65 JacksonDataformatBinary
_smile
jackson-dataformats-binary-smile smile 3 1-3
66 JacksonModuleAfterburner jackson-module-afterburner 3 1-3
67 Woodstox woodstox 7 1-7
68 MetaModel_core MetaModel-core core 9 1-9
69 MetaModel_csv MetaModel-csv csv 1 1
70 MetaModel_excel MetaModel-excel excel 1 1
71 MetaModel_jdbc MetaModel-jdbc jdbc 3 1-3
72 MetaModel_pojo MetaModel-pojo pojo 1 1
73 MetaModel_salesforce MetaModel-salesforce salesforce 1 1
74 Wink_common wink-common wink-common 4 1-4
75 Xbean_naming xbean-naming xbean-naming 1 1
76 James_project_
server_container_core
james-project-server-container-core server/container/core 1 1
77 Johnzon_core johnzon-core johnzon-core 11 1-2,4-12
78 Nifi_mock nifi-mock nifi-mock 2 1-2
79 Rat_core apache-rat-core apache-rat-core 1 1
80 Rat_plugin apache-rat-plugin apache-rat-plugin 1 1
81 Tez_common tez-common tez-common 1 1
82 Tinkerpop_gremlin_core gremlin-core gremlin-core 1 1
83 Webbeans_web webbeans-web webbeans-web 1 1
84 Hono_client hono-client client 4 1-4
85 Httpcomponents_core_h2 httpcore5-h2 httpcore5-h2 1 1
86 Httpcomponents_core
_httpcore5
httpcore5 httpcore5 3 1-3
87 Johnzon_jsonb johnzon-jsonb johnzon-jsonb 6 1-6
88 Johnzon_jaxrs johnzon-jaxrs johnzon-jaxrs 1 1
89 Hbase_common hbase-common hbase-common 1 1
90 Incubator_tamaya_api incubator-retired-tamaya-api code/api 2 1-2
91 James_project_
mailet_standard
james-project-mailet-standard mailet/standard 1 1
92 Johnzon_jsonschema johnzon-jsonschema johnzon-jsonschema 2 1-2
93 Johnzon_mapper johnzon-mapper johnzon-mapper 6 1-6
94 Karaf_main karaf-main main 1 1
95 Appformer_uberfire_
commons_editor_backend
uberfire-commons-editor-backend uberfire-extensions/uberfire-commons-editor/uberfire-commons-editor-backend 1 1
96 Kie_pmml_commons kie-pmml-commons kie-pmml-trusty/kie-pmml-commons 3 1-3
97 Kie_memory_compiler kie-memory-compiler kie-memory-compiler 1 1
98 Jbpm_human
_task_workitems
jbpm-human-task-workitems jbpm-human-task/jbpm-human-task-workitems 1 1
99 Drools_traits drools-traits drools-traits 1 1
100 Drools_model_compiler drools-model-compiler drools-model/drools-model-compiler 1 1
101 Appformer_uberfire
_security_management
_client
uberfire-security-management-client uberfire-extensions/uberfire-security/uberfire-security-management/uberfire-security-management-client 1 1
102 Appformer_uberfire
_workbench_client
uberfire-workbench-client uberfire-workbench/uberfire-workbench-client 3 1-3
103 Deltaspike_api deltaspike-core-api deltaspike/core/api 6 1-6
104 Flume_ngcore flume-ng-core flume-ng-core 2 1-2
105 Jandex jandex 6 1-6
106 Kogito_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 1 1
107 Ognl commons-ognl 1 1
108 Qpid_client qpid-jms-client qpid-jms-client 8 1-8
109 Switchyard_admin switchyard-admin admin 1 1
110 Weld_se_core weld-se-core environments/se/core 1 1
111 Jboss_modules jboss-modules 5 1,3-6
112 Jboss_threads jboss-threads 1 1
113 Minaftp_api ftpserver-api ftplet-api 1 1
114 Sling_validation sling-org-apache-sling-validation-core 1 1
115 Switchyard_config switchyard-config config 1 1
116 Switchyard_validate switchyard-validate validate 1 1
117 Vysper_nbxml vysper-nbxml nbxml 2 1-2
118 Wildfly_naming_client wildfly-naming-client 2 1-2
119 Dosgi_common dosgi-common common 2 1-2
120 Fluo_api fluo-api modules/api 2 1,3
121 Hivemall_core core core 3 1-3
122 Knox_assertion_common gateway-provider-
identity-assertion
-common
gateway-provider-
identity-assertion
-common
1 1
123 Oozie_client oozie-client client 2 1-2
124 Qpidjms_client qpidjms-client client 3 1-3
125 Rdf4j_query rdf4j-query core/query 1 1
126 Rdf4j_rio_api rdf4j-rio-api core/rio/api 2 1-2
127 Rdf4j_rio_jsonld rdf4j-rio-jsonld core/rio/jsonld 2 1-2
128 Rdf4j_rio_rdfjson rdf4j-rio-rdfjson core/rio/rdfjson 2 1-2
129 Rdf4j_rio_rdfxml rdf4j-rio-rdfxml core/rio/rdfxml 1 1
130 Rdf4j_rio_turtle rdf4j-rio-turtle core/rio/turtle 10 1-10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
131 Sentry_ccommon sentry-core-common sentry-core/sentry-core-common 2 1-2
132 Sling_apiregions sling-apiregions 3 1-3
133 Sling_cpconverter sling-cpconverter 3 1-3
134 Tiles_api tiles-api tiles-api 2 1-2
135 Tiles_core tiles-core tiles-core 3 1-3
136 Twill_dcore twill-discovery-core twill-discovery-core 1 1
137 Maven2_artifact maven-artifact maven-artifact 2 1-2
138 Maven2_project maven-project maven-project 2 1-2
139 Math commons-math 35 1-35
140 Wicket_request wicket-request wicket-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request 6 1-6
141 Cayenne_xmpp cayenne-xmpp cayenne-xmpp 1 1
142 Wicket_util wicket-util wicket-util 4 1-4
143 Wicket_spring wicket-spring wicket-spring 1 1
144 Cayenne_jgroups cayenne-jgroups cayenne-jgroups 1 1
145 Cayenne_jms cayenne-jms cayenne-jms 1 1
146 Struts1_core struts1-core core 2 1-2
147 Wicket_cdi wicket-cdi wicket-cdi 1 1
148 Wicket_core wicket-core wicket-core 18 1-18
149 Mshared_archiver maven-archiver maven-archiver 1 1
150 Shindig_common shindig-common java/common 1 1
151 Xbean_reflect xbean-reflect xbean-reflect 1 1
152 Mrunit mrunit 2 1-2
153 Rave_core rave-core rave-components/rave-core 2 1-2
154 Rave_commons rave-commons rave-components/rave-commons 1 1
155 Rave_web rave-web rave-components/rave-web 1 1
156 Jmh_core jmh-core jmh-core 1 1
157 Sdk_core sdk-core 3 1-3
158 Cargo_container cargo-container core/api/container 4 1-4
159 Oak_commons oak-commons oak-commons 1 1
160 Streamex streamex 7 1-7
161 Javapoet javapoet 17 1-17
162 RTree rtree 12 1-12
163 Spoon spoon 17 1-17
164 Canvas_api canvas-api 4 1-4
165 Coveralls_maven_plugin coveralls-maven-plugin 8 1-8
166 Slack_java_webhook slack-java-webhook 1 1
167 Zip4j zip4j 55 1-55
168 Incubator_retired_pirk incubator-retired-pirk 1 1
169 Sparsebitset SparseBitSet 2 1-2
170 Assertj_assertions_generator assertj-assertions-generator 7 1-7
171 Config_magic config-magic 2 2
172 Deft deft 1 1
173 Jcodemodel jcodemodel 7 1-7
174 Jdbm3 JDBM3 6 1-6
175 Mybatis_pagehelper Mybatis-PageHelper 4 1-4
176 N5 n5 2 1-2
177 Stash_jenkins_postreceive_webhook stash-jenkins-postreceive-webhook 1 1
178 Suffixtree suffixtree 1 1
179 Template_benchmark template-benchmark 1 1
180 Vectorz vectorz 6 1-6
181 Cli_parser cli-parser 1 1
182 Gatling_report gatling-report 3 1-3
183 Tabula_java tabula-java 1 1
184 Ber_tlv ber-tlv 4 1-4
185 Commons_suncalc commons-suncalc 2 1-2
186 Dropwizard_spring dropwizard-spring 1 1
187 Semux_core semux-core 3 1-3
188 Solarpositioning solarpositioning 3 1-3
189 Sparkey_java sparkey-java 3 1-3
190 Shazamcrest shazamcrest 2 1-2
191 Restfixture RestFixture 4 1-4
192 Chronicle_network Chronicle-Network 4 1-4
193 Farm farm 4 1-4
194 Gocd_slack_build_notifier gocd-slack-build-notifier 3 1-3
195 Confluence_http_authenticator confluence_http_authenticator 1 1
196 Tempus_fugit tempus-fugit 1 1
197 Disklrucache DiskLruCache 4 1-4
198 Kafka_graphite kafka-graphite 1 1
199 Simple_excel simple-excel 1 1
200 Trident_ml trident-ml 1 1
201 Tascalate_concurrent tascalate-concurrent 2 1-2
202 Jcabi_github jcabi-github 73 1-42,44-78
203 Podam podam 1 1
204 Sansorm SansOrm 7 1-7
205 Snowleopard SnowLeopard 1 1
206 Transmittable_thread_local transmittable-thread-local 4 1-4
207 Jchronic jchronic 1 1
208 Netconf_java netconf-java 1 1
209 Xades4j xades4j 4 1-4
210 Spatial4j spatial4j 4 1-4
211 Hive_funnel_udf hive-funnel-udf 1 1
212 Iciql iciql 2 1-2
213 Metrics_opentsdb metrics-opentsdb 2 1-2
214 Hierarchical_clustering_java hierarchical-clustering-java 1 1
215 Docker_java_api docker-java-api 10 1-10
216 Github_release_plugin github-release-plugin 2 1-2
217 Spring_context_support spring-context-support 2 2
218 Jmimemagic jmimemagic 1 1
219 Markedj markedj 17 1-17
220 Sonartsplugin SonarTsPlugin 10 1-10
221 Aws_maven aws-maven 1 1
222 Snomed_owl_toolkit snomed-owl-toolkit 2 1-2
223 Weak_lock_free weak-lock-free 1 1
224 Proj4J proj4j 9 1-9
225 Markedj markedj 2 1-2
226 Rocketmq_mqtt_ds rocketmq-mqtt-ds mqtt-ds 4 1-4
227 Retrofit retrofit retrofit 3 1-3
228 Burst burst burst 3 1-3
229 Jackrabbit_filevault_vault_validation jackrabbit-filevault-vault-validation vault-validation 7 1-7
230 Jnagmp jnagmp jnagmp 1 1
231 Rocketmq_mqtt_cs rocketmq-mqtt-cs mqtt-cs 1 1
232 Dagger_core dagger-core core 20 1-20
233 Google_java_format_core google-java-format-core core 1 1
234 Jimfs jimfs jimfs 2 1-2
235 Open_location_code_java open-location-code-java java 4 1-4
236 Gwtmockito gwtmockito gwtmockito 3 1-3
237 Render_app render-app render-app 5 1-5
238 Doubleclick_core openrtb-doubleclick-core doubleclick-core 1 1
239 Tape tape tape 13 1-13
240 Jcabi_http jcabi-http jcabi-http 16 1-16

Setting up GrowingBugs

Requirements

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

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
    • 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.

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. You may download it by the following command:

  • docker pull registry.cn-hangzhou.aliyuncs.com/bit-zhuzhihao/growingbugrepository:0.3

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.

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 21st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2022), to appear

@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}}

About

A bug repository that keeps growing

License:MIT License


Languages

Language:Perl 88.6%Language:Shell 4.5%Language:Java 4.4%Language:Python 2.4%Language:HTML 0.1%