{'fraction_non_alphanumeric': 0.02392947103274559, 'fraction_numerical': 0.006297229219143577, 'mean_word_length': 5.330677290836653, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
IRBFL: An Information Retrieval Based Fault Localization Approach

Identifying the location of faults in real-world programs is one of the most costly processes during software debugging. In order to reduce debugging effort, many fault localization techniques have been proposed. One of the most widely studied technique is called Spectrum-based fault localization (SBFL), which uses the coverage information and execution results of test cases to do fault localization. Most SBFL techniques only consider the binary coverage information and ignore the execution frequency, so their fault localization accuracy is limited, especially when faults occur in the iteration entities or loop bodies. In this paper, we propose IRBFL, a novel fault localization technique based on information retrieval to extract information from execution frequencies of program entities. IRBFL uses mutation analysis to reduce the low suspicious classes, and then it adopts information retrieval techniques to calculate the suspiciousness value. We evaluate IRBFL on 205 real-world faults from 5 programs in Defects4J benchmark. The experimental results show that our proposed method outperforms the other five state-of-the-art SBFL techniques. More specifically, no matter in single-fault or multi-fault programs, IRBFL can identify 2 to 3 times more faulty methods than the other five SBFL techniques when checking the top 1 method. More empirical results in terms of other metrics, including acc@3, acc@5, EXAM, MRR, and MAP, also indicate that IRBFL technique is better than the other five SBFL techniques.