Skip to content

AIRTEspresso/DecompilerStudy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DecompilerStudy

The first systematic study on the characteristics and causes of bugs in mature, widely-used Java decompilers.

##Introduction

This reposotiry provides the data of paper "Understanding and Finding Java Decompiler Bugs", which consists of four parts:

(1) 333 bugs with their characteristics summarized from their issues and fixing commits:

  • the main data is stored in file 333 unique bugs.xlsx of folder issueStudyData, where each sheet is for each project;
  • In file 333 unique bugs.xlsx, for each bug, ErrorType represents its error symptom, Provided_Artifacts represents the artifacts provided in its issue, Duration represents the fix duration, Issue represents the detailed issue address, Issue_Commit represents the fixing commits for the bug, Modified_Code represents the lines of code modified in the commits, Involved_Files represents the buggy files, Note uses "n-fix" to note that this row is a multiple fixing commits to the bug above, n-bug to note that this row is a bug that share the same issue with the bug above;
  • There are also many interesting informations not mentioned in our paper: Target_Structure represents the code structures the decompilation failure is related to mentioned in the issue; Detailed_Failure_Process represents the detailed sub-stage of this decompilation bug is in, Involved_Methods represents the buggy methods of the buggy files.
  • File 3 Project files to decompilation stages mapping contains the mapping between the files of the three projects and the decompilation stages mentioned in our paper, namely Instantiation, Entity, Generation, Optimization, Type Inference, Other, Region Restoration and Sugaring. To obtain the related stages of a bug, you can link the two files 3 Project files to decompilation stages mapping and 333 unique bugs.xlsx with their buggy files.

(2) the results of three decompilers when decompiling the 580*2 tests generated by JD-Tester using JavaFuzzer and Hephaestus:

  • the main data is summarized in two folders named as "JavaFuzzer" and "Hephaestus", each of which contains three folders *-detailedExperimentData contain the detailed experiment data of the three projects;
  • Inside three folders, an zip file named as "allData.zip" contains all the detailed data;
  • Meanwhile, every typical case of each bug can be found in folder errorSamples of *-detailedExperimentData;

(3) a further analysis of these decompilation results from which 62 bugs are revealed:

  • the main data is summarized in the folder bugDetailedData;
  • The further analyses of these bugs are given at first, and then the listing of the bugs, where: ID gives a unique ID of the bug that can be mapped with Bug ID of (2), Failure Period represents the failure period of the test, # represents on how many tests the bug occur among the 1160 tests, Description (Error Logs) represents the error log or our description of the failure,, Reported Issue represents the issue where we report the bug to the developers, State represents the state of the issue.

(4) the executable artifact of JD-Tester, a differential testing framework for Java decompilers: