{'fraction_non_alphanumeric': 0.015488867376573089, 'fraction_numerical': 0.0, 'mean_word_length': 5.191616766467066, '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}}
Automatically Mining High Level Patterns of Software Faults within Methods

Software faults are usually correlated to each other in practice. However, pattern-based static analysis can only report independent atomic faults, such as null-pointer dereference and memory leak. It does not take the influences among different faults into account which will lead to omissions of faults and bring security risks. Also, massive independent faults are against the understanding of them that may result in incomplete modifications. In this paper, we propose a new approach to generalize high level patterns with static analysis. Our approach first extracts execution traces of faults and joins the related faults into single compound traces. Then it mines a set of frequent patterns with only compound traces supporting them. The underlying algorithms in our approach have been implemented and applied to our static analysis tool, DTSGCC. The experimental results show the capability of our approach to discover high level patterns of faults.