{'fraction_non_alphanumeric': 0.014198782961460446, 'fraction_numerical': 0.0030425963488843813, 'mean_word_length': 5.16875, '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}}
Building an Operable Graph Representation of a Java Program as a Basis for Automatic Software Maintainability Analysis

As a part of a research project concerning software maintainability assessment in collaboration with the development team, we were interested in the frequent use of metrics as predictors. Many metrics exist, often with opaque and arguable implementations. We claim metrics mix the assessment of presentation, structure and model. In order to focus on true detectable maintainability defects, we computed metrics solely based on the structure of the program. Our approach was to parse the source code of Java programs as a graph, and to compute metrics in a declarative query language. To this end, we developed Javanalyser and implemented 34 metrics using Spoon to parse Java programs and Neo4j as graph database. We will show that the program graph constitutes a steady basis to compute metrics and conduct future machine-learning studies to assess maintainability.