首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 203 毫秒
1.
汪昕  陈驰  赵逸凡  彭鑫  赵文耘 《软件学报》2019,30(5):1342-1358
开发人员经常需要使用各种应用程序编程接口(application programming interface,简称API)来复用已有的软件框架、类库等.由于API自身的复杂性、文档资料的缺失等原因,开发人员经常会误用API,从而导致代码缺陷.为了自动检测API误用缺陷,需要获得API使用规约,并根据规约对API使用代码进行检测.然而,可用于自动检测的API规约难以获得,而人工编写并维护的代价又很高.针对以上问题,将深度学习中的循环神经网络模型应用于API使用规约的学习及API误用缺陷的检测.在大量的开源Java代码基础上,通过静态分析构造API使用规约训练样本,同时利用这些训练样本搭建循环神经网络学习API使用规约.在此基础上,针对API使用代码进行基于上下文的语句预测,并通过预测结果与实际代码的比较发现潜在的API误用缺陷.对所提出的方法进行实现并针对Java加密相关的API及其使用代码进行了实验评估,结果表明,该方法能够在一定程度上实现API误用缺陷的自动发现.  相似文献   

2.
唐泽  李传艺  葛季栋  骆斌 《软件学报》2022,33(5):1736-1757
近年来,随着软件技术在各行各业、不同领域的应用不断扩展与深入,同时伴随着软件架构、服务计算等技术的不断发展,软件行业涌现出了功能丰富且规模庞大的第三方API或库,软件开发者在实现软件功能的时候也越来越依赖这些API.但学习这些API的使用是非常困难且耗时的,主要有两方面的原因:1)相关文档的缺失和错误; 2)相关API用法的示例代码较少.因此,研究自动的API补全方法以帮助开发人员在开发过程中正确且快速的使用API,具有很大的应用价值.然而,现有API自动补全方案多数将待补全代码段看作纯文本,忽略了API所属对象类型对预测API的影响.为此,探究了对象类型对补全API的作用,并且在对象状态图的启发下,设计了一种使用API所属对象的类型作为特征的补全方法.具体而言,首先从API调用序列中先抽取同一对象类型的子序列,利用深度学习模型编码出每个对象的状态,再利用对象状态生成整个方法块的状态表示进行补全.为了验证提出的补全方法,在6个流行Java项目上进行了验证.实验结果证明,提出的考虑对象类型的API补全方法在预测准确率上明显高于基线模型.  相似文献   

3.
王树怡  董东 《计算机科学》2017,44(Z6):486-490
在软件开发过程中,开发人员经常需要遵循特定的API用法模式,而这些用法模式几乎没有相关文档作为参考。为了挖掘API用法模式,提出基于聚类和频繁闭合偏序序列的API用法模式挖掘途径。通过抽象语法树对源代码进行解析,对提取API方法调用序列进行层次聚类,最后使用频繁闭合偏序挖掘算法DFP进行API用法模式的挖掘。实验结果表明,在相同的数据集上,与SPADE算法和BIDE算法相比,所得候选API用法模式集更加精简。  相似文献   

4.
于斌  陆旭  田聪  段振华  张南 《软件学报》2022,33(8):2755-2768
作为轻量级的高可靠嵌入式数据库, SQLite3已被广泛应用于航空航天和操作系统等多个安全攸关领域, 其提供了丰富灵活API函数以支持用户快速实现项目构建.然而, 不正确的API函数调用序列会导致严重后果, 包括运行错误、内存泄露和程序崩溃等.为了高效准确地监控SQLite3数据库API函数的正确调用情况, 本文提出了基于多核系统的并行运行时验证方法.该方法首先分析API函数文档, 自动挖掘相关API调用序列规约描述, 辅助人工将其形式化表达为具有完全正则表达能力的命题投影时序逻辑公式; 然后在程序运行时, 采用多任务调度策略, 将程序执行产生的状态序列分割并对不同片段并行验证.实验结果表明, 该方法能够发现调用SQLite3数据库API函数的30个被验证C程序中, 违背API函数调用序列规约的达16个.另外, 与传统串行运行时验证方法的对比实验表明, 本文提出的并行运行时验证方法能够有效提高多核系统的验证效率.  相似文献   

5.
在软件开发过程中,复用应用程序编程接口(Application Programming Interface,API)可以提高软件开发效率,但是使用不熟悉的API是一项耗时且困难的挑战。已有的研究往往将API作为用户输入的查询,通过在语料库中搜索该API的使用模式来进行推荐,但这并不符合开发人员的查询习惯。文中提出了一种基于自然语言语义相似度的API使用模式推荐方法(Semantic Similazing Based API Recommendation,SSAPIR)。该方法使用层次聚类算法来提取API使用模式,然后通过计算查询信息和API使用模式来描述信息之间的语意相似度,向开发人员推荐相关度高且被广泛使用的API使用模式。为了验证SSAPIR的有效性,文中从GitHub的高质量Java项目中提取9个流行的第三方API库的API使用模式以及API使用模式的描述信息,并根据这9个流行的第三方API库的自然语言查询进行API使用模式推荐。通过计算推荐结果的Hit@K准确率来验证SSAPIR的有效性,实验结果表明,层次聚类能有效提高推荐准确率,且SSAPIR在Hit@10平均准确率上达到了85.02%,优于现有研究工作,能够很好地完成API使用模式推荐任务,为开发人员输入的自然语言查询提供精准的API使用模式。  相似文献   

6.
吴姝  周安民  左政 《计算机科学》2018,45(4):163-168
苹果公司对App Store上的每一款应用程序都进行了审核,包括是否存在访问用户敏感信息的私有API调用,但是仍有恶意应用通过了该项审查。针对iOS应用程序中私有API的调用问题,提出了一种动、静态相结合的检测技术PDiOS。通过反向分片和常量传播的静态分析方式来处理大部分API调用,基于强制执行的动态迭代分析来处理剩余API。静态分析包含了对二进制文件的全面分析以及对资源文件中隐式调用的处理,动态分析主要依赖于二进制动态分析框架进行迭代分析。最后通过对比公开头文件中的API来确定私有API的调用。在对官方商店的1012款应用程序的检测中,确认有82款应用程序存在共128个不同的私有API调用。在对企业证书签名的32款应用程序的检测中,确认有26款使用了私有API调用。  相似文献   

7.
应用程序编程接口(Application Programming Interface,API)在软件开发以及代码复用中有着重要作用。然而,API代码和文档存在的不一致情况会误导API的使用者并降低软件开发效率及其稳定性等。针对Java API异常代码及其文档描述不一致的情况,提出了一种基于静态分析代码语法树及方法之间的调用关系的自动检测方法,为验证方法的有效性,利用JDK中的API源代码包及其相应文档作为测试对象根据实验结果。本方法的检测结果能达到71.5%的准确率以及85.9%的召回率,能够较为准确地识别API文档对程序异常描述不一致问题,对API文档的编写和维护具有指导性意义。  相似文献   

8.
淘宝开放平台是淘宝面向第三方应用开发者,提供API接口和相关开发环境的开放平台.介绍了淘宝开放平台的API调用流程,着重解析了调用API时签名算法的实现,并阐述了在使用ASP编写淘宝客网站的开发过程.  相似文献   

9.
远程过程调用作为网络分布式编程的重要应用,可以与新出现的广域分布式系统网格相结合,更好地满足网格系统中应用编程的要求。分析了远程过程调用的关键点,并对Ninf-G系统中支持远程过程调用的应用编程接口(GridRPC API)进行了分析,举例说明了如何使用GridRPC API进行编程,最后提出了一些改进。  相似文献   

10.
简单描述了在PowerBuilder中调用Windows API函数的重要性。重点分析了PowerBuilder如何调用API函数,以及在调用过程中需要注意的事项。  相似文献   

11.
软件库调用规约挖掘   总被引:1,自引:1,他引:0  
钟浩  张路  梅宏 《软件学报》2011,22(3):408-416
软件库调用规约是一种描述软件库提供函数正确调用顺序的规约.客户代码应按此规约描述的内容调用函数,否则可能引入缺陷,从而降低软件的可信性.由于能够描述可信软件应该满足的性质,软件库调用规约在可信软件、模型检测等研究中扮演特殊的角色.但是,受制于编写规约的巨大代价,软件库通常并不提供已编写好的调用规约.为此,研究者提出了各种自动挖掘此种规约的方法.阐述了其中代表性的方法及其最新的研究进展,并在此基础上探讨了将来的研究方向.  相似文献   

12.
Application programming interface (API) libraries are extensively used by developers. To correctly program with APIs and avoid bugs, developers shall pay attention to API directives, which illustrate the constraints of APIs. Unfortunately, API directives usually have diverse morphologies, making it time-consuming and error-prone for developers to discover all the relevant API directives. In this paper, we propose an approach leveraging text classification to discover API directives from API specifications. Specifically, given a set of training sentences in API specifications, our approach first characterizes each sentence by three groups of features. Then, to deal with the unequal distribution between API directives and non-directives, our approach employs an under-sampling strategy to split the imbalanced training set into several subsets and trains several classifiers. Given a new sentence in an API specification, our approach synthesizes the trained classifiers to predict whether it is an API directive. We have evaluated our approach over a publicly available annotated API directive corpus. The experimental results reveal that our approach achieves an F-measure value of up to 82.08%. In addition, our approach statistically outperforms the state-of-the-art approach by up to 29.67%in terms of F-measure.  相似文献   

13.
The importance of heterogeneous multicore programming is increasing, and Open Computing Language (OpenCL) is an open industrial standard for parallel programming that provides a uniform programming model for programmers to write efficient, portable code for heterogeneous computing devices. However, OpenCL is not supported in the system virtualization environments that are often used to improve resource utilization. In this paper, we propose an OpenCL virtualization framework based on Kernel‐based Virtual Machine with API remoting to enable multiplexing of multiple guest virtual machines (guest VMs) over the underlying OpenCL resources. The framework comprises three major components: (i) an OpenCL library implementation in guest VMs for packing/unpacking OpenCL requests/responses; (ii) a virtual device, called virtio‐CL, that is responsible for the communication between guest VMs and the hypervisor (also called the VM monitor); and (iii) a thread, called CL thread, that is used for the OpenCL API invocation. Although the overhead of the proposed virtualization framework is directly affected by the amount of data to be transferred between the OpenCL host and devices because of the primitive nature of API remoting, experiments demonstrated that our virtualization framework has a small virtualization overhead (mean of 6.8%) for six common device‐intensive OpenCL programs and performs well when the number of guest VMs involved in the system increases. These results indirectly infer that the framework allows for effective resource utilization of OpenCL devices.Copyright © 2012 John Wiley & Sons, Ltd.  相似文献   

14.
王远 《微计算机信息》2006,22(30):224-226
API函数拦截是指通过特定的方法中断API函数的调用,转而执行用户的功能代码的一种行为。该技术由代码加载和用户代码组成。文中首先详细讨论了Windows系统中三种代码加载技术:Hook(钩子)、使用动态链接库的远线程插入和使用代码段的远线程插入。同时对这三种技术的优缺点进行了分析,给出了它们各自的应用场合。最后给出了一种函数拦截系统的设计和实现。  相似文献   

15.
An Application Programming Interface (API) provides a programmatic interface to a software component that is often offered publicly and may be used by programmers who are not the API’s original designers. APIs play a key role in software reuse. By reusing high quality components and services, developers can increase their productivity and avoid costly defects. The usability of an API is a qualitative characteristic that evaluates how easy it is to use an API. Recent years have seen a considerable increase in research efforts aiming at evaluating the usability of APIs. An API usability evaluation can identify problem areas and provide recommendations for improving the API. In this systematic mapping study, we focus on 47 primary studies to identify the aim and the method of the API usability studies. We investigate which API usability factors are evaluated, at which phases of API development is the usability of API evaluated and what are the current limitations and open issues in API usability evaluation. We believe that the results of this literature review would be useful for both researchers and industry practitioners interested in investigating the usability of API and new API usability evaluation methods.  相似文献   

16.
HOOK API时代码注入方法和函数重定向技术研究   总被引:3,自引:0,他引:3  
HOOK API是一种高级编程技术,在介绍Windows HOOK技术的基础上,阐述了HOOK API技术的概念,分析了HOOK API技术的实现原理,给出了三种实现HOOK API技术时的代码注入方法,即使用钩子注入DLL、使用注册表注入DLL及使用远程线程注入DLL.探讨两种实现HOOK API技术时的函数重定向技术,即利用PE文件中的导入表实现函数的重定向及通过嵌入汇编代码实现函数的重定向.  相似文献   

17.
密码API因提供通用的密码操作接口而被广泛使用;设计的复杂性,导致了安全漏洞的产生,分析和研究了目前主流的分析密码API安全的形式化方法。  相似文献   

18.
Web服务的两种调用模型的比较及开发   总被引:5,自引:0,他引:5  
自Web服务进入技术领域以来,大多数Web服务都是围绕着远程过程调用而构建的,而WSDL规范允许另外一种Web服务体系结构:文档样式。在该体系结构中,整个文档在服务客户端和服务器之间进行交换。文中就这两种调用模型进行了分析与比较,并提出一种开发文档样式的Web服务的解决方案。  相似文献   

19.
JDOM API在数据库表单-XML文档变换中的应用研究   总被引:2,自引:0,他引:2  
围绕着数据库表单和XML文档之间数据变换,探讨分析了Sun公司的JDBC API,JDOM API和DataDirect的第4类JDBC驱动API。在综合利用这些应用程序接口的基础上,创建了一个实现该类变换的一般性Java类,并给出了一个应用实例。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号