Programmers often have to search for similar code when detecting and fixing similar bugs. Prior active learning approaches take only instance-level feedback, i.e., positive and negative method instances. This limitation leads to increased labeling burden, when users try to control generality and specificity for a desired code pattern.
We present SURF, a feedback-guided pattern inference approach. To reduce users’ labelling effort, it actively guide users in assessing the implication of having a particular feature choice in the constructed pattern, and incorporates direct feature-level feedback. The key insight behind SURF is that users can effectively select appropriate features with the aid of impact analysis. SURF provides hints on the global distribution of how each feature is consistent with already labelled positive and negative instances, and how selection of a new feature can yield additional matching instances. Its what-if-analysis contrasts how different feature choices can include (or exclude) more instances in the rest of the population.
We target “available” and “reusable” badges.
A reviewer is expected to be able to run docker containers, and access a web app running from the container. A regular developer laptop should be enough to run SURF.
Availability: SURF is available on zenodo (https://zenodo.org/records/10460523), on GitHub (https://github.com/surfpattern/SURF), and can be run from a docker image (codesurf/surf, https://hub.docker.com/r/codesurf/surf). Preprint can be found on https://github.com/surfpattern/SURF/blob/main/preprint.pdf
Reusability: The tool for interacting with the case studies used in evaluation with human users is provided. We also provide instructions for running the tool on the case studies described in the paper. The tool can be easily run using docker. This allows reuse of the case studies in future work performing user studies on active learning.
Demo video is available at http://web.cs.ucla.edu/~miryung/Publications/icse2024surf_demo.mp4