Developers build on Application Programming Interfaces (APIs) to reuse existing functionalities of code libraries. Despite the benefits of reusing established libraries (e.g., time savings, high quality), developers may diverge from the API's intended usage; potentially causing bugs or, more specifically, API misuses. Recent research focuses on developing techniques to automatically detect API misuses, but many suffer from a high false-positive rate. In this article, we improve on this situation by proposing ChaRLI (Change RuLe Inference), a technique for automatically inferring change rules from developers' fixes of API misuses based on API Usage Graphs (AUGs). By subsequently applying graph-distance algorithms, we use change rules to discriminate API misuses from correct usages. This allows developers to reuse others' fixes of an API misuse at other code locations in the same or another project. We evaluated the ability of change rules to detect API misuses based on three datasets and found that the best mean relative precision (i.e., for testable usages) ranges from 77.1 % to 96.1 % while the mean recall ranges from 0.007 % to 17.7 % for individual change rules. These results underpin that ChaRLI and our misuse detection are helpful complements to existing API misuse detectors.
翻译:开发者利用应用程序设计接口(API)来重新利用代码图书馆的现有功能。尽管重新使用已有图书馆的好处(例如节省时间、高质量),开发者可能不同于API的预定用途;可能造成错误或更具体地说滥用API。最近的研究侧重于开发自动检测滥用API的技术,但许多开发者受到高假阳率的影响。在文章中,我们通过提出ChaRLI(改变 RuLe Inference)来改进这一状况,这是一种根据API使用图示图(AUGs)从开发者对滥用API的修改规则自动推断规则的方法。通过随后应用图形-距离算法,我们使用修改规则来区分滥用API的正确用途。这允许开发者在同一或另一个项目的其他代码地点重新利用他人对滥用API的纠正方法,但我们根据三个数据集评估了检测滥用API规则的能力,发现最佳的相对精确度(即测试用途)从77.1%至96.1%不等。