iJTyper: An Iterative Type Inference Framework for Java by Integrating Constraint- and Statistically-based Methods
CoRR(2024)
摘要
Inferring the types of API elements in incomplete code snippets (e.g., those
on Q A forums) is a prepositive step required to work with the code snippets.
Existing type inference methods can be mainly categorized as constraint-based
or statistically-based. The former imposes higher requirements on code syntax
and often suffers from low recall due to the syntactic limitation of code
snippets. The latter relies on the statistical regularities learned from a
training corpus and does not take full advantage of the type constraints in
code snippets, which may lead to low precision. In this paper, we propose an
iterative type inference framework for Java, called iJTyper, by integrating the
strengths of both constraint- and statistically-based methods. For a code
snippet, iJTyper first applies a constraint-based method and augments the code
context with the inferred types of API elements. iJTyper then applies a
statistically-based method to the augmented code snippet. The predicted
candidate types of API elements are further used to improve the
constraint-based method by reducing its pre-built knowledge base. iJTyper
iteratively executes both methods and performs code context augmentation and
knowledge base reduction until a termination condition is satisfied. Finally,
the final inference results are obtained by combining the results of both
methods. We evaluated iJTyper on two open-source datasets. Results show that 1)
iJTyper achieves high average precision/recall of 97.31
datasets; 2) iJTyper significantly improves the recall of two state-of-the-art
baselines, SnR and MLMTyper, by at least 7.31
iJTyper improves the average precision/recall of the popular language model,
ChatGPT, by 3.25
更多查看译文
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要