{'fraction_non_alphanumeric': 0.015091863517060367, 'fraction_numerical': 0.0, 'mean_word_length': 4.933852140077821, '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}}
Dataflow Framework for Checker Framework

This paper presents a general dataflow framework for Java that can be used to replace the data flow implementation in the Checker Framework, a tool that adds pluggable type systems to Java. Currently, the Checker Framework uses a generalization and extension of the data flow analysis in Oracle’s javac, which is hardcoded to perform a few analyses like definite assignment. Because of this, the analyses in the Checker Framework suffer from imprecision. Moreover, no detailed documentation for the code is available. Our framework aims at overcoming these flaws. It is implemented to be modular, precise and we believe that it is easy to implement different data flow analyses using it. To show the latter, we have completely eliminated the existing data flow analyses in the Checker Framework and implemented the same analyses using our framework. The fact that all these analyses were written easily and with fewer lines of code shows the modularity of our framework. Finally, we have run the checkers with and without our framework and seen that checkers running with our framework issue fewer false positives and false negatives, which shows its precision. We believe that our framework is a useful contribution because it can improve the expressiveness and precision of the Checker Framework. Moreover, as we tried to keep the coupling between the Checker Framework and our data flow framework to a minimum, it could also be used with other tools that need data flow analyses.