Abstract | ||
---|---|---|
ABSTRACTAPI recommendation in real-time is challenging for dynamic languages like Python. Many existing API recommendation techniques are highly effective, but they mainly support static languages. A few Python IDEs provide API recommendation functionalities based on type inference and training on a large corpus of Python libraries and third-party libraries. As such, they may fail to recommend or make poor recommendations when type information is missing or target APIs are project-specific. In this paper, we propose a novel approach, PyART, to recommending APIs for Python programs in real-time. It features a light-weight analysis to derive so-called optimistic data-flow, which is neither sound nor complete, but simulates the local data-flow information humans can derive. It extracts three kinds of features: data-flow, token similarity, and token co-occurrence, in the context of the program point where a recommendation is solicited. A predictive model is trained on these features using the Random Forest algorithm. Evaluation on 8 popular Python projects demonstrates that PyART can provide effective API recommendations. When historic commits can be leveraged, which is the target scenario of a state-of-the-art tool ARIREC, our average top-1 accuracy is over 50% and average top-10 accuracy over 70%, outperforming APIREC and Intellicode (i.e., the recommendation component in Visual Studio) by 28.48%-39.05% for top-1 accuracy and 24.41%-30.49% for top-10 accuracy. In other applications such as when historic comments are not available and cross-project recommendation, PyART also shows better overall performance. The time to make a recommendation is less than a second on average, satisfying the real-time requirement. |
Year | DOI | Venue |
---|---|---|
2021 | 10.1109/ICSE43902.2021.00145 | International Conference on Software Engineering |
Keywords | DocType | ISSN |
API recommendation, context analysis, data flow analysis, real-time recommendation, Python | Conference | 0270-5257 |
Citations | PageRank | References |
0 | 0.34 | 0 |
Authors | ||
6 |
Name | Order | Citations | PageRank |
---|---|---|---|
Xincheng He | 1 | 0 | 1.69 |
Lei Xu | 2 | 124 | 18.82 |
Xiangyu Zhang | 3 | 2857 | 151.00 |
Rui Hao | 4 | 6 | 2.47 |
Yang Feng | 5 | 4 | 2.10 |
Xu, Baowen | 6 | 2476 | 165.27 |