jsw-zorro / DiWi

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Welcome to the homepage of DiWi.

There are five folders:

  • benchmark, includes 90 compiler bug informtion (45 GCC bugs and 45 LLVM bugs)

    • gccbugs_summary.txt and llvmbugs_summy.txt: the first column is the bug ID; the second column is the buggy revision number; the third and fourth column are compilation options detecting the bug; the last column is the used test oracle (referring to failmessage.py in folder search)

    • folders gccbugs and llvmbugs: for each bug: fail.c is the failing test program; file "locations" contains the buggy location and fixed revision number, file "version" describes the bug in the bug report; installgcc.py and installllvm.py are the script used to install the corresponding buggy version.

  • mutation, includes the implementations of our mutation rules.

    • File "mutationRules.txt" lists all mutation rules used by DiWi, whose totle number is 132.

    • File "addQualifier.cpp" implements the mutation rules that are related to "add qualifier". Input: qualifier name

    • File "addRepModifier.cpp" implements the mutation rules that are related to "add modifier". Input: modifier name

    • File "remModifierQualifier.cpp" implements the mutation rules that are related to "remove modifier" and "remove qualifier". Input: modifier/qualifier name

    • File "repBinaryOp.cpp" implements the mutation rules that are related to "replace binary operator". Inputs: old Operator, new Operator

    • File "RepIntConstant.cpp" implements the mutation rules that are related to "replace constant". Input: used operation for constant.

    • File "repRemUnaryOp.cpp" implements the mutation rules that are related to "replace/remove unary operator". Inputs: old Operator, new Operator ("delete" represents removing it)

    • File "repVarSameScope.cpp" implements the mutation rules that are related to "replace variables under the same scope"

  • search, includes the implementation of our MCMC-based search process

    • File "searchMutate.py" implements the guided search process to construct a set of passing test programs

    • File "failmessage.py" implements the used test oracle to determine whether a generated test program is passing or failing

  • aggregation, includes the implementation of the aggregation based ranking strategy

    • File "aggregationforrank.py" implements the aggregation-based ranking for bug isolation
  • exploration, including the implementation of combining the search-based mutated test programs by DiWi and the developer-provided test suite

    • File “Combination.cpp” implements the combination operation between the two kinds of test programs, i.e., inserting a block from the developer-provided test suite to a search-based mutated test program

Welcome more people to enrich the benchmark together for the following research on compiler bug detection, isolation, and fixing! Moreover, we are always actively improving/enriching our dataset and tool!

Thanks very much!

DiWi authors

About


Languages

Language:C++ 61.6%Language:Python 25.5%Language:C 12.9%