该研究于2018年10月被《IEEE Transactions on Software Engineering》(TSE)录用。作者包括: - 李晓晨:大连理工大学博士生 - 江贺:大连理工大学教授 - Yasutaka Kamei:日本九州大学副教授 - 陈信:杭州电子科技大学讲师
学习应用程序接口(API)是软件开发者掌握软件开发技能的关键步骤。为了帮助开发者更高效地检索API信息,软件工程领域开发了多种工具,比如通过自然语言搜索API序列或根据技术问题搜索相关的API文档。然而,由于单词和API之间存在固有的语义差异,这些工具的效果往往不尽如人意。以下两个例子可以更好地理解这种语义差异:
示例1 在API序列搜索任务中,开发者使用查询词“generate md5 hash code”来搜索API序列。虽然相关的API可能包括“MessageDigest#getInstance”或“MessageDigest#digest”,但这些API并未直接包含“md5”或“hash code”等关键词,导致基于文本匹配的检索模型容易出错。
示例2 在API文档链接任务中,开发者在Stack Overflow等问答平台上询问“如何在Java中执行日期的合理性检查?”回答者建议使用“Calendar#setLenient”来解决问题。然而,基于文本匹配很难发现“sanity check (on) a date”与“Calendar#setLenient”之间的关联,甚至提问者也认为“使用lenient日历不太直观”。
为了克服这种语义差异,关键在于准确评估单词和API之间的语义相关性,例如衡量“sanity check (on) a date”与“Calendar#setLenient”之间的相似性。为此,我们提出了Word2API方法。
学术报告PPT如下: [附上PPT链接]
[附上图片链接] 欢迎关注CodeWisdom,该平台由复旦大学软件工程实验室运营,提供智能化软件开发平台及线上沙龙相关资讯。关注可了解智能化软件开发的最新动态。