CraTer

This page shows our project CraTer, which is the prototype of paper Does the Fault Reside in a Stack Trace? [paper]. This page includes the original seven Java projects, the experimental datasets, and the usage of CraTer.

1. Parent Projects

In our work, we manually select the following seven widely-used open-source Java projects as our parent project. You can click the project name in the table and redirect to the home page of the project. The basic information is given in TABLE I.

TABLE I. Basic information of seven parent projects.
Project NameVersionLoc#Classes#Tests#Mutants#Killed#Before Selection
Codec1.1014,480846622,9012,601774
Ormlite-core5.120,0241751,0593,5632,7511,303
JSqlParser0.9.732,8682034898,7575,636708
Collections4.161,28343516,0636,6505,3001,957
IO2.526,0181221,1573,3372,728885
Jsoup1.11.115,4601375572,6571,892601
Mango1.5.430,2084753725,1491,570733
TOTAL-200,3411,63120,35933,01422,4786,961
AVERAGE-28,6202332,9084,7163,211994

2. Artificial Crashes

We create "artificial crashes" by program mutation technique (i.e., randomly change the source code of above 7 projects). The stack traces of these crashes are collected, which can be download at [crash data.zip(247k)]. The format of stack traces of crashes are normalized as follows.

Note that MUTATIONID:<<A.B.C,fun, line>> records the mutation position(fault position) of mutants.

--- org.apache.commons.codec.binary.Base32InputStreamTest::testBase32InputStreamByteByByte
java.lang.IllegalArgumentException: pad must not be in alphabet or whitespace
	at org.apache.commons.codec.binary.Base32.(Base32.java:309)
	at org.apache.commons.codec.binary.Base32.(Base32.java:230)
	at org.apache.commons.codec.binary.Base32InputStream.(Base32InputStream.java:82)
	at org.apache.commons.codec.binary.Base32InputStreamTest.testByteByByte(Base32InputStreamTest.java:342)
	at org.apache.commons.codec.binary.Base32InputStreamTest.testBase32InputStreamByteByByte(Base32InputStreamTest.java:245)
MUTATIONID:<<org.apache.commons.codec.binary.Base32, <init> ,308>>

We extract 89 features from each crash, and save them as the format of feature vectors. The feature datasets can be download at [generated.zip (685k)]. The datasets are in ARFF format, the contents are as follows,

@relation name

@attribute ST01 numeric
@attribute ST02 numeric
...
@attribute AB16 numeric
@attribute flag {InTrace,OutTrace}

@data
20,2,1,1,1,6,6,6,6,60,82,0,1,11,8,0,130,9,1,0,2,0,0,0,0,0,0,0,0,0,3,2,0,4,0.111,0,0.222,0,0,0,0,0,0,0,0,0,0.333,0.222,0,0.222,0,1,11,8,0,130,9,1,0,2,0,0,0,0,0,
0,0,0,0,3,2,0,4,0.111,0,0.222,0,0,0,0,0,0,0,0,0,0.333,0.222,0,0.222,InTrace
20,2,1,1,1,12,10,12,10,60,82,8,3,6,5,1,104,30,1,6,6,0,0,0,0,0,0,0,0,5,14,2,3,9,0.033,0.2,0.2,0,0,0,0,0,0,0,0,0.167,0.467,0.067,0.1,0.067,8,3,6,5,1,104,30,1,6,
6,0,0,0,0,0,0,0,0,5,14,2,3,9,0.033,0.2,0.2,0,0,0,0,0,0,0,0,0.167,0.467,0.067,0.1,0.067,InTrace
...

3. Usage of CraTer

The tool CraTer takes as the inputs of stack trace and faulty source code, and outputs the predicted results of fault location(i.e., InTrace or OutTrace). It implements the basic experiments in paper Does the Fault Reside in a Stack Trace? This tool is updated on GitHub. You can also download it here [CraTer.zip (133M)].

The usage of CraTer is quite easy, you just need to execute the CraTer.jar, which is contained in the project, on terminate or CMD windows. For example, we can try the command java -jar CraTer.jar, then all the parameters of CraTer will be list in Figure 1.

Figure 1. The welcome interface of CraTer.
 
If you have any question about our work, please contact Yongfeng Gu, or Jifeng Xuan, Wuhan University.

E-mail: yongfenggu (at) whu (dot) edu (dot) cn

E-mail: jxuan (at) whu (dot) edu (dot) cn