首页 > 最新文献

2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)最新文献

英文 中文
Recording and replaying system specific, source code transformations 记录和重播系统的具体,源代码转换
Gustavo Santos, Anne Etien, N. Anquetil, Stéphane Ducasse, M. T. Valente
During its lifetime, a software system is under continuous maintenance to remain useful. Maintenance can be achieved in activities such as adding new features, fixing bugs, improving the system's structure, or adapting to new APIs. In such cases, developers sometimes perform sequences of code changes in a systematic way. These sequences consist of small code changes (e.g., create a class, then extract a method to this class), which are applied to groups of related code entities (e.g., some of the methods of a class). This paper presents the design and proof-of-concept implementation of a tool called MacroRecorder. This tool records a sequence of code changes, then it allows the developer to generalize this sequence in order to apply it in other code locations. In this paper, we discuss MACRORECORDER's approach that is independent of both development and transformation tools. The evaluation is based on previous work on repetitive code changes related to rearchitecting. MacroRecorder was able to replay 92% of the examples, which consisted in up to seven code entities modified up to 66 times. The generation of a customizable, large-scale transformation operator has the potential to efficiently assist code maintenance.
在其生命周期中,软件系统需要持续维护以保持其可用性。维护可以通过添加新功能、修复错误、改进系统结构或适应新的api等活动来实现。在这种情况下,开发人员有时会以系统的方式执行代码更改序列。这些序列由小的代码更改组成(例如,创建一个类,然后提取一个方法到这个类),这些更改应用于相关代码实体组(例如,一个类的一些方法)。本文介绍了MacroRecorder工具的设计和概念验证实现。该工具记录了代码更改的序列,然后它允许开发人员泛化该序列,以便将其应用于其他代码位置。在本文中,我们将讨论独立于开发和转换工具的MACRORECORDER方法。评估是基于先前对与重构相关的重复代码更改的工作。MacroRecorder能够重播92%的示例,这些示例由最多7个代码实体组成,修改次数最多为66次。可定制的大规模转换操作符的生成有可能有效地协助代码维护。
{"title":"Recording and replaying system specific, source code transformations","authors":"Gustavo Santos, Anne Etien, N. Anquetil, Stéphane Ducasse, M. T. Valente","doi":"10.1109/SCAM.2015.7335418","DOIUrl":"https://doi.org/10.1109/SCAM.2015.7335418","url":null,"abstract":"During its lifetime, a software system is under continuous maintenance to remain useful. Maintenance can be achieved in activities such as adding new features, fixing bugs, improving the system's structure, or adapting to new APIs. In such cases, developers sometimes perform sequences of code changes in a systematic way. These sequences consist of small code changes (e.g., create a class, then extract a method to this class), which are applied to groups of related code entities (e.g., some of the methods of a class). This paper presents the design and proof-of-concept implementation of a tool called MacroRecorder. This tool records a sequence of code changes, then it allows the developer to generalize this sequence in order to apply it in other code locations. In this paper, we discuss MACRORECORDER's approach that is independent of both development and transformation tools. The evaluation is based on previous work on repetitive code changes related to rearchitecting. MacroRecorder was able to replay 92% of the examples, which consisted in up to seven code entities modified up to 66 times. The generation of a customizable, large-scale transformation operator has the potential to efficiently assist code maintenance.","PeriodicalId":192232,"journal":{"name":"2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-11-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131311772","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
How do Java methods grow? Java方法是如何增长的?
Daniela Steidl, F. Deißenböck
Overly long methods hamper the maintainability of software - they are hard to understand and to change, but also difficult to test, reuse, and profile. While technically there are many opportunities to refactor long methods, little is known about their origin and their evolution. It is unclear how much effort should be spent to refactor them and when this effort is spent best. To obtain a maintenance strategy, we need a better understanding of how software systems and their methods evolve. This paper presents an empirical case study on method growth in Java with nine open source and one industry system. We show that most methods do not increase their length significantly; in fact, about half of them remain unchanged after the initial commit. Instead, software systems grow by adding new methods rather than by modifying existing methods.
过长的方法阻碍了软件的可维护性——它们难以理解和更改,而且也难以测试、重用和分析。虽然在技术上有很多机会重构长方法,但对它们的起源和演变却知之甚少。目前还不清楚应该花多少精力来重构它们,以及什么时候花这些精力最好。为了获得维护策略,我们需要更好地理解软件系统及其方法是如何发展的。本文以Java为例,对九个开源和一个工业系统的方法增长进行了实证研究。我们发现大多数方法不会显著增加它们的长度;事实上,大约有一半在初始提交之后保持不变。相反,软件系统通过添加新方法而不是修改现有方法来增长。
{"title":"How do Java methods grow?","authors":"Daniela Steidl, F. Deißenböck","doi":"10.1109/SCAM.2015.7335411","DOIUrl":"https://doi.org/10.1109/SCAM.2015.7335411","url":null,"abstract":"Overly long methods hamper the maintainability of software - they are hard to understand and to change, but also difficult to test, reuse, and profile. While technically there are many opportunities to refactor long methods, little is known about their origin and their evolution. It is unclear how much effort should be spent to refactor them and when this effort is spent best. To obtain a maintenance strategy, we need a better understanding of how software systems and their methods evolve. This paper presents an empirical case study on method growth in Java with nine open source and one industry system. We show that most methods do not increase their length significantly; in fact, about half of them remain unchanged after the initial commit. Instead, software systems grow by adding new methods rather than by modifying existing methods.","PeriodicalId":192232,"journal":{"name":"2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"37 1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-11-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132850307","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}
引用次数: 4
Cumulative code churn: Impact on maintainability 累积代码混乱:对可维护性的影响
Csaba Faragó, Péter Hegedüs, R. Ferenc
It is a well-known phenomena that the source code of software systems erodes during development, which results in higher maintenance costs in the long term. But can we somehow narrow down where exactly this erosion happens? Is it possible to infer the future erosion based on past code changes? Do modifications performed on frequently changing code have worse effect on software maintainability than those affecting less frequently modified code? In this study we investigated these questions and the results indicate that code churn indeed increases the pace of code erosion. We calculated cumulative code churn values and maintainability changes for every version control commit operation of three open-source and one proprietary software system. With the help of Wilcoxon rank test we compared the cumulative code churn values of the files in commits resulting maintainability increase with those of decreasing the maintainability. In the case of three systems the test showed very strong significance and in one case it resulted in strong significance (p-values 0.00235, 0.00436, 0.00018 and 0.03616). These results support our preliminary assumption that modifying high-churn code is more likely to decrease the overall maintainability of a software system, which can be thought of as the generalization of the already known phenomena that code churn results in higher number of defects.
众所周知,软件系统的源代码在开发过程中会被侵蚀,这将导致长期维护成本的增加。但我们能不能缩小侵蚀发生的具体位置?是否有可能根据过去的代码更改来推断未来的侵蚀?在频繁更改的代码上执行的修改对软件可维护性的影响是否比那些不经常修改的代码的影响更差?在这项研究中,我们调查了这些问题,结果表明代码的混乱确实增加了代码侵蚀的速度。我们计算了三个开源软件系统和一个专有软件系统的每个版本控制提交操作的累积代码流失值和可维护性变化。在Wilcoxon秩测试的帮助下,我们比较了提交中导致可维护性增加和降低可维护性的文件的累积代码变动值。在三个系统的情况下,测试显示非常强的显著性,在一个情况下,它导致强显著性(p值0.00235,0.00436,0.00018和0.03616)。这些结果支持了我们的初步假设,即修改频繁变动的代码更有可能降低软件系统的整体可维护性,这可以被认为是对已知的代码变动导致更多缺陷现象的概括。
{"title":"Cumulative code churn: Impact on maintainability","authors":"Csaba Faragó, Péter Hegedüs, R. Ferenc","doi":"10.1109/SCAM.2015.7335410","DOIUrl":"https://doi.org/10.1109/SCAM.2015.7335410","url":null,"abstract":"It is a well-known phenomena that the source code of software systems erodes during development, which results in higher maintenance costs in the long term. But can we somehow narrow down where exactly this erosion happens? Is it possible to infer the future erosion based on past code changes? Do modifications performed on frequently changing code have worse effect on software maintainability than those affecting less frequently modified code? In this study we investigated these questions and the results indicate that code churn indeed increases the pace of code erosion. We calculated cumulative code churn values and maintainability changes for every version control commit operation of three open-source and one proprietary software system. With the help of Wilcoxon rank test we compared the cumulative code churn values of the files in commits resulting maintainability increase with those of decreasing the maintainability. In the case of three systems the test showed very strong significance and in one case it resulted in strong significance (p-values 0.00235, 0.00436, 0.00018 and 0.03616). These results support our preliminary assumption that modifying high-churn code is more likely to decrease the overall maintainability of a software system, which can be thought of as the generalization of the already known phenomena that code churn results in higher number of defects.","PeriodicalId":192232,"journal":{"name":"2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-11-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124848427","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}
引用次数: 9
Automated memory leak diagnosis by regression testing 通过回归测试自动进行内存泄漏诊断
M. Ghanavati, A. Andrzejak
Memory leaks are tedious to detect and require significant debugging effort to be reproduced and localized. In particular, many of such bugs escape classical testing processes used in software development. One of the reasons is that unit and integration tests run too short for leaks to manifest via memory bloat or degraded performance. Moreover, many of such defects are environment-sensitive and not triggered by a test suite. Consequently, leaks are frequently discovered in the production scenario, causing elevated costs. In this paper we propose an approach for automated diagnosis of memory leaks during the development phase. Our technique is based on regression testing and exploits existing test suites. The key idea is to compare object (de-)allocation statistics (collected during unit/integration test executions) between a previous and the current software version. By grouping these statistics according to object creation sites we can detect anomalies and pinpoint the potential root causes of memory leaks. Such diagnosis can be completed before a visible memory bloat occurs, and in time proportional to the execution of test suite. We evaluate our approach using real leaks found in 7 Java applications. Results show that our approach has sufficient detection accuracy and is effective in isolating the leaky allocation site: true defect locations rank relatively high in the lists of suspicious code locations if the tests trigger the leak pattern. Our prototypical system imposes an acceptable instrumentation and execution overhead for practical memory leak detection even in large software projects.
检测内存泄漏非常繁琐,并且需要大量调试工作才能重现和本地化内存泄漏。特别是,许多这样的错误逃避了软件开发中使用的经典测试过程。其中一个原因是单元和集成测试运行的时间太短,导致内存膨胀或性能下降而导致泄漏。此外,许多这样的缺陷是环境敏感的,并且不是由测试套件触发的。因此,在生产场景中经常发现泄漏,导致成本上升。在本文中,我们提出了一种在开发阶段自动诊断内存泄漏的方法。我们的技术是基于回归测试和利用现有的测试套件。关键思想是比较以前和当前软件版本之间的对象(解)分配统计信息(在单元/集成测试执行期间收集)。通过根据对象创建站点对这些统计数据进行分组,我们可以检测异常并查明内存泄漏的潜在根本原因。这样的诊断可以在可见的内存膨胀发生之前完成,并且时间与测试套件的执行成正比。我们使用在7个Java应用程序中发现的真实泄漏来评估我们的方法。结果表明,我们的方法具有足够的检测精度,并且在隔离泄漏分配位置方面是有效的:如果测试触发泄漏模式,则真正的缺陷位置在可疑代码位置列表中排名相对较高。我们的原型系统为实际的内存泄漏检测施加了可接受的工具和执行开销,即使在大型软件项目中也是如此。
{"title":"Automated memory leak diagnosis by regression testing","authors":"M. Ghanavati, A. Andrzejak","doi":"10.1109/SCAM.2015.7335415","DOIUrl":"https://doi.org/10.1109/SCAM.2015.7335415","url":null,"abstract":"Memory leaks are tedious to detect and require significant debugging effort to be reproduced and localized. In particular, many of such bugs escape classical testing processes used in software development. One of the reasons is that unit and integration tests run too short for leaks to manifest via memory bloat or degraded performance. Moreover, many of such defects are environment-sensitive and not triggered by a test suite. Consequently, leaks are frequently discovered in the production scenario, causing elevated costs. In this paper we propose an approach for automated diagnosis of memory leaks during the development phase. Our technique is based on regression testing and exploits existing test suites. The key idea is to compare object (de-)allocation statistics (collected during unit/integration test executions) between a previous and the current software version. By grouping these statistics according to object creation sites we can detect anomalies and pinpoint the potential root causes of memory leaks. Such diagnosis can be completed before a visible memory bloat occurs, and in time proportional to the execution of test suite. We evaluate our approach using real leaks found in 7 Java applications. Results show that our approach has sufficient detection accuracy and is effective in isolating the leaky allocation site: true defect locations rank relatively high in the lists of suspicious code locations if the tests trigger the leak pattern. Our prototypical system imposes an acceptable instrumentation and execution overhead for practical memory leak detection even in large software projects.","PeriodicalId":192232,"journal":{"name":"2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"AES-20 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-11-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126548434","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}
引用次数: 10
CodeMetropolis: Eclipse over the city of source code CodeMetropolis: Eclipse在源代码之城之上
Gergõ Balogh, Attila Szabolics, Árpád Beszédes
The graphical representations of software (code visualization in particular) may provide both professional programmers and students learning only the basics with support in program comprehension. Among the numerous proposed approaches, our research applies the city metaphor for the visualisation of such code elements as classes, functions, or attributes by the tool CodeMetropolis. It uses the game engine of Minecraft for the graphics, and is able to visualize various properties of the code based on structural metrics. In this work, we present our approach to integrate our visualization tool into the Eclipse IDE environment. Previously, only standalone usage was possible, but with this new version the users can invoke the visualization directly from the IDE, and all the analysis is performed in the background. The new version of the tool now includes an Eclipse plug-in and a Minecraft modification in addition to the analysis and visualization modules which have also been extended with some new features. Possible use cases and a detailed scenario are presented.
软件的图形化表示(尤其是代码可视化)可以为专业程序员和只学习基础知识的学生提供理解程序的支持。在众多建议的方法中,我们的研究通过CodeMetropolis工具将城市隐喻应用于类、函数或属性等代码元素的可视化。它使用Minecraft的游戏引擎进行图像处理,并且能够基于结构指标可视化代码的各种属性。在本文中,我们介绍了将可视化工具集成到Eclipse IDE环境中的方法。以前,只能单独使用,但是有了这个新版本,用户可以直接从IDE调用可视化,所有的分析都在后台执行。新版本的工具现在包括一个Eclipse插件和Minecraft修改,除了分析和可视化模块,还扩展了一些新功能。给出了可能的用例和详细的场景。
{"title":"CodeMetropolis: Eclipse over the city of source code","authors":"Gergõ Balogh, Attila Szabolics, Árpád Beszédes","doi":"10.1109/SCAM.2015.7335425","DOIUrl":"https://doi.org/10.1109/SCAM.2015.7335425","url":null,"abstract":"The graphical representations of software (code visualization in particular) may provide both professional programmers and students learning only the basics with support in program comprehension. Among the numerous proposed approaches, our research applies the city metaphor for the visualisation of such code elements as classes, functions, or attributes by the tool CodeMetropolis. It uses the game engine of Minecraft for the graphics, and is able to visualize various properties of the code based on structural metrics. In this work, we present our approach to integrate our visualization tool into the Eclipse IDE environment. Previously, only standalone usage was possible, but with this new version the users can invoke the visualization directly from the IDE, and all the analysis is performed in the background. The new version of the tool now includes an Eclipse plug-in and a Minecraft modification in addition to the analysis and visualization modules which have also been extended with some new features. Possible use cases and a detailed scenario are presented.","PeriodicalId":192232,"journal":{"name":"2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"76 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-11-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117321861","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}
引用次数: 17
LeakTracer: Tracing leaks along the way LeakTracer:一路上跟踪泄漏
Hengyang Yu, Xiaohua Shi, Wei Feng
Unnecessary references in managed languages, such as Java and C#, often cause memory leaks without any immediate symptoms. These leaks become manifest when the program has been running for a long time (usually several hours, days or even weeks). Garbage collectors cannot handle this situation, since it only reclaims objects that have no external references to them. Consequently, when the number of leaked objects becomes large, garbage collection frequency increases and program performance degrades. Ultimately, the program will crash. This paper introduces LeakTracer, a tool that helps diagnose memory leaks in managed languages. The core of LeakTracer is the use of a novel leak predictor, which not only considers object size and staleness as a whole to predict leaked objects, but also carefully adjusts their contributions to the leak possibility of an object, according to the careful observation of activities of common objects during their lifetimes. We have implemented LeakTracer in two parts: (1) an online object events tracker in the Apache Harmony DRL virtual machine, and (2) an offline analyzer embedding our predictor. We have successfully used LeakTracer to find leaks in several real-world programs, and our case studies show that leak predictor can pinpoint leaked objects with high accuracy.
托管语言(如Java和c#)中不必要的引用通常会导致内存泄漏,但不会立即出现任何症状。当程序运行了很长时间(通常是几个小时、几天甚至几个星期)后,这些泄漏就会显现出来。垃圾收集器无法处理这种情况,因为它只回收没有外部引用的对象。因此,当泄漏对象的数量变得很大时,垃圾收集频率会增加,程序性能会下降。最终,程序将崩溃。本文介绍了LeakTracer,一个帮助诊断托管语言中的内存泄漏的工具。LeakTracer的核心是使用了一种新颖的泄漏预测器,它不仅从整体上考虑对象的大小和过时程度来预测泄漏对象,而且根据对普通对象在其生命周期内的活动的仔细观察,仔细调整它们对对象泄漏可能性的贡献。我们将LeakTracer实现为两部分:(1)Apache Harmony DRL虚拟机中的在线对象事件跟踪器,以及(2)嵌入我们的预测器的离线分析器。我们已经成功地使用LeakTracer在几个现实世界的程序中发现泄漏,我们的案例研究表明泄漏预测器可以高精度地定位泄漏对象。
{"title":"LeakTracer: Tracing leaks along the way","authors":"Hengyang Yu, Xiaohua Shi, Wei Feng","doi":"10.1109/SCAM.2015.7335414","DOIUrl":"https://doi.org/10.1109/SCAM.2015.7335414","url":null,"abstract":"Unnecessary references in managed languages, such as Java and C#, often cause memory leaks without any immediate symptoms. These leaks become manifest when the program has been running for a long time (usually several hours, days or even weeks). Garbage collectors cannot handle this situation, since it only reclaims objects that have no external references to them. Consequently, when the number of leaked objects becomes large, garbage collection frequency increases and program performance degrades. Ultimately, the program will crash. This paper introduces LeakTracer, a tool that helps diagnose memory leaks in managed languages. The core of LeakTracer is the use of a novel leak predictor, which not only considers object size and staleness as a whole to predict leaked objects, but also carefully adjusts their contributions to the leak possibility of an object, according to the careful observation of activities of common objects during their lifetimes. We have implemented LeakTracer in two parts: (1) an online object events tracker in the Apache Harmony DRL virtual machine, and (2) an offline analyzer embedding our predictor. We have successfully used LeakTracer to find leaks in several real-world programs, and our case studies show that leak predictor can pinpoint leaked objects with high accuracy.","PeriodicalId":192232,"journal":{"name":"2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-11-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134383456","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
A translation validation framework for symbolic value propagation based equivalence checking of FSMDAs 基于等价性检验的符号值传播翻译验证框架
K. Banerjee, C. Mandal, D. Sarkar
A compiler is a computer program which translates a source code into a target code, often with an objective to reduce the execution time and/or save critical resources. However, an error in the design or in the implementation of a compiler may result in software bugs in the target code obtained from that compiler. Translation validation is a formal verification approach for compilers whereby, each individual translation is followed by a validation phase which verifies that the target code produced correctly implements the source code. In this paper, we present a tool for translation validation of optimizing transformations of programs; the original and the transformed programs are modeled as Finite State Machines with Datapath having Arrays (FSMDAs) and a symbolic value propagation (SVP) based equivalence checking strategy is applied over this model to determine the correctness of the applied transformations. The tool has been demonstrated to handle uniform and non-uniform code motions, including code motions across loops, along with transformations which result in modification of control structures of programs. Moreover, arithmetic transformations such as, associative, commutative, distributive transformations, expression simplification, constant folding, etc., are also supported.
编译器是一种将源代码转换为目标代码的计算机程序,通常目的是减少执行时间和/或节省关键资源。但是,编译器的设计或实现中的错误可能会导致从该编译器获得的目标代码中的软件错误。翻译验证是针对编译器的一种正式的验证方法,通过这种方法,每个单独的翻译之后都有一个验证阶段,该阶段验证生成的目标代码是否正确地实现了源代码。在本文中,我们提出了一个程序优化转换的翻译验证工具;将原程序和转换后的程序建模为具有数据路径的有限状态机(fsmda),并在该模型上应用基于符号值传播(SVP)的等价性检查策略来确定所应用转换的正确性。该工具已被证明可以处理均匀和非均匀的代码运动,包括跨循环的代码运动,以及导致程序控制结构修改的转换。此外,还支持算术变换,如结合变换,交换变换,分配变换,表达式简化,常数折叠等。
{"title":"A translation validation framework for symbolic value propagation based equivalence checking of FSMDAs","authors":"K. Banerjee, C. Mandal, D. Sarkar","doi":"10.1109/SCAM.2015.7335421","DOIUrl":"https://doi.org/10.1109/SCAM.2015.7335421","url":null,"abstract":"A compiler is a computer program which translates a source code into a target code, often with an objective to reduce the execution time and/or save critical resources. However, an error in the design or in the implementation of a compiler may result in software bugs in the target code obtained from that compiler. Translation validation is a formal verification approach for compilers whereby, each individual translation is followed by a validation phase which verifies that the target code produced correctly implements the source code. In this paper, we present a tool for translation validation of optimizing transformations of programs; the original and the transformed programs are modeled as Finite State Machines with Datapath having Arrays (FSMDAs) and a symbolic value propagation (SVP) based equivalence checking strategy is applied over this model to determine the correctness of the applied transformations. The tool has been demonstrated to handle uniform and non-uniform code motions, including code motions across loops, along with transformations which result in modification of control structures of programs. Moreover, arithmetic transformations such as, associative, commutative, distributive transformations, expression simplification, constant folding, etc., are also supported.","PeriodicalId":192232,"journal":{"name":"2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-11-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125316317","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
Intent, tests, and release dependencies: Pragmatic recipes for source code integration 意图、测试和发布依赖关系:源代码集成的实用方法
M. Brandtner, P. Leitner, H. Gall
Continuous integration of source code changes, for example, via pull-request driven contribution channels, has become standard in many software projects. However, the decision to integrate source code changes into a release is complex and has to be taken by a software manager. In this work, we identify a set of three pragmatic recipes plus variations to support the decision making of integrating code contributions into a release. These recipes cover the isolation of source code changes, contribution of test code, and the linking of commits to issues. We analyze the development history of 21 open-source software projects, to evaluate whether, and to what extent, those recipes are followed in open-source projects. The results of our analysis showed that open-source projects largely follow recipes on a compliance level of > 75%. Hence, we conclude that the identified recipes plus variations can be seen as wide-spread relevant best-practices for source code integration.
源代码变更的持续集成,例如,通过拉取请求驱动的贡献通道,已经成为许多软件项目的标准。然而,将源代码更改集成到版本中的决定是复杂的,必须由软件经理做出。在这项工作中,我们确定了一组三种实用的方法和变体,以支持将代码贡献集成到发布中的决策。这些方法涵盖了源代码更改的隔离、测试代码的贡献以及提交到问题的链接。我们分析了21个开源软件项目的发展历史,以评估开源项目是否以及在多大程度上遵循了这些配方。我们的分析结果表明,开源项目在很大程度上遵循了75%以上的遵循水平。因此,我们得出结论,确定的配方加上变化可以被视为源代码集成的广泛传播的相关最佳实践。
{"title":"Intent, tests, and release dependencies: Pragmatic recipes for source code integration","authors":"M. Brandtner, P. Leitner, H. Gall","doi":"10.1109/SCAM.2015.7335397","DOIUrl":"https://doi.org/10.1109/SCAM.2015.7335397","url":null,"abstract":"Continuous integration of source code changes, for example, via pull-request driven contribution channels, has become standard in many software projects. However, the decision to integrate source code changes into a release is complex and has to be taken by a software manager. In this work, we identify a set of three pragmatic recipes plus variations to support the decision making of integrating code contributions into a release. These recipes cover the isolation of source code changes, contribution of test code, and the linking of commits to issues. We analyze the development history of 21 open-source software projects, to evaluate whether, and to what extent, those recipes are followed in open-source projects. The results of our analysis showed that open-source projects largely follow recipes on a compliance level of > 75%. Hence, we conclude that the identified recipes plus variations can be seen as wide-spread relevant best-practices for source code integration.","PeriodicalId":192232,"journal":{"name":"2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"52 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-11-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130452420","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}
引用次数: 0
On the comprehension of code clone visualizations: A controlled study using eye tracking 对代码克隆可视化的理解:一项使用眼动追踪的对照研究
Md. Sami Uddin, Varun Gaur, C. Gutwin, C. Roy
Code clone visualizations (CCVs) are graphical representations of clone detection results provided by various state-of-the-art command line and graphical analysis tools. In order to properly analyze and manipulate code clones within a target system, these visualizations must be easily and efficiently comprehensible. We conducted an eye-tracking study with 20 participants (expert, intermediate, and novice) to assess how well people can comprehend visualizations such as Scatter plots, Treemaps, and Hierarchical Dependency Graphs provided by VisCad, a recent clone visualization tool. The goals of the study were to find out what elements of the visualizations (e.g., colors, shapes, object positions) are most important for comprehension, and to identify common usage patterns for different groups. Our results help us understand how developers with different levels of expertise explore and navigate through the visualizations while performing specific tasks. Distinctive patterns of eye movements for different visualizations were found depending on the expertise of the participants. Color, shape and position information were found to play vital roles in comprehension of CCVs. Our results provide recommendations that can improve the implementation of visualization techniques in VisCad and other clone visualization systems.
代码克隆可视化(ccv)是由各种最先进的命令行和图形分析工具提供的克隆检测结果的图形表示。为了在目标系统中正确地分析和操作代码克隆,这些可视化必须易于和有效地理解。我们对20名参与者(专家、中级和新手)进行了一项眼球追踪研究,以评估人们对最近的克隆可视化工具VisCad提供的诸如散点图、树图和分层依赖图等可视化的理解程度。这项研究的目的是找出可视化的哪些元素(例如,颜色、形状、物体位置)对理解最重要,并确定不同群体的共同使用模式。我们的结果帮助我们理解具有不同专业水平的开发人员在执行特定任务时如何探索和导航可视化。根据参与者的专业知识,不同视觉化的不同眼动模式被发现。颜色、形状和位置信息对ccv的理解起着至关重要的作用。我们的结果提供了一些建议,可以改进VisCad和其他克隆可视化系统中可视化技术的实现。
{"title":"On the comprehension of code clone visualizations: A controlled study using eye tracking","authors":"Md. Sami Uddin, Varun Gaur, C. Gutwin, C. Roy","doi":"10.1109/SCAM.2015.7335412","DOIUrl":"https://doi.org/10.1109/SCAM.2015.7335412","url":null,"abstract":"Code clone visualizations (CCVs) are graphical representations of clone detection results provided by various state-of-the-art command line and graphical analysis tools. In order to properly analyze and manipulate code clones within a target system, these visualizations must be easily and efficiently comprehensible. We conducted an eye-tracking study with 20 participants (expert, intermediate, and novice) to assess how well people can comprehend visualizations such as Scatter plots, Treemaps, and Hierarchical Dependency Graphs provided by VisCad, a recent clone visualization tool. The goals of the study were to find out what elements of the visualizations (e.g., colors, shapes, object positions) are most important for comprehension, and to identify common usage patterns for different groups. Our results help us understand how developers with different levels of expertise explore and navigate through the visualizations while performing specific tasks. Distinctive patterns of eye movements for different visualizations were found depending on the expertise of the participants. Color, shape and position information were found to play vital roles in comprehension of CCVs. Our results provide recommendations that can improve the implementation of visualization techniques in VisCad and other clone visualization systems.","PeriodicalId":192232,"journal":{"name":"2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-11-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115138586","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
Improving prioritization of software weaknesses using security models with AVUS 使用带有AVUS的安全模型改进软件弱点的优先级
Stephan Renatus, Corrie Bartelheimer, Jörn Eichler
Testing tools for application security have become an integral part of secure development life-cycles. Despite their ability to spot important software weaknesses, the high number of findings require rigorous prioritization. Most testing tools provide generic ratings to support prioritization. Unfortunately, ratings from established tools lack context information especially with regard to the security requirements of respective components or source code. Thus experts often spend a great deal of time re-assessing the prioritization provided by these tools. This paper introduces our lightweight tool AVUS that adjusts context-free ratings of software weaknesses according to a user-defined security model. We also present a first evaluation applying AVUS to a well-known open source project and the findings of a popular, commercially available application security testing tool.
用于应用程序安全性的测试工具已经成为安全开发生命周期的一个组成部分。尽管他们有能力发现重要的软件弱点,但大量的发现需要严格的优先级排序。大多数测试工具提供通用评级来支持优先级划分。不幸的是,来自已建立工具的评级缺乏上下文信息,特别是关于各自组件或源代码的安全需求的信息。因此,专家经常花费大量时间重新评估这些工具提供的优先级。本文介绍了我们的轻量级工具AVUS,它根据用户定义的安全模型来调整与上下文无关的软件弱点评级。我们还介绍了将AVUS应用于一个知名开源项目的第一个评估,以及一个流行的、商业上可用的应用程序安全测试工具的结果。
{"title":"Improving prioritization of software weaknesses using security models with AVUS","authors":"Stephan Renatus, Corrie Bartelheimer, Jörn Eichler","doi":"10.1109/SCAM.2015.7335423","DOIUrl":"https://doi.org/10.1109/SCAM.2015.7335423","url":null,"abstract":"Testing tools for application security have become an integral part of secure development life-cycles. Despite their ability to spot important software weaknesses, the high number of findings require rigorous prioritization. Most testing tools provide generic ratings to support prioritization. Unfortunately, ratings from established tools lack context information especially with regard to the security requirements of respective components or source code. Thus experts often spend a great deal of time re-assessing the prioritization provided by these tools. This paper introduces our lightweight tool AVUS that adjusts context-free ratings of software weaknesses according to a user-defined security model. We also present a first evaluation applying AVUS to a well-known open source project and the findings of a popular, commercially available application security testing tool.","PeriodicalId":192232,"journal":{"name":"2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129756557","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
期刊
2015 IEEE 15th 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学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1