Package-Aware Approach for Repository-Level Code Completion in Pharo
Omar Abedelkader (EVREF), St\'ephane Ducasse (EVREF), Oleksandr Zaitsev (SENS, Cirad, UM), Romain Robbes, Guillermo Polito

TL;DR
This paper introduces a package-aware heuristic for code completion in Pharo that improves suggestion relevance by prioritizing classes within the same package or repository, enhancing developer productivity.
Contribution
It proposes a novel heuristic that incorporates repository structure into code completion, addressing limitations of existing global name suggestions in Pharo.
Findings
MRR improved with package-aware heuristic
More relevant suggestions within same package or repository
Outperforms default global namespace heuristic
Abstract
Pharo offers a sophisticated completion engine based on semantic heuristics, which coordinates specific fetchers within a lazy architecture. These heuristics can be recomposed to support various activities (e.g., live programming or history usage navigation). While this system is powerful, it does not account for the repository structure when suggesting global names such as class names, class variables, or global variables. As a result, it does not prioritize classes within the same package or project, treating all global names equally. In this paper, we present a new heuristic that addresses this limitation. Our approach searches variable names in a structured manner: it begins with the package of the requesting class, then expands to other packages within the same repository, and finally considers the global namespace. We describe the logic behind this heuristic and evaluate it…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Logic, programming, and type systems · Advanced Software Engineering Methodologies
