{'fraction_non_alphanumeric': 0.012175324675324676, 'fraction_numerical': 0.0, 'mean_word_length': 5.1959798994974875, '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}}
CodeQuest-Source Code Querying with Datalog

Understanding source code is vital to many tasks in software engineering. Source code querying tools are designed to help such understanding, by allowing programmers to explore relations that exist between different parts of the codebase. The contribution of such a system named CodeQuest is the topic of this dissertation. One of the modern source code querying and browsing tools for Java is JQuery. This popular Eclipse IDE plug-in has been an inspiration for the development of the CodeQuest project a similar instrument, but with some fundamental differences. We shall have a closer look at JQuery, its features and implementation and compare it in various aspects with CodeQuest as we proceed. This dissertation presents a novel approach to software querying and maintenance. Its main strategy is to combine the expressive power of a logic language and scalability properties of a relational database. We shall show how such a tool can be implemented, discuss improvements and optimisations that can be applied and illustrate the advantages of this proposal by running numerous tests and comparing various performance parameters between CodeQuest and other modern querying systems.