首页 > 最新文献

2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)最新文献

英文 中文
Elixir: Effective object-oriented program repair 灵丹妙药:有效的面向对象程序修复
Ripon K. Saha, Yingjun Lyu, H. Yoshida, M. Prasad
This work is motivated by the pervasive use of method invocations in object-oriented (OO) programs, and indeed their prevalence in patches of OO-program bugs. We propose a generate-and-validate repair technique, called ELIXIR designed to be able to generate such patches. ELIXIR aggressively uses method calls, on par with local variables, fields, or constants, to construct more expressive repair-expressions, that go into synthesizing patches. The ensuing enlargement of the repair space, on account of the wider use of method calls, is effectively tackled by using a machine-learnt model to rank concrete repairs. The machine-learnt model relies on four features derived from the program context, i.e., the code surrounding the potential repair location, and the bug report. We implement ELIXIR and evaluate it on two datasets, the popular Defects4J dataset and a new dataset Bugs.jar created by us, and against 2 baseline versions of our technique, and 5 other techniques representing the state of the art in program repair. Our evaluation shows that ELIXIR is able to increase the number of correctly repaired bugs in Defects4J by 85% (from 14 to 26) and by 57% in Bugs.jar (from 14 to 22), while also significantly out-performing other state-of-the-art repair techniques including ACS, HD-Repair, NOPOL, PAR, and jGenProg.
这项工作的动机是面向对象(OO)程序中方法调用的普遍使用,以及它们在面向对象程序错误补丁中的普遍存在。我们提出了一种生成并验证修复技术,称为ELIXIR,旨在能够生成此类补丁。ELIXIR积极地使用方法调用(与局部变量、字段或常量一样)来构建更具表现力的修复表达式,用于合成补丁。由于更广泛地使用方法调用,随后的修复空间扩大,通过使用机器学习模型对具体修复进行排名,可以有效地解决这一问题。机器学习模型依赖于来自程序上下文的四个特征,即围绕潜在修复位置的代码和错误报告。我们实现ELIXIR并在两个数据集上对其进行评估,这两个数据集是流行的Defects4J数据集和我们创建的新数据集Bugs.jar,并对我们技术的2个基线版本和5个代表程序修复技术最新状态的其他技术进行了评估。我们的评估表明,ELIXIR能够将缺陷4j中正确修复的错误数量增加85%(从14个增加到26个),将bug .jar中的错误数量增加57%(从14个增加到22个),同时还显著优于其他最先进的修复技术,包括ACS、HD-Repair、NOPOL、PAR和jGenProg。
{"title":"Elixir: Effective object-oriented program repair","authors":"Ripon K. Saha, Yingjun Lyu, H. Yoshida, M. Prasad","doi":"10.1109/ASE.2017.8115675","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115675","url":null,"abstract":"This work is motivated by the pervasive use of method invocations in object-oriented (OO) programs, and indeed their prevalence in patches of OO-program bugs. We propose a generate-and-validate repair technique, called ELIXIR designed to be able to generate such patches. ELIXIR aggressively uses method calls, on par with local variables, fields, or constants, to construct more expressive repair-expressions, that go into synthesizing patches. The ensuing enlargement of the repair space, on account of the wider use of method calls, is effectively tackled by using a machine-learnt model to rank concrete repairs. The machine-learnt model relies on four features derived from the program context, i.e., the code surrounding the potential repair location, and the bug report. We implement ELIXIR and evaluate it on two datasets, the popular Defects4J dataset and a new dataset Bugs.jar created by us, and against 2 baseline versions of our technique, and 5 other techniques representing the state of the art in program repair. Our evaluation shows that ELIXIR is able to increase the number of correctly repaired bugs in Defects4J by 85% (from 14 to 26) and by 57% in Bugs.jar (from 14 to 22), while also significantly out-performing other state-of-the-art repair techniques including ACS, HD-Repair, NOPOL, PAR, and jGenProg.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"96 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133933757","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 180
Automatically assessing code understandability: How far are we? 自动评估代码的可理解性:我们走了多远?
Simone Scalabrino, G. Bavota, Christopher Vendome, M. Vásquez, D. Poshyvanyk, R. Oliveto
Program understanding plays a pivotal role in software maintenance and evolution: a deep understanding of code is the stepping stone for most software-related activities, such as bug fixing or testing. Being able to measure the understandability of a piece of code might help in estimating the effort required for a maintenance activity, in comparing the quality of alternative implementations, or even in predicting bugs. Unfortunately, there are no existing metrics specifically designed to assess the understandability of a given code snippet. In this paper, we perform a first step in this direction, by studying the extent to which several types of metrics computed on code, documentation, and developers correlate with code understandability. To perform such an investigation we ran a study with 46 participants who were asked to understand eight code snippets each. We collected a total of 324 evaluations aiming at assessing the perceived understandability, the actual level of understanding, and the time needed to understand a code snippet. Our results demonstrate that none of the (existing and new) metrics we considered is able to capture code understandability, not even the ones assumed to assess quality attributes strongly related with it, such as code readability and complexity.
程序理解在软件维护和发展中扮演着关键的角色:对代码的深刻理解是大多数软件相关活动(如bug修复或测试)的垫脚石。能够度量一段代码的可理解性可能有助于估计维护活动所需的工作量,比较可选实现的质量,甚至预测bug。不幸的是,目前还没有专门设计的指标来评估给定代码段的可理解性。在本文中,我们向这个方向迈出了第一步,通过研究在代码、文档和开发人员上计算的几种度量类型与代码可理解性的关联程度。为了进行这样的调查,我们对46名参与者进行了一项研究,要求他们每人理解8个代码片段。我们总共收集了324个评估,旨在评估感知的可理解性、实际的理解水平和理解代码段所需的时间。我们的结果表明,我们所考虑的(现有的和新的)度量标准都不能捕获代码的可理解性,甚至不能评估与之密切相关的质量属性,比如代码的可读性和复杂性。
{"title":"Automatically assessing code understandability: How far are we?","authors":"Simone Scalabrino, G. Bavota, Christopher Vendome, M. Vásquez, D. Poshyvanyk, R. Oliveto","doi":"10.1109/ASE.2017.8115654","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115654","url":null,"abstract":"Program understanding plays a pivotal role in software maintenance and evolution: a deep understanding of code is the stepping stone for most software-related activities, such as bug fixing or testing. Being able to measure the understandability of a piece of code might help in estimating the effort required for a maintenance activity, in comparing the quality of alternative implementations, or even in predicting bugs. Unfortunately, there are no existing metrics specifically designed to assess the understandability of a given code snippet. In this paper, we perform a first step in this direction, by studying the extent to which several types of metrics computed on code, documentation, and developers correlate with code understandability. To perform such an investigation we ran a study with 46 participants who were asked to understand eight code snippets each. We collected a total of 324 evaluations aiming at assessing the perceived understandability, the actual level of understanding, and the time needed to understand a code snippet. Our results demonstrate that none of the (existing and new) metrics we considered is able to capture code understandability, not even the ones assumed to assess quality attributes strongly related with it, such as code readability and complexity.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132883731","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 75
Automatically assessing crashes from heap overflows 自动评估堆溢出造成的崩溃
Liang He, Yan Cai, Hong Hu, Purui Su, Zhenkai Liang, Yi Yang, Huafeng Huang, Jia Yan, Xiangkun Jia, D. Feng
Heap overflow is one of the most widely exploited vulnerabilities, with a large number of heap overflow instances reported every year. It is important to decide whether a crash caused by heap overflow can be turned into an exploit. Efficient and effective assessment of exploitability of crashes facilitates to identify severe vulnerabilities and thus prioritize resources. In this paper, we propose the first metrics to assess heap overflow crashes based on both the attack aspect and the feasibility aspect. We further present HCSIFTER, a novel solution to automatically assess the exploitability of heap overflow instances under our metrics. Given a heap-based crash, HCSIFTER accurately detects heap overflows through dynamic execution without any source code or debugging information. Then it uses several novel methods to extract program execution information needed to quantify the severity of the heap overflow using our metrics. We have implemented a prototype HCSIFTER and applied it to assess nine programs with heap overflow vulnerabilities. HCSIFTER successfully reports that five heap overflow vulnerabilities are highly exploitable and two overflow vulnerabilities are unlikely exploitable. It also gave quantitatively assessments for other two programs. On average, it only takes about two minutes to assess one heap overflow crash. The evaluation result demonstrates both effectiveness and efficiency of HC Sifter.
堆溢出是最广泛利用的漏洞之一,每年都会报告大量的堆溢出实例。确定由堆溢出引起的崩溃是否可以转化为漏洞利用是很重要的。对崩溃的可利用性进行高效和有效的评估有助于识别严重的漏洞,从而确定资源的优先级。在本文中,我们提出了基于攻击方面和可行性方面评估堆溢出崩溃的第一个指标。我们进一步提出了HCSIFTER,这是一种新的解决方案,可以根据我们的指标自动评估堆溢出实例的可利用性。对于基于堆的崩溃,HCSIFTER通过动态执行准确地检测堆溢出,而不需要任何源代码或调试信息。然后,它使用几个新颖的方法来提取程序执行信息,这些信息需要使用我们的指标来量化堆溢出的严重程度。我们实现了一个原型HCSIFTER,并应用它评估了9个存在堆溢出漏洞的程序。HCSIFTER成功地报告了五个堆溢出漏洞是高度可利用的,两个溢出漏洞不太可能被利用。对另外两个项目也进行了定量评价。平均而言,评估一次堆溢出崩溃只需要大约两分钟。评价结果证明了HC筛的有效性和高效性。
{"title":"Automatically assessing crashes from heap overflows","authors":"Liang He, Yan Cai, Hong Hu, Purui Su, Zhenkai Liang, Yi Yang, Huafeng Huang, Jia Yan, Xiangkun Jia, D. Feng","doi":"10.1109/ASE.2017.8115640","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115640","url":null,"abstract":"Heap overflow is one of the most widely exploited vulnerabilities, with a large number of heap overflow instances reported every year. It is important to decide whether a crash caused by heap overflow can be turned into an exploit. Efficient and effective assessment of exploitability of crashes facilitates to identify severe vulnerabilities and thus prioritize resources. In this paper, we propose the first metrics to assess heap overflow crashes based on both the attack aspect and the feasibility aspect. We further present HCSIFTER, a novel solution to automatically assess the exploitability of heap overflow instances under our metrics. Given a heap-based crash, HCSIFTER accurately detects heap overflows through dynamic execution without any source code or debugging information. Then it uses several novel methods to extract program execution information needed to quantify the severity of the heap overflow using our metrics. We have implemented a prototype HCSIFTER and applied it to assess nine programs with heap overflow vulnerabilities. HCSIFTER successfully reports that five heap overflow vulnerabilities are highly exploitable and two overflow vulnerabilities are unlikely exploitable. It also gave quantitatively assessments for other two programs. On average, it only takes about two minutes to assess one heap overflow crash. The evaluation result demonstrates both effectiveness and efficiency of HC Sifter.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131450032","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Towards a software vulnerability prediction model using traceable code patterns and software metrics 基于可跟踪代码模式和软件度量的软件漏洞预测模型
Kazi Zakia Sultana
Software security is an important aspect of ensuring software quality. The goal of this study is to help developers evaluate software security using traceable patterns and software metrics during development. The concept of traceable patterns is similar to design patterns but they can be automatically recognized and extracted from source code. If these patterns can better predict vulnerable code compared to traditional software metrics, they can be used in developing a vulnerability prediction model to classify code as vulnerable or not. By analyzing and comparing the performance of traceable patterns with metrics, we propose a vulnerability prediction model. This study explores the performance of some code patterns in vulnerability prediction and compares them with traditional software metrics. We use the findings to build an effective vulnerability prediction model. We evaluate security vulnerabilities reported for Apache Tomcat, Apache CXF and three stand-alone Java web applications. We use machine learning and statistical techniques for predicting vulnerabilities using traceable patterns and metrics as features. We found that patterns have a lower false negative rate and higher recall in detecting vulnerable code than the traditional software metrics.
软件安全是保证软件质量的一个重要方面。本研究的目标是帮助开发人员在开发过程中使用可跟踪的模式和软件度量来评估软件安全性。可跟踪模式的概念类似于设计模式,但它们可以被自动识别并从源代码中提取出来。如果与传统的软件度量相比,这些模式可以更好地预测易受攻击的代码,那么它们就可以用于开发一个漏洞预测模型,对代码进行易受攻击或不受攻击的分类。通过分析和比较可跟踪模式与度量的性能,提出了一种漏洞预测模型。本研究探讨了一些代码模式在漏洞预测中的性能,并将其与传统的软件度量进行了比较。利用这些发现建立了一个有效的脆弱性预测模型。我们评估了Apache Tomcat、Apache CXF和三个独立Java web应用程序报告的安全漏洞。我们使用机器学习和统计技术来预测漏洞,使用可跟踪的模式和指标作为特征。我们发现,与传统的软件度量相比,模式在检测脆弱代码方面具有更低的假阴性率和更高的召回率。
{"title":"Towards a software vulnerability prediction model using traceable code patterns and software metrics","authors":"Kazi Zakia Sultana","doi":"10.1109/ASE.2017.8115724","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115724","url":null,"abstract":"Software security is an important aspect of ensuring software quality. The goal of this study is to help developers evaluate software security using traceable patterns and software metrics during development. The concept of traceable patterns is similar to design patterns but they can be automatically recognized and extracted from source code. If these patterns can better predict vulnerable code compared to traditional software metrics, they can be used in developing a vulnerability prediction model to classify code as vulnerable or not. By analyzing and comparing the performance of traceable patterns with metrics, we propose a vulnerability prediction model. This study explores the performance of some code patterns in vulnerability prediction and compares them with traditional software metrics. We use the findings to build an effective vulnerability prediction model. We evaluate security vulnerabilities reported for Apache Tomcat, Apache CXF and three stand-alone Java web applications. We use machine learning and statistical techniques for predicting vulnerabilities using traceable patterns and metrics as features. We found that patterns have a lower false negative rate and higher recall in detecting vulnerable code than the traditional software metrics.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"39 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124449191","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 16
Software performance self-adaptation through efficient model predictive control 通过有效的模型预测控制实现软件性能自适应
Emilio Incerto, M. Tribastone, Catia Trubiani
A key challenge in software systems that are exposed to runtime variabilities, such as workload fluctuations and service degradation, is to continuously meet performance requirements. In this paper we present an approach that allows performance self-adaptation using a system model based on queuing networks (QNs), a well-assessed formalism for software performance engineering. Software engineers can select the adaptation knobs of a QN (routing probabilities, service rates, and concurrency level) and we automatically derive a Model Predictive Control (MPC) formulation suitable to continuously configure the selected knobs and track the desired performance requirements. Previous MPC approaches have two main limitations: i) high computational cost of the optimization, due to nonlinearity of the models; ii) focus on long-run performance metrics only, due to the lack of tractable representations of the QN's time-course evolution. As a consequence, these limitations allow adaptations with coarse time granularities, neglecting the system's transient behavior. Our MPC adaptation strategy is efficient since it is based on mixed integer programming, which uses a compact representation of a QN with ordinary differential equations. An extensive evaluation on an implementation of a load balancer demonstrates the effectiveness of the adaptation and compares it with traditional methods based on probabilistic model checking.
在暴露于运行时可变性(如工作负载波动和服务降级)的软件系统中,一个关键挑战是持续满足性能需求。在本文中,我们提出了一种允许性能自适应的方法,该方法使用基于排队网络(QNs)的系统模型,这是软件性能工程的一种良好评估的形式化方法。软件工程师可以选择QN的自适应旋钮(路由概率、服务速率和并发级别),我们自动推导出适合于连续配置所选旋钮并跟踪所需性能要求的模型预测控制(MPC)公式。以前的MPC方法有两个主要的局限性:1)由于模型的非线性,优化的计算成本高;ii)仅关注长期性能指标,因为缺乏QN的时间过程演变的可处理表示。因此,这些限制允许适应粗时间粒度,而忽略了系统的瞬态行为。我们的MPC自适应策略是有效的,因为它是基于混合整数规划的,它使用一个具有常微分方程的QN的紧凑表示。对负载均衡器的实现进行了广泛的评估,证明了自适应的有效性,并将其与基于概率模型检查的传统方法进行了比较。
{"title":"Software performance self-adaptation through efficient model predictive control","authors":"Emilio Incerto, M. Tribastone, Catia Trubiani","doi":"10.1109/ASE.2017.8115660","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115660","url":null,"abstract":"A key challenge in software systems that are exposed to runtime variabilities, such as workload fluctuations and service degradation, is to continuously meet performance requirements. In this paper we present an approach that allows performance self-adaptation using a system model based on queuing networks (QNs), a well-assessed formalism for software performance engineering. Software engineers can select the adaptation knobs of a QN (routing probabilities, service rates, and concurrency level) and we automatically derive a Model Predictive Control (MPC) formulation suitable to continuously configure the selected knobs and track the desired performance requirements. Previous MPC approaches have two main limitations: i) high computational cost of the optimization, due to nonlinearity of the models; ii) focus on long-run performance metrics only, due to the lack of tractable representations of the QN's time-course evolution. As a consequence, these limitations allow adaptations with coarse time granularities, neglecting the system's transient behavior. Our MPC adaptation strategy is efficient since it is based on mixed integer programming, which uses a compact representation of a QN with ordinary differential equations. An extensive evaluation on an implementation of a load balancer demonstrates the effectiveness of the adaptation and compares it with traditional methods based on probabilistic model checking.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114474903","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 31
Mining implicit design templates for actionable code reuse 挖掘隐式设计模板以实现可操作的代码重用
Yun Lin, Guozhu Meng, Yinxing Xue, Zhenchang Xing, Jun Sun, Xin Peng, Yang Liu, Wenyun Zhao, J. Dong
In this paper, we propose an approach to detecting project-specific recurring designs in code base and abstracting them into design templates as reuse opportunities. The mined templates allow programmers to make further customization for generating new code. The generated code involves the code skeleton of recurring design as well as the semi-implemented code bodies annotated with comments to remind programmers of necessary modification. We implemented our approach as an Eclipse plugin called MICoDe. We evaluated our approach with a reuse simulation experiment and a user study involving 16 participants. The results of our simulation experiment on 10 open source Java projects show that, to create a new similar feature with a design template, (1) on average 69% of the elements in the template can be reused and (2) on average 60% code of the new feature can be adopted from the template. Our user study further shows that, compared to the participants adopting the copy-paste-modify strategy, the ones using MICoDe are more effective to understand a big design picture and more efficient to accomplish the code reuse task.
在本文中,我们提出了一种方法来检测代码库中特定于项目的重复设计,并将其抽象为设计模板作为重用机会。挖掘的模板允许程序员进一步定制以生成新代码。生成的代码包括重复设计的代码框架,以及半实现的代码体,这些代码体带有注释,以提醒程序员进行必要的修改。我们将这种方法实现为一个名为MICoDe的Eclipse插件。我们通过重用模拟实验和涉及16名参与者的用户研究来评估我们的方法。我们在10个开源Java项目上的模拟实验结果表明,用设计模板创建一个新的类似特性,(1)模板中平均69%的元素可以被重用,(2)平均60%的新特性代码可以从模板中被采用。我们的用户研究进一步表明,与采用复制-粘贴-修改策略的参与者相比,使用MICoDe的参与者更有效地理解大的设计图片,更有效地完成代码重用任务。
{"title":"Mining implicit design templates for actionable code reuse","authors":"Yun Lin, Guozhu Meng, Yinxing Xue, Zhenchang Xing, Jun Sun, Xin Peng, Yang Liu, Wenyun Zhao, J. Dong","doi":"10.1109/ASE.2017.8115652","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115652","url":null,"abstract":"In this paper, we propose an approach to detecting project-specific recurring designs in code base and abstracting them into design templates as reuse opportunities. The mined templates allow programmers to make further customization for generating new code. The generated code involves the code skeleton of recurring design as well as the semi-implemented code bodies annotated with comments to remind programmers of necessary modification. We implemented our approach as an Eclipse plugin called MICoDe. We evaluated our approach with a reuse simulation experiment and a user study involving 16 participants. The results of our simulation experiment on 10 open source Java projects show that, to create a new similar feature with a design template, (1) on average 69% of the elements in the template can be reused and (2) on average 60% code of the new feature can be adopted from the template. Our user study further shows that, compared to the participants adopting the copy-paste-modify strategy, the ones using MICoDe are more effective to understand a big design picture and more efficient to accomplish the code reuse task.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124294232","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 19
Leveraging syntax-related code for automated program repair 利用与语法相关的代码进行自动程序修复
Qi Xin, S. Reiss
We present our automated program repair technique ssFix which leverages existing code (from a code database) that is syntax-related to the context of a bug to produce patches for its repair. Given a faulty program and a fault-exposing test suite, ssFix does fault localization to identify suspicious statements that are likely to be faulty. For each such statement, ssFix identifies a code chunk (or target chunk) including the statement and its local context. ssFix works on the target chunk to produce patches. To do so, it first performs syntactic code search to find candidate code chunks that are syntax-related, i.e., structurally similar and conceptually related, to the target chunk from a code database (or codebase) consisting of the local faulty program and an external code repository. ssFix assumes the correct fix to be contained in the candidate chunks, and it leverages each candidate chunk to produce patches for the target chunk. To do so, ssFix translates the candidate chunk by unifying the names used in the candidate chunk with those in the target chunk; matches the chunk components (expressions and statements) between the translated candidate chunk and the target chunk; and produces patches for the target chunk based on the syntactic differences that exist between the matched components and in the unmatched components. ssFix finally validates the patched programs generated against the test suite and reports the first one that passes the test suite. We evaluated ssFix on 357 bugs in the Defects4J bug dataset. Our results show that ssFix successfully repaired 20 bugs with valid patches generated and that it outperformed five other repair techniques for Java.
我们介绍了我们的自动程序修复技术ssFix,它利用与错误上下文语法相关的现有代码(来自代码数据库)来生成修复补丁。给定一个有错误的程序和一个暴露错误的测试套件,ssFix会进行错误定位,以识别可能有错误的可疑语句。对于每个这样的语句,ssFix标识一个代码块(或目标块),包括语句及其本地上下文。ssFix在目标块上工作以生成补丁。为此,它首先执行语法代码搜索,从由本地错误程序和外部代码存储库组成的代码数据库(或代码库)中找到与语法相关的候选代码块,即与目标块结构相似且概念相关的候选代码块。ssFix假定候选块中包含正确的修复,并利用每个候选块为目标块生成补丁。为此,ssFix通过统一候选数据块中使用的名称和目标数据块中的名称来翻译候选数据块;在翻译后的候选数据块和目标数据块之间匹配数据块组件(表达式和语句);并根据匹配组件之间和不匹配组件中存在的语法差异为目标块生成补丁。ssFix最后根据测试套件验证生成的补丁程序,并报告通过测试套件的第一个补丁程序。我们对缺陷4j错误数据集中的357个错误评估了ssFix。我们的结果表明,ssFix成功地修复了20个错误,并生成了有效的补丁,并且它的性能优于其他五种Java修复技术。
{"title":"Leveraging syntax-related code for automated program repair","authors":"Qi Xin, S. Reiss","doi":"10.1109/ASE.2017.8115676","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115676","url":null,"abstract":"We present our automated program repair technique ssFix which leverages existing code (from a code database) that is syntax-related to the context of a bug to produce patches for its repair. Given a faulty program and a fault-exposing test suite, ssFix does fault localization to identify suspicious statements that are likely to be faulty. For each such statement, ssFix identifies a code chunk (or target chunk) including the statement and its local context. ssFix works on the target chunk to produce patches. To do so, it first performs syntactic code search to find candidate code chunks that are syntax-related, i.e., structurally similar and conceptually related, to the target chunk from a code database (or codebase) consisting of the local faulty program and an external code repository. ssFix assumes the correct fix to be contained in the candidate chunks, and it leverages each candidate chunk to produce patches for the target chunk. To do so, ssFix translates the candidate chunk by unifying the names used in the candidate chunk with those in the target chunk; matches the chunk components (expressions and statements) between the translated candidate chunk and the target chunk; and produces patches for the target chunk based on the syntactic differences that exist between the matched components and in the unmatched components. ssFix finally validates the patched programs generated against the test suite and reports the first one that passes the test suite. We evaluated ssFix on 357 bugs in the Defects4J bug dataset. Our results show that ssFix successfully repaired 20 bugs with valid patches generated and that it outperformed five other repair techniques for Java.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125346755","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 158
Testing intermediate representations for binary analysis 检验二元分析的中间表示
Soomin Kim, Markus Faerevaag, Minkyu Jung, S. Jung, DongYeop Oh, Jonghyup Lee, S. Cha
Binary lifting, which is to translate a binary executable to a high-level intermediate representation, is a primary step in binary analysis. Despite its importance, there are only few existing approaches to testing the correctness of binary lifters. Furthermore, the existing approaches suffer from low test coverage, because they largely depend on random test case generation. In this paper, we present the design and implementation of the first systematic approach to testing binary lifters. We have evaluated the proposed system on 3 state-of-the-art binary lifters, and found 24 previously unknown semantic bugs. Our result demonstrates that writing a precise binary lifter is extremely difficult even for those heavily tested projects.
二进制提升,即将二进制可执行文件转换为高级中间表示,是二进制分析的主要步骤。尽管它很重要,但只有很少的现有方法来测试二进制提升器的正确性。此外,现有方法的测试覆盖率很低,因为它们很大程度上依赖于随机的测试用例生成。在本文中,我们提出的设计和实现的第一个系统的方法来测试二元升降机。我们在3个最先进的二进制提升器上评估了提议的系统,发现了24个以前未知的语义错误。我们的结果表明,即使对于那些经过大量测试的项目,编写精确的二进制提升器也是极其困难的。
{"title":"Testing intermediate representations for binary analysis","authors":"Soomin Kim, Markus Faerevaag, Minkyu Jung, S. Jung, DongYeop Oh, Jonghyup Lee, S. Cha","doi":"10.1109/ASE.2017.8115648","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115648","url":null,"abstract":"Binary lifting, which is to translate a binary executable to a high-level intermediate representation, is a primary step in binary analysis. Despite its importance, there are only few existing approaches to testing the correctness of binary lifters. Furthermore, the existing approaches suffer from low test coverage, because they largely depend on random test case generation. In this paper, we present the design and implementation of the first systematic approach to testing binary lifters. We have evaluated the proposed system on 3 state-of-the-art binary lifters, and found 24 previously unknown semantic bugs. Our result demonstrates that writing a precise binary lifter is extremely difficult even for those heavily tested projects.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"117 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117297993","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 53
A static analysis tool with optimizations for reachability determination 具有可达性确定优化的静态分析工具
Yuexing Wang, Min Zhou, Yu Jiang, Xiaoyu Song, M. Gu, Jiaguang Sun
To reduce the false positives of static analysis, many tools collect path constraints and integrate SMT solvers to filter unreachable execution paths. However, the accumulated calling and computing of SMT solvers are time and resource consuming. This paper presents TsmartLW, an alternate static analysis tool in which we implement a path constraint solving engine to speed up reachability determination. Within the engine, typical types of constraint-patterns are firstly defined based on an empirical study of a large number of code repositories. For each pattern, a constraint solving algorithm is designed and implemented. For each program, the engine predicts the most suitable strategy and then applies the strategy to solve path constraints. The experimental results on some well-known benchmarks and real-world applications show that TsmartLW is faster than some state-of-the-art static analysis tools. For example, it is 1.32× faster than CPAchecker and our engine is 369× faster than SMT solvers in solving path constraints. The demo video is available at https://www.youtube.com/watch?v=5c3ARhFclHA&t=2s.
为了减少静态分析的误报,许多工具收集路径约束并集成SMT求解器来过滤不可达的执行路径。然而,SMT求解器的累计调用和计算耗费大量时间和资源。本文介绍了TsmartLW,这是一个备选的静态分析工具,我们在其中实现了一个路径约束求解引擎,以加快可达性的确定。在引擎中,典型的约束模式类型首先是基于对大量代码库的经验研究来定义的。针对每种模式,设计并实现了约束求解算法。对于每个程序,引擎预测最合适的策略,然后应用该策略来解决路径约束。在一些知名的基准测试和实际应用程序上的实验结果表明,TsmartLW比一些最先进的静态分析工具要快。例如,它比CPAchecker快1.32倍,我们的引擎在求解路径约束方面比SMT求解器快369倍。演示视频可在https://www.youtube.com/watch?v=5c3ARhFclHA&t=2s上获得。
{"title":"A static analysis tool with optimizations for reachability determination","authors":"Yuexing Wang, Min Zhou, Yu Jiang, Xiaoyu Song, M. Gu, Jiaguang Sun","doi":"10.1109/ASE.2017.8115706","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115706","url":null,"abstract":"To reduce the false positives of static analysis, many tools collect path constraints and integrate SMT solvers to filter unreachable execution paths. However, the accumulated calling and computing of SMT solvers are time and resource consuming. This paper presents TsmartLW, an alternate static analysis tool in which we implement a path constraint solving engine to speed up reachability determination. Within the engine, typical types of constraint-patterns are firstly defined based on an empirical study of a large number of code repositories. For each pattern, a constraint solving algorithm is designed and implemented. For each program, the engine predicts the most suitable strategy and then applies the strategy to solve path constraints. The experimental results on some well-known benchmarks and real-world applications show that TsmartLW is faster than some state-of-the-art static analysis tools. For example, it is 1.32× faster than CPAchecker and our engine is 369× faster than SMT solvers in solving path constraints. The demo video is available at https://www.youtube.com/watch?v=5c3ARhFclHA&t=2s.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"8 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126885627","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 5
UI driven Android application reduction UI驱动的Android应用程序减少
Jianjun Huang, Yousra Aafer, D. Perry, X. Zhang, Chen Tian
While smartphone« and mobile apps have been an integral part of our life, modern mobile apps tend to contain a lot of rarely used functionalities. For example, applications contain advertisements and offer extra features such as recommended news stories in weather apps. While these functionalities are not essential to an app, they nonetheless consume power, CPU cycles and bandwidth. In this paper, we design a UI driven approach that allows customizing an Android app by removing its unwanted functionalities. In particular, our technique displays the UI and allows the user to select elements denoting functionalities that she wants to remove. Using this information, our technique automatically removes all the code elements related to the selected functionalities, including all the relevant background tasks. The underlying analysis is a type system, in which each code element is tagged with a type indicating if it should be removed. From the UI hints, our technique infers types for all other code elements and reduces the app accordingly. We implement a prototype and evaluate it on 10 real-world Android apps. The results show that our approach can accurately discover the removable code elements and lead to substantial resource savings in the reduced apps.
虽然智能手机和移动应用已经成为我们生活中不可或缺的一部分,但现代移动应用往往包含许多很少使用的功能。例如,应用程序包含广告,并提供额外的功能,如天气应用程序中的新闻故事推荐。虽然这些功能对应用程序来说并不是必不可少的,但它们仍然会消耗能量、CPU周期和带宽。在本文中,我们设计了一个UI驱动的方法,允许通过删除其不需要的功能来定制Android应用程序。特别是,我们的技术显示UI并允许用户选择表示她想要删除的功能的元素。使用这些信息,我们的技术自动删除与所选功能相关的所有代码元素,包括所有相关的后台任务。底层分析是一个类型系统,其中每个代码元素都用类型标记,指示是否应该删除它。从UI提示中,我们的技术推断出所有其他代码元素的类型,并相应地减少应用程序。我们执行了一个原型,并在10个真实的Android应用上进行了评估。结果表明,我们的方法可以准确地发现可移除的代码元素,并在减少的应用程序中节省大量资源。
{"title":"UI driven Android application reduction","authors":"Jianjun Huang, Yousra Aafer, D. Perry, X. Zhang, Chen Tian","doi":"10.1109/ASE.2017.8115642","DOIUrl":"https://doi.org/10.1109/ASE.2017.8115642","url":null,"abstract":"While smartphone« and mobile apps have been an integral part of our life, modern mobile apps tend to contain a lot of rarely used functionalities. For example, applications contain advertisements and offer extra features such as recommended news stories in weather apps. While these functionalities are not essential to an app, they nonetheless consume power, CPU cycles and bandwidth. In this paper, we design a UI driven approach that allows customizing an Android app by removing its unwanted functionalities. In particular, our technique displays the UI and allows the user to select elements denoting functionalities that she wants to remove. Using this information, our technique automatically removes all the code elements related to the selected functionalities, including all the relevant background tasks. The underlying analysis is a type system, in which each code element is tagged with a type indicating if it should be removed. From the UI hints, our technique infers types for all other code elements and reduces the app accordingly. We implement a prototype and evaluate it on 10 real-world Android apps. The results show that our approach can accurately discover the removable code elements and lead to substantial resource savings in the reduced apps.","PeriodicalId":382876,"journal":{"name":"2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"49 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124102894","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 12
期刊
2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1