首页 > 最新文献

2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)最新文献

英文 中文
MOAD: Modeling Observation-Based Approximate Dependency MOAD:基于观测的近似依赖关系建模
Seongmin Lee, D. Binkley, R. Feldt, N. Gold, S. Yoo
While dependency analysis is foundational to many applications of program analysis, the static nature of many existing techniques presents challenges such as limited scalability and inability to cope with multi-lingual systems. We present a novel dependency analysis technique that aims to approximate program dependency from a relatively small number of perturbed executions. Our technique, called MOAD (Modeling Observation-based Approximate Dependency), reformulates program dependency as the likelihood that one program element is dependent on another, instead of a more classical Boolean relationship. MOAD generates a set of program variants by deleting parts of the source code, and executes them while observing the impacts of the deletions on various program points. From these observations, MOAD infers a model of program dependency that captures the dependency relationship between the modification and observation points. While MOAD is a purely dynamic dependency analysis technique similar to Observation Based Slicing (ORBS), it does not require iterative deletions. Rather, MOAD makes a much smaller number of multiple, independent observations in parallel and infers dependency relationships for multiple program elements simultaneously, significantly reducing the cost of dynamic dependency analysis. We evaluate MOAD by instantiating program slices from the obtained probabilistic dependency model. Compared to ORBS, MOAD's model construction requires only 18.7% of the observations used by ORBS, while its slices are only 16% larger than the corresponding ORBS slice, on average.
虽然依赖分析是许多程序分析应用程序的基础,但许多现有技术的静态特性提出了挑战,例如有限的可伸缩性和无法处理多语言系统。我们提出了一种新的依赖分析技术,旨在从相对较少的干扰执行中近似程序依赖。我们的技术,称为MOAD(建模基于观测的近似依赖),将程序依赖重新表述为一个程序元素依赖于另一个元素的可能性,而不是更经典的布尔关系。MOAD通过删除部分源代码生成一组程序变体,并执行它们,同时观察删除对各个程序点的影响。从这些观察中,MOAD推断出程序依赖关系的模型,该模型捕获了修改和观察点之间的依赖关系。虽然MOAD是一种纯粹的动态依赖分析技术,类似于基于观察的切片(ORBS),但它不需要迭代删除。相反,MOAD并行地进行更少数量的多个独立观察,并同时推断多个程序元素的依赖关系,从而显著降低了动态依赖分析的成本。我们通过从获得的概率依赖模型实例化程序片来评估MOAD。与ORBS相比,MOAD模型构建所需的观测数据仅为ORBS所用观测数据的18.7%,其切片平均仅比相应的ORBS切片大16%。
{"title":"MOAD: Modeling Observation-Based Approximate Dependency","authors":"Seongmin Lee, D. Binkley, R. Feldt, N. Gold, S. Yoo","doi":"10.1109/SCAM.2019.00011","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00011","url":null,"abstract":"While dependency analysis is foundational to many applications of program analysis, the static nature of many existing techniques presents challenges such as limited scalability and inability to cope with multi-lingual systems. We present a novel dependency analysis technique that aims to approximate program dependency from a relatively small number of perturbed executions. Our technique, called MOAD (Modeling Observation-based Approximate Dependency), reformulates program dependency as the likelihood that one program element is dependent on another, instead of a more classical Boolean relationship. MOAD generates a set of program variants by deleting parts of the source code, and executes them while observing the impacts of the deletions on various program points. From these observations, MOAD infers a model of program dependency that captures the dependency relationship between the modification and observation points. While MOAD is a purely dynamic dependency analysis technique similar to Observation Based Slicing (ORBS), it does not require iterative deletions. Rather, MOAD makes a much smaller number of multiple, independent observations in parallel and infers dependency relationships for multiple program elements simultaneously, significantly reducing the cost of dynamic dependency analysis. We evaluate MOAD by instantiating program slices from the obtained probabilistic dependency model. Compared to ORBS, MOAD's model construction requires only 18.7% of the observations used by ORBS, while its slices are only 16% larger than the corresponding ORBS slice, on average.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132508714","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
Evaluating Automatic Fault Localization Using Markov Processes 基于马尔可夫过程的故障自动定位评估
Tim A. D. Henderson, Andy Podgurski, Yigit Küçük
Statistical fault localization (SFL) techniques are commonly compared and evaluated using a measure known as "Rank Score" and its associated evaluation process. In the latter process each SFL technique under comparison is used to produce a list of program locations, ranked by their suspiciousness scores. Each technique then receives a Rank Score for each faulty program it is applied to, which is equal to the rank of the first faulty location in the corresponding list. The SFL technique whose average Rank Score is lowest is judged the best overall, based on the assumption that a programmer will examine each location in rank order until a fault is found. However, this assumption oversimplifies how an SFL technique would be used in practice. Programmers are likely to regard suspiciousness ranks as just one source of information among several that are relevant to locating faults. This paper provides a new evaluation approach using first-order Markov models of debugging processes, which can incorporate multiple additional kinds of information, e.g., about code locality, dependences, or even intuition. Our approach, RT_rank, scores SFL techniques based on the expected number of steps a programmer would take through the Markov model before reaching a faulty location. Unlike previous evaluation methods, HT_rank can compare techniques even when they produce fault localization reports differing in structure or information granularity. To illustrate the approach, we present a case study comparing two existing fault localization techniques that produce results varying in form and granularity.
统计故障定位(SFL)技术通常使用称为“Rank Score”的度量及其相关的评估过程进行比较和评估。在后一个过程中,每一种被比较的SFL技术被用来产生一个程序位置的列表,根据它们的怀疑分数进行排名。然后,每种技术为它应用的每个故障程序接收一个Rank Score,该评分等于相应列表中第一个故障位置的排名。平均Rank Score最低的SFL技术总体上被认为是最好的,这是基于程序员将按照Rank顺序检查每个位置直到发现错误的假设。然而,这种假设过度简化了SFL技术在实践中的使用方式。程序员很可能将怀疑等级仅仅视为与定位错误相关的几个信息来源中的一个。本文提供了一种新的评估方法,使用调试过程的一阶马尔可夫模型,它可以包含多种附加类型的信息,例如,关于代码局部性,依赖性,甚至直觉。我们的方法RT_rank基于程序员在到达错误位置之前通过马尔可夫模型的预期步数对SFL技术进行评分。与以前的评估方法不同,HT_rank可以比较技术,即使它们生成的故障定位报告在结构或信息粒度上存在差异。为了说明这种方法,我们提出了一个案例研究,比较了两种现有的故障定位技术,这些技术产生的结果在形式和粒度上都有所不同。
{"title":"Evaluating Automatic Fault Localization Using Markov Processes","authors":"Tim A. D. Henderson, Andy Podgurski, Yigit Küçük","doi":"10.1109/SCAM.2019.00021","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00021","url":null,"abstract":"Statistical fault localization (SFL) techniques are commonly compared and evaluated using a measure known as \"Rank Score\" and its associated evaluation process. In the latter process each SFL technique under comparison is used to produce a list of program locations, ranked by their suspiciousness scores. Each technique then receives a Rank Score for each faulty program it is applied to, which is equal to the rank of the first faulty location in the corresponding list. The SFL technique whose average Rank Score is lowest is judged the best overall, based on the assumption that a programmer will examine each location in rank order until a fault is found. However, this assumption oversimplifies how an SFL technique would be used in practice. Programmers are likely to regard suspiciousness ranks as just one source of information among several that are relevant to locating faults. This paper provides a new evaluation approach using first-order Markov models of debugging processes, which can incorporate multiple additional kinds of information, e.g., about code locality, dependences, or even intuition. Our approach, RT_rank, scores SFL techniques based on the expected number of steps a programmer would take through the Markov model before reaching a faulty location. Unlike previous evaluation methods, HT_rank can compare techniques even when they produce fault localization reports differing in structure or information granularity. To illustrate the approach, we present a case study comparing two existing fault localization techniques that produce results varying in form and granularity.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134413789","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}
引用次数: 2
The Architectural Security Tool Suite — ARCHSEC 架构安全工具套件- ARCHSEC
Bernhard J. Berger, K. Sohr, R. Koschke
Architectural risk analysis is a risk management process for identifying security flaws at the level of software architectures and is used by large software vendors, to secure their products. We present our architectural security environ- ment (ARCHSEC) that has been developed at our institute during the past eight years in several research projects. ARCHSEC aims to simplify architectural risk analysis, making it easier for small and mid-sized companies to get started. With ARCHSEC, it is possible to graphically model or to reverse engineer software security architectures. The regained software architectures can then be inspected manually or au- tomatically analyzed w.r.t. security flaws, resulting in a threat model, which serves as a base for discussion between software and security experts to improve the overall security of the software system in question, beyond the level of implementation bugs. In the evaluation part of this paper, we demonstrate how we use ARCHSEC in two of our current research projects to analyze business applications. In the first project we use ARCHSEC to identify security flaws in business process diagrams. In the second project, ARCHSEC is integrated into an audit environment for software security certification. ARCHSEC is used to identify security flaws and to visualize software systems to improve the effectiveness and efficiency of the certification process.
架构风险分析是一个风险管理过程,用于识别软件架构级别的安全缺陷,大型软件供应商使用该过程来保护其产品。我们介绍了我们的建筑安全环境(ARCHSEC),这是我们研究所在过去八年中在几个研究项目中开发出来的。ARCHSEC旨在简化架构风险分析,使中小型公司更容易入门。使用ARCHSEC,可以对软件安全架构进行图形化建模或逆向工程。然后可以手动检查重新获得的软件体系结构,或自动分析w.r.t.安全缺陷,从而生成威胁模型,该模型作为软件和安全专家之间讨论的基础,以提高所讨论的软件系统的整体安全性,超越实现错误的级别。在本文的评估部分,我们将演示如何在我们当前的两个研究项目中使用ARCHSEC来分析业务应用程序。在第一个项目中,我们使用ARCHSEC来识别业务流程图中的安全缺陷。在第二个项目中,ARCHSEC被集成到软件安全认证的审计环境中。ARCHSEC用于识别安全漏洞和可视化软件系统,以提高认证过程的有效性和效率。
{"title":"The Architectural Security Tool Suite — ARCHSEC","authors":"Bernhard J. Berger, K. Sohr, R. Koschke","doi":"10.1109/SCAM.2019.00035","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00035","url":null,"abstract":"Architectural risk analysis is a risk management process for identifying security flaws at the level of software architectures and is used by large software vendors, to secure their products. We present our architectural security environ- ment (ARCHSEC) that has been developed at our institute during the past eight years in several research projects. ARCHSEC aims to simplify architectural risk analysis, making it easier for small and mid-sized companies to get started. With ARCHSEC, it is possible to graphically model or to reverse engineer software security architectures. The regained software architectures can then be inspected manually or au- tomatically analyzed w.r.t. security flaws, resulting in a threat model, which serves as a base for discussion between software and security experts to improve the overall security of the software system in question, beyond the level of implementation bugs. In the evaluation part of this paper, we demonstrate how we use ARCHSEC in two of our current research projects to analyze business applications. In the first project we use ARCHSEC to identify security flaws in business process diagrams. In the second project, ARCHSEC is integrated into an audit environment for software security certification. ARCHSEC is used to identify security flaws and to visualize software systems to improve the effectiveness and efficiency of the certification process.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"53 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133770764","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
An Exploratory Study on Automatic Architectural Change Analysis Using Natural Language Processing Techniques 基于自然语言处理技术的建筑变化自动分析的探索性研究
A. Mondal, B. Roy, Kevin A. Schneider
Continuous architecture is vital for developing large, complex software systems and supporting continuous delivery, integration, and testing practices. Researchers and practitioners investigate models and rules for managing change to support architecture continuity. They employ manual techniques to analyze software change, categorizing the changes as perfective, corrective, adaptive, and preventive. However, a manual approach is impractical for analyzing systems involving thousands of artefacts as it is time-consuming, labor-intensive, and error-prone. In this paper, we investigate whether an automatic technique incorporating free-form natural language text (e.g., developers' communication and commit messages) is an effective solution for architectural change analysis. Our experiments with multiple projects showed encouraging results for detecting architectural messages using our proposed language model. Although architectural change categorization for the preventive class is moderate, the outcome for the random dataset is insignificant in general (around a 45% F1 score). We investigated the causes of the unpromising outcome. Overall, our study reveals that our automated architectural change analysis tool would be fruitful only if the developers provide considerable technical details in the commit messages or other text.
持续架构对于开发大型、复杂的软件系统以及支持持续交付、集成和测试实践是至关重要的。研究人员和实践者研究管理变更的模型和规则,以支持体系结构的连续性。他们使用手工技术来分析软件变更,将变更分为完美的、纠正的、适应性的和预防性的。然而,手工方法对于分析涉及数千个工件的系统是不切实际的,因为它是耗时的、劳动密集型的,并且容易出错。在本文中,我们研究了一种结合自由形式的自然语言文本(例如,开发人员的通信和提交消息)的自动技术是否是架构变更分析的有效解决方案。我们对多个项目的实验显示了使用我们提出的语言模型检测体系结构消息的令人鼓舞的结果。尽管预防性类的架构变化分类是中等的,但随机数据集的结果通常是微不足道的(大约45%的F1分数)。我们调查了结果不乐观的原因。总的来说,我们的研究表明,只有当开发人员在提交消息或其他文本中提供相当多的技术细节时,我们的自动化架构变更分析工具才会富有成效。
{"title":"An Exploratory Study on Automatic Architectural Change Analysis Using Natural Language Processing Techniques","authors":"A. Mondal, B. Roy, Kevin A. Schneider","doi":"10.1109/SCAM.2019.00016","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00016","url":null,"abstract":"Continuous architecture is vital for developing large, complex software systems and supporting continuous delivery, integration, and testing practices. Researchers and practitioners investigate models and rules for managing change to support architecture continuity. They employ manual techniques to analyze software change, categorizing the changes as perfective, corrective, adaptive, and preventive. However, a manual approach is impractical for analyzing systems involving thousands of artefacts as it is time-consuming, labor-intensive, and error-prone. In this paper, we investigate whether an automatic technique incorporating free-form natural language text (e.g., developers' communication and commit messages) is an effective solution for architectural change analysis. Our experiments with multiple projects showed encouraging results for detecting architectural messages using our proposed language model. Although architectural change categorization for the preventive class is moderate, the outcome for the random dataset is insignificant in general (around a 45% F1 score). We investigated the causes of the unpromising outcome. Overall, our study reveals that our automated architectural change analysis tool would be fruitful only if the developers provide considerable technical details in the commit messages or other text.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121061906","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
The Strengths and Behavioral Quirks of Java Bytecode Decompilers Java字节码反编译器的优点和行为特点
Nicolas Harrand, César Soto-Valero, Monperrus Martin, B. Baudry
During compilation from Java source code to bytecode, some information is irreversibly lost. In other words, compilation and decompilation of Java code is not symmetric. Consequently, the decompilation process, which aims at producing source code from bytecode, must establish some strategies to reconstruct the information that has been lost. Modern Java decompilers tend to use distinct strategies to achieve proper decompilation. In this work, we hypothesize that the diverse ways in which bytecode can be decompiled has a direct impact on the quality of the source code produced by decompilers. We study the effectiveness of eight Java decompilers with respect to three quality indicators: syntactic correctness, syntactic distortion and semantic equivalence modulo inputs. This study relies on a benchmark set of 14 real-world open-source software projects to be decompiled (2041 classes in total). Our results show that no single modern decompiler is able to correctly handle the variety of bytecode structures coming from real-world programs. Even the highest ranking decompiler in this study produces syntactically correct output for 84% of classes of our dataset and semantically equivalent code output for 78% of classes.
在从Java源代码到字节码的编译过程中,一些信息将不可逆转地丢失。换句话说,Java代码的编译和反编译不是对称的。因此,以字节码生成源代码为目标的反编译过程必须建立一些策略来重建丢失的信息。现代Java反编译器倾向于使用不同的策略来实现正确的反编译。在这项工作中,我们假设字节码反编译的不同方式对反编译器生成的源代码的质量有直接的影响。我们研究了八个Java反编译器在三个质量指标方面的有效性:语法正确性,语法失真和语义等价模输入。这项研究依赖于14个真实开源软件项目的基准集进行反编译(总共2041个类)。我们的结果表明,没有一个单一的现代反编译器能够正确地处理来自现实世界程序的各种字节码结构。即使是本研究中排名最高的反编译器,也会为我们数据集中84%的类产生语法正确的输出,为78%的类产生语义等效的代码输出。
{"title":"The Strengths and Behavioral Quirks of Java Bytecode Decompilers","authors":"Nicolas Harrand, César Soto-Valero, Monperrus Martin, B. Baudry","doi":"10.1109/SCAM.2019.00019","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00019","url":null,"abstract":"During compilation from Java source code to bytecode, some information is irreversibly lost. In other words, compilation and decompilation of Java code is not symmetric. Consequently, the decompilation process, which aims at producing source code from bytecode, must establish some strategies to reconstruct the information that has been lost. Modern Java decompilers tend to use distinct strategies to achieve proper decompilation. In this work, we hypothesize that the diverse ways in which bytecode can be decompiled has a direct impact on the quality of the source code produced by decompilers. We study the effectiveness of eight Java decompilers with respect to three quality indicators: syntactic correctness, syntactic distortion and semantic equivalence modulo inputs. This study relies on a benchmark set of 14 real-world open-source software projects to be decompiled (2041 classes in total). Our results show that no single modern decompiler is able to correctly handle the variety of bytecode structures coming from real-world programs. Even the highest ranking decompiler in this study produces syntactically correct output for 84% of classes of our dataset and semantically equivalent code output for 78% of classes.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"100 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-08-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132145265","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}
引用次数: 8
A Study on the Effects of Exception Usage in Open-Source C++ Systems 开源c++系统中异常使用的影响研究
Kirsten Bradley, Michael W. Godfrey
Exception handling (EH) is a feature common to many modern programming languages, including C++, Java, and Python, that allows error handling in client code to be performed in a way that is both systematic and largely detached from the implementation of the main functionality. However, C++ developers sometimes choose not to use EH, as they feel that its use increases complexity of the resulting code: new control flow paths are added to the code, "stack unwinding" adds extra responsibilities for the developer to worry about, and EH arguably detracts from the modular design of the system. In this paper, we perform an exploratory empirical study of the effects of exceptions usage in 2721 open source C++ systems taken from GitHub. We observed that the number of edges in an augmented call graph increases, on average, by 22% when edges for exception flow are added to a graph. Additionally, about 8 out of 9 functions that may throw only do so by propagating a throw from another function. These results suggest that, in practice, the use of C++ EH can add complexity to the design of the system that developers must strive to be aware of.
异常处理(EH)是许多现代编程语言(包括c++、Java和Python)的共同特性,它允许以一种既系统又在很大程度上脱离主要功能实现的方式执行客户机代码中的错误处理。然而,c++开发人员有时选择不使用EH,因为他们觉得使用EH会增加结果代码的复杂性:新的控制流路径被添加到代码中,“堆栈展开”增加了开发人员需要担心的额外责任,并且EH可能会损害系统的模块化设计。在本文中,我们对取自GitHub的2721个开源c++系统中异常使用的影响进行了探索性实证研究。我们观察到,当将异常流的边添加到图中时,增强调用图中的边数量平均增加了22%。此外,9个可能抛出的函数中有8个只能通过传播另一个函数的抛出来实现。这些结果表明,在实践中,使用c++ EH会增加系统设计的复杂性,这是开发人员必须努力意识到的。
{"title":"A Study on the Effects of Exception Usage in Open-Source C++ Systems","authors":"Kirsten Bradley, Michael W. Godfrey","doi":"10.1109/SCAM.2019.00010","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00010","url":null,"abstract":"Exception handling (EH) is a feature common to many modern programming languages, including C++, Java, and Python, that allows error handling in client code to be performed in a way that is both systematic and largely detached from the implementation of the main functionality. However, C++ developers sometimes choose not to use EH, as they feel that its use increases complexity of the resulting code: new control flow paths are added to the code, \"stack unwinding\" adds extra responsibilities for the developer to worry about, and EH arguably detracts from the modular design of the system. In this paper, we perform an exploratory empirical study of the effects of exceptions usage in 2721 open source C++ systems taken from GitHub. We observed that the number of edges in an augmented call graph increases, on average, by 22% when edges for exception flow are added to a graph. Additionally, about 8 out of 9 functions that may throw only do so by propagating a throw from another function. These results suggest that, in practice, the use of C++ EH can add complexity to the design of the system that developers must strive to be aware of.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125549180","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}
引用次数: 3
Automated Customized Bug-Benchmark Generation 自动定制的bug基准生成
Vineeth Kashyap, Jason Ruchti, Lucja Kot, Emma Turetsky, R. Swords, David Melski, Eric Schulte
We introduce Bug-Injector, a system that automatically creates benchmarks for customized evaluation of static analysis tools. We share a benchmark generated using Bug-Injector and illustrate its efficacy by using it to evaluate the recall of two leading open-source static analysis tools: Clang Static Analyzer and Infer. Bug-Injector works by inserting bugs based on bug templates into real-world host programs. It runs tests on the host program to collect dynamic traces, searches the traces for a point where the state satisfies the preconditions for some bug template, then modifies the host program to "inject" a bug based on that template. Injected bugs are used as test cases in a static analysis tool evaluation benchmark. Every test case is accompanied by a program input that exercises the injected bug. We have identified a broad range of requirements and desiderata for bug benchmarks; our approach generates on-demand test benchmarks that meet these requirements. It also allows us to create customized benchmarks suitable for evaluating tools for a specific use case (e.g., a given codebase and set of bug types). Our experimental evaluation demonstrates the suitability of our generated benchmark for evaluating static bug-detection tools and for comparing the performance of different tools.
我们介绍Bug-Injector,这是一个自动创建基准的系统,用于自定义静态分析工具的评估。我们分享了一个使用Bug-Injector生成的基准,并通过使用它来评估两个领先的开源静态分析工具Clang static Analyzer和Infer的召回来说明它的有效性。bug - injector的工作原理是将基于bug模板的bug插入到真实的宿主程序中。它在主程序上运行测试以收集动态跟踪,在跟踪中搜索状态满足某些错误模板先决条件的点,然后修改主程序以基于该模板“注入”错误。注入的错误被用作静态分析工具评估基准中的测试用例。每个测试用例都伴随着一个执行注入错误的程序输入。我们已经确定了bug基准测试的广泛需求和期望;我们的方法生成满足这些需求的按需测试基准。它还允许我们创建适合于评估特定用例工具的定制基准(例如,给定的代码库和一组错误类型)。我们的实验评估证明了我们生成的基准对于评估静态bug检测工具和比较不同工具的性能的适用性。
{"title":"Automated Customized Bug-Benchmark Generation","authors":"Vineeth Kashyap, Jason Ruchti, Lucja Kot, Emma Turetsky, R. Swords, David Melski, Eric Schulte","doi":"10.1109/SCAM.2019.00020","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00020","url":null,"abstract":"We introduce Bug-Injector, a system that automatically creates benchmarks for customized evaluation of static analysis tools. We share a benchmark generated using Bug-Injector and illustrate its efficacy by using it to evaluate the recall of two leading open-source static analysis tools: Clang Static Analyzer and Infer. Bug-Injector works by inserting bugs based on bug templates into real-world host programs. It runs tests on the host program to collect dynamic traces, searches the traces for a point where the state satisfies the preconditions for some bug template, then modifies the host program to \"inject\" a bug based on that template. Injected bugs are used as test cases in a static analysis tool evaluation benchmark. Every test case is accompanied by a program input that exercises the injected bug. We have identified a broad range of requirements and desiderata for bug benchmarks; our approach generates on-demand test benchmarks that meet these requirements. It also allows us to create customized benchmarks suitable for evaluating tools for a specific use case (e.g., a given codebase and set of bug types). Our experimental evaluation demonstrates the suitability of our generated benchmark for evaluating static bug-detection tools and for comparing the performance of different tools.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"80 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-01-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134430368","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}
引用次数: 14
期刊
2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)
全部 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学术文献互助群
群 号:604180095
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1