{'fraction_non_alphanumeric': 0.014955134596211365, 'fraction_numerical': 0.00897308075772682, 'mean_word_length': 5.197530864197531, '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}}
AST Based JAVA Software Evolution Analysis

In the process of software evolution, software change information can help software developers and system analysts to get a better understanding of differential part of software. In this paper, we construct different versions of source code into abstract syntax trees, and use an improved tree matching algorithm which combines multiple string matching algorithms, bilateral best match strategy and predicate information of program to improve the match result. Also a detailed change type list is defined and all the tree editing operations will be mapped to refined program change classification. We evaluated our tree match algorithm on a medium-size project of different versions. Ten typical classes were picked as a benchmark and 456 changes were specified manually. Our method show a good performance on this benchmark with the average change number bias controlled in 1.75, and the average change number error percentage is controlled fewer than 5.38%.