Static Analysis tools have rules for several code quality issues and these rules are created by experts manually. In this paper, we address the problem of automatic synthesis of code quality rules from examples. We formulate the rule synthesis problem as synthesizing first order logic formulas over graph representations of code. We present a new synthesis algorithm RhoSynth that is based on Integer Linear Programming-based graph alignment for identifying code elements of interest to the rule. We bootstrap RhoSynth by leveraging code changes made by developers as the source of positive and negative examples. We also address rule refinement in which the rules are incrementally improved with additional user-provided examples. We validate RhoSynth by synthesizing more than 30 Java code quality rules. These rules have been deployed as part of Amazon CodeGuru Reviewer and their precision exceeds 75% based on developer feedback collected during live code-reviews within Amazon. Through comparisons with recent baselines, we show that current state-of-the-art program synthesis approaches are unable to synthesize most of these rules.
Sat 10 DecDisplayed time zone: Auckland, Wellington change
13:30 - 15:00 | Testing and MaintenanceOOPSLA at AMRF Auditorium Chair(s): Işıl Dillig University of Texas at Austin | ||
13:30 30mTalk | Overwatch: Learning Patterns in Code Edit Sequences OOPSLA Yuhao Zhang University of Wisconsin-Madison, Yasharth Bajpai Microsoft, Priyanshu Gupta Microsoft, Ameya Ketkar Uber, Miltiadis Allamanis Microsoft Research, Titus Barik Microsoft, Sumit Gulwani Microsoft, Arjun Radhakrishna Microsoft, Mohammad Raza Microsoft, Gustavo Soares Microsoft, Ashish Tiwari Microsoft DOI | ||
14:00 30mTalk | Satisfiability Modulo Fuzzing: A Synergistic Combination of SMT Solving and Fuzzing OOPSLA DOI | ||
14:30 30mTalk | Synthesizing Code Quality Rules from Examples OOPSLA DOI |