首页 > 最新文献

2010 10th IEEE Working Conference on Source Code Analysis and Manipulation最新文献

英文 中文
Speeding Up Context-, Object- and Field-Sensitive SDG Generation 加快对环境、对象和领域敏感的可持续发展目标生成
Jürgen Graf
System dependence graphs (SDGs) are an established tool for precise interprocedural program analysis. We present new techniques for the efficient generation of SDGs for full Java, which are context-, field - and object-sensitive. We show that previous approaches to the generation of interprocedural dependencies for Java do not scale, as they interfere with the points-to analysis. Our new algorithm is based on the WALA framework and reduces time and memory consumption up to 90%, while maintaining precision.
系统依赖图(sdg)是一种成熟的精确程序间分析工具。我们提出了为全Java高效生成sdg的新技术,这些技术是上下文敏感、字段敏感和对象敏感的。我们表明,以前为Java生成过程间依赖关系的方法是不可伸缩的,因为它们干扰了对点的分析。我们的新算法基于WALA框架,在保持精度的同时减少了高达90%的时间和内存消耗。
{"title":"Speeding Up Context-, Object- and Field-Sensitive SDG Generation","authors":"Jürgen Graf","doi":"10.1109/SCAM.2010.9","DOIUrl":"https://doi.org/10.1109/SCAM.2010.9","url":null,"abstract":"System dependence graphs (SDGs) are an established tool for precise interprocedural program analysis. We present new techniques for the efficient generation of SDGs for full Java, which are context-, field - and object-sensitive. We show that previous approaches to the generation of interprocedural dependencies for Java do not scale, as they interfere with the points-to analysis. Our new algorithm is based on the WALA framework and reduces time and memory consumption up to 90%, while maintaining precision.","PeriodicalId":222204,"journal":{"name":"2010 10th IEEE Working Conference on Source Code Analysis and Manipulation","volume":"47 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133994835","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}
引用次数: 32
The Fika Parser Generator Fika解析器生成器
Pub Date : 2010-09-12 DOI: 10.1109/SCAM.2010.27
Michal Píse
Parser generators automate conversion of a context-free grammar into an executable parser and therefore increase developers’ productivity. However, as soon as the entire process of parser development is concerned, their overall usefulness slightly diminishes because the development of the grammar itself is not addressed at all: every grammar is implicitly expected to be written from scratch and the only available mechanism of grammar reuse is copy and paste. In this paper, we briefly describe the Fika parser generator, our tool that facilitates grammar reuse by modularizing context-free grammar descriptions and providing an inheritance-like module reuse primitive.
解析器生成器自动将上下文无关的语法转换为可执行的解析器,从而提高开发人员的工作效率。然而,一旦涉及到解析器开发的整个过程,它们的总体有用性就会略微降低,因为语法本身的开发根本没有得到解决:每个语法都隐含地期望从头编写,语法重用的唯一可用机制是复制和粘贴。在本文中,我们将简要描述Fika解析器生成器,这是我们的工具,它通过模块化与上下文无关的语法描述和提供类似继承的模块重用原语来促进语法重用。
{"title":"The Fika Parser Generator","authors":"Michal Píse","doi":"10.1109/SCAM.2010.27","DOIUrl":"https://doi.org/10.1109/SCAM.2010.27","url":null,"abstract":"Parser generators automate conversion of a context-free grammar into an executable parser and therefore increase developers’ productivity. However, as soon as the entire process of parser development is concerned, their overall usefulness slightly diminishes because the development of the grammar itself is not addressed at all: every grammar is implicitly expected to be written from scratch and the only available mechanism of grammar reuse is copy and paste. In this paper, we briefly describe the Fika parser generator, our tool that facilitates grammar reuse by modularizing context-free grammar descriptions and providing an inheritance-like module reuse primitive.","PeriodicalId":222204,"journal":{"name":"2010 10th IEEE Working Conference on Source Code Analysis and Manipulation","volume":"55 2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123434989","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
Why Source Code Analysis and Manipulation Will Always be Important 为什么源代码分析和操作总是很重要
Pub Date : 2010-09-12 DOI: 10.1109/SCAM.2010.28
M. Harman
This paper makes a case for Source Code Analysis and Manipulation. The paper argues that it will not only remain important, but that its importance will continue to grow. This argument is partly based on the `law' of tendency to executability, which the paper introduces. The paper also makes a case for Source Code Analysis purely for the sake of analysis. Analysis for its own sake may not be merely indulgent introspection. The paper argues that it may ultimately prove to be hugely important as source code gradually gathers together all aspects of human socioeconomic and governmental processes and systems. The paper is a written to accompany the author's keynote presentation at the 10th International Working Conference on Source Code Analysis and Manipulation (SCAM 2010). As such, the body of the paper adopts a polemic, first person singular prose style and takes the form of an extended position paper.
本文以源代码分析和操作为例。论文认为,它不仅将保持重要,而且其重要性将继续增长。这一论点部分是基于本文所介绍的可执行性倾向的“规律”。本文还为源代码分析提供了一个纯粹为了分析的案例。为分析本身而分析可能不仅仅是放纵的自省。这篇论文认为,随着源代码逐渐汇集人类社会经济和政府过程和系统的各个方面,它可能最终被证明是非常重要的。这篇论文是为了配合作者在第十届源代码分析和操作国际工作会议(SCAM 2010)上的主题演讲而写的。因此,论文的主体采用了辩论性的第一人称单数散文风格,并采取了扩展立场文件的形式。
{"title":"Why Source Code Analysis and Manipulation Will Always be Important","authors":"M. Harman","doi":"10.1109/SCAM.2010.28","DOIUrl":"https://doi.org/10.1109/SCAM.2010.28","url":null,"abstract":"This paper makes a case for Source Code Analysis and Manipulation. The paper argues that it will not only remain important, but that its importance will continue to grow. This argument is partly based on the `law' of tendency to executability, which the paper introduces. The paper also makes a case for Source Code Analysis purely for the sake of analysis. Analysis for its own sake may not be merely indulgent introspection. The paper argues that it may ultimately prove to be hugely important as source code gradually gathers together all aspects of human socioeconomic and governmental processes and systems. The paper is a written to accompany the author's keynote presentation at the 10th International Working Conference on Source Code Analysis and Manipulation (SCAM 2010). As such, the body of the paper adopts a polemic, first person singular prose style and takes the form of an extended position paper.","PeriodicalId":222204,"journal":{"name":"2010 10th IEEE Working Conference on Source Code Analysis and Manipulation","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132543323","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}
引用次数: 64
Evaluating Code Clone Genealogies at Release Level: An Empirical Study 在发布级别评估代码克隆谱系:一项实证研究
Pub Date : 2010-09-12 DOI: 10.1109/SCAM.2010.32
Ripon K. Saha, M. Asaduzzaman, M. Zibran, C. Roy, Kevin A. Schneider
Code clone genealogies show how clone groups evolve with the evolution of the associated software system, and thus could provide important insights on the maintenance implications of clones. In this paper, we provide an in-depth empirical study for evaluating clone genealogies in evolving open source systems at the release level. We develop a clone genealogy extractor, examine 17 open source C, Java, C++ and C# systems of diverse varieties and study different dimensions of how clone groups evolve with the evolution of the software systems. Our study shows that majority of the clone groups of the clone genealogies either propagate without any syntactic changes or change consistently in the subsequent releases, and that many of the genealogies remain alive during the evolution. These findings seem to be consistent with the findings of a previous study that clones may not be as detrimental in software maintenance as believed to be (at least by many of us), and that instead of aggressively refactoring clones, we should possibly focus on tracking and managing clones during the evolution of software systems.
代码克隆谱系显示了克隆组是如何随着相关软件系统的演化而演化的,因此可以提供关于克隆的维护含义的重要见解。在本文中,我们提供了一个深入的实证研究,以评估在不断发展的开源系统在发布级别的克隆谱系。我们开发了一个克隆谱系提取器,研究了17个不同品种的开源C、Java、c++和c#系统,并从不同的维度研究了克隆群体如何随着软件系统的进化而进化。我们的研究表明,克隆系谱中的大多数克隆组要么在没有任何语法变化的情况下繁殖,要么在随后的版本中持续变化,并且许多系谱在进化过程中仍然存在。这些发现似乎与之前的一项研究结果一致,即克隆在软件维护中可能不像人们认为的那样有害(至少我们中的许多人是这样认为的),而不是积极地重构克隆,我们应该在软件系统的进化过程中关注于跟踪和管理克隆。
{"title":"Evaluating Code Clone Genealogies at Release Level: An Empirical Study","authors":"Ripon K. Saha, M. Asaduzzaman, M. Zibran, C. Roy, Kevin A. Schneider","doi":"10.1109/SCAM.2010.32","DOIUrl":"https://doi.org/10.1109/SCAM.2010.32","url":null,"abstract":"Code clone genealogies show how clone groups evolve with the evolution of the associated software system, and thus could provide important insights on the maintenance implications of clones. In this paper, we provide an in-depth empirical study for evaluating clone genealogies in evolving open source systems at the release level. We develop a clone genealogy extractor, examine 17 open source C, Java, C++ and C# systems of diverse varieties and study different dimensions of how clone groups evolve with the evolution of the software systems. Our study shows that majority of the clone groups of the clone genealogies either propagate without any syntactic changes or change consistently in the subsequent releases, and that many of the genealogies remain alive during the evolution. These findings seem to be consistent with the findings of a previous study that clones may not be as detrimental in software maintenance as believed to be (at least by many of us), and that instead of aggressively refactoring clones, we should possibly focus on tracking and managing clones during the evolution of software systems.","PeriodicalId":222204,"journal":{"name":"2010 10th IEEE Working Conference on Source Code Analysis and Manipulation","volume":"50 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114684232","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}
引用次数: 70
Refactoring Support for Modularity Maintenance in Erlang 在Erlang中对模块化维护的重构支持
Pub Date : 2010-09-12 DOI: 10.1109/SCAM.2010.17
Huiqing Li, S. Thompson
Low coupling between modules and high cohesion inside each module are key features of good software architecture. Systems written in modern programming languages generally start with some reasonably well-designed module structure, however with continuous feature additions, modifications and bug fixes, software modularity gradually deteriorates. So, there is a need for incremental improvements to modularity to avoid the situation when the structure of the system becomes too complex to maintain. We demonstrate how Wrangler, a general-purpose refactoring tool for Erlang, can be used to maintain and improve the modularity of programs written in Erlang without dramatically changing the existing module structure. We identify a set of "modularity smells", and show how they can be detected by Wrangler and removed by way of a variety of refactorings implemented in Wrangler. Validation of the approach and usefulness of the tool are demonstrated by case studies.
模块之间的低耦合和模块内部的高内聚是良好软件体系结构的关键特征。用现代编程语言编写的系统通常从一些设计合理的良好模块结构开始,但是随着功能的不断添加、修改和错误修复,软件模块化逐渐恶化。因此,有必要对模块化进行渐进式改进,以避免系统结构变得过于复杂而无法维护的情况。我们将演示如何使用Wrangler (Erlang的通用重构工具)来维护和改进用Erlang编写的程序的模块化,而无需显著改变现有的模块结构。我们确定了一组“模块化气味”,并展示了Wrangler如何检测它们,并通过在Wrangler中实现的各种重构来消除它们。案例研究证明了方法的有效性和工具的实用性。
{"title":"Refactoring Support for Modularity Maintenance in Erlang","authors":"Huiqing Li, S. Thompson","doi":"10.1109/SCAM.2010.17","DOIUrl":"https://doi.org/10.1109/SCAM.2010.17","url":null,"abstract":"Low coupling between modules and high cohesion inside each module are key features of good software architecture. Systems written in modern programming languages generally start with some reasonably well-designed module structure, however with continuous feature additions, modifications and bug fixes, software modularity gradually deteriorates. So, there is a need for incremental improvements to modularity to avoid the situation when the structure of the system becomes too complex to maintain. We demonstrate how Wrangler, a general-purpose refactoring tool for Erlang, can be used to maintain and improve the modularity of programs written in Erlang without dramatically changing the existing module structure. We identify a set of \"modularity smells&quot, and show how they can be detected by Wrangler and removed by way of a variety of refactorings implemented in Wrangler. Validation of the approach and usefulness of the tool are demonstrated by case studies.","PeriodicalId":222204,"journal":{"name":"2010 10th IEEE Working Conference on Source Code Analysis and Manipulation","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130061080","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
Learning from 6,000 Projects: Mining Models in the Large 从6000个项目中学习:大范围的挖掘模型
Pub Date : 2010-09-12 DOI: 10.1109/SCAM.2010.23
A. Zeller
Models - abstract and simple descriptions of some artifact - are the backbone of all software engineering activities. While writing models is hard, existing code can serve as a source for abstract descriptions of how software behaves. To infer correct usage, code analysis needs usage examples, though, the more, the better. We have built a lightweight parser that efficiently extracts API usage models from source code - models that can then be used to detect anomalies. Applied on the 200 million lines of code of the Gen too Linux distribution, we would extract more than 15 million API constraints, encoding and abstracting the "wisdom of Linux code".
模型——一些工件的抽象和简单描述——是所有软件工程活动的支柱。虽然编写模型很困难,但是现有的代码可以作为抽象描述软件行为的来源。为了推断出正确的用法,代码分析需要用法示例,尽管越多越好。我们已经构建了一个轻量级的解析器,它可以有效地从源代码中提取API使用模型——然后可以使用这些模型来检测异常。应用于gentoo Linux发行版的2亿行代码,我们将提取超过1500万个API约束,编码和抽象“Linux代码的智慧”。
{"title":"Learning from 6,000 Projects: Mining Models in the Large","authors":"A. Zeller","doi":"10.1109/SCAM.2010.23","DOIUrl":"https://doi.org/10.1109/SCAM.2010.23","url":null,"abstract":"Models - abstract and simple descriptions of some artifact - are the backbone of all software engineering activities. While writing models is hard, existing code can serve as a source for abstract descriptions of how software behaves. To infer correct usage, code analysis needs usage examples, though, the more, the better. We have built a lightweight parser that efficiently extracts API usage models from source code - models that can then be used to detect anomalies. Applied on the 200 million lines of code of the Gen too Linux distribution, we would extract more than 15 million API constraints, encoding and abstracting the \"wisdom of Linux code\".","PeriodicalId":222204,"journal":{"name":"2010 10th IEEE Working Conference on Source Code Analysis and Manipulation","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134097160","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
Visualization of C++ Template Metaprograms c++模板元程序的可视化
Pub Date : 2010-09-12 DOI: 10.1109/SCAM.2010.16
Zoltan Borok-Nagy, Viktor Majer, József Mihalicza, Norbert Pataki, Z. Porkoláb
Template metaprograms have become an essential part of today's C++ programs: with proper template definitions we can force the C++ compiler to execute algorithms at compilation time. Among the application areas of template metaprograms are the expression templates, static interface checking, code optimization with adaptation, language embedding and active libraries. Despite all of its already proven benefits and numerous successful applications there are surprisingly few tools for creating, supporting, and analyzing C++ template metaprograms. As metaprograms are executed at compilation time they are even harder to understand. In this paper we present a code visualization tool, which is utilizing Tem plight, our previously developed C++ template metaprogram debugger. Using the tool it is possible to visualize the instantiation chain of C++ templates and follow the execution of metaprograms. Various presentation layers, filtering of template instances and step-by-step replay of the instantiations are supported. Our tool can help to test, optimize, maintain C++ template metaprograms, and can enhance their acceptance in the software industry.
模板元程序已经成为当今c++程序的重要组成部分:通过适当的模板定义,我们可以强制c++编译器在编译时执行算法。模板元程序的应用领域包括表达式模板、静态接口检查、自适应代码优化、语言嵌入和活动库。尽管已经证明了c++模板元程序的所有优点和许多成功的应用程序,但令人惊讶的是,用于创建、支持和分析c++模板元程序的工具很少。由于元程序是在编译时执行的,因此更难以理解。本文利用自己开发的c++模板元程序调试器Tem的特点,开发了一种代码可视化工具。使用该工具可以可视化c++模板的实例化链,并跟踪元程序的执行。支持各种表示层、模板实例过滤和实例化的逐步重播。我们的工具可以帮助测试、优化、维护c++模板元程序,并且可以提高它们在软件行业中的接受度。
{"title":"Visualization of C++ Template Metaprograms","authors":"Zoltan Borok-Nagy, Viktor Majer, József Mihalicza, Norbert Pataki, Z. Porkoláb","doi":"10.1109/SCAM.2010.16","DOIUrl":"https://doi.org/10.1109/SCAM.2010.16","url":null,"abstract":"Template metaprograms have become an essential part of today's C++ programs: with proper template definitions we can force the C++ compiler to execute algorithms at compilation time. Among the application areas of template metaprograms are the expression templates, static interface checking, code optimization with adaptation, language embedding and active libraries. Despite all of its already proven benefits and numerous successful applications there are surprisingly few tools for creating, supporting, and analyzing C++ template metaprograms. As metaprograms are executed at compilation time they are even harder to understand. In this paper we present a code visualization tool, which is utilizing Tem plight, our previously developed C++ template metaprogram debugger. Using the tool it is possible to visualize the instantiation chain of C++ templates and follow the execution of metaprograms. Various presentation layers, filtering of template instances and step-by-step replay of the instantiations are supported. Our tool can help to test, optimize, maintain C++ template metaprograms, and can enhance their acceptance in the software industry.","PeriodicalId":222204,"journal":{"name":"2010 10th IEEE Working Conference on Source Code Analysis and Manipulation","volume":"93 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121116019","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
Effective Static Analysis to Find Concurrency Bugs in Java 有效的静态分析发现Java中的并发错误
Pub Date : 2010-09-12 DOI: 10.1109/SCAM.2010.20
Zhi Da Luo, L. Hillis, R. Das, Y. Qi
Multithreading and concurrency are core features of the Java language. However, writing a correct concurrent program is notoriously difficult and error prone. Therefore, developing effective techniques to find concurrency bugs is very important. Existing static analysis techniques for finding concurrency bugs either sacrifice precision for performance, leading to many false positives, or require sophisticated analysis that incur significant overhead. In this paper, we present a precise and efficient static concurrency bugs detector building upon the Eclipse JDT and the open source WALA toolkit (which provides advanced static analysis capabilities). Our detector uses different implementation strategies to consider different types of concurrency bugs. We either utilize JDT to syntactically examine source code, or leverage WALA to perform interprocedural data flow analysis. We describe a variety of novel heuristics and enhancements to existing analysis techniques which make our detector more practical, in terms of accuracy and performance. We also present an effective approach to create inter-procedural data flow analysis using WALA for complex analysis. Finally we justify our claims by presenting the results of applying our detector to a range of real-world applications and comparing our detector with other tools.
多线程和并发是Java语言的核心特性。然而,编写一个正确的并发程序是出了名的困难和容易出错。因此,开发有效的技术来发现并发错误是非常重要的。现有的用于查找并发性错误的静态分析技术,要么牺牲精度以换取性能,导致许多误报,要么需要复杂的分析,从而产生巨大的开销。在本文中,我们在Eclipse JDT和开源WALA工具包(提供高级静态分析功能)的基础上提出了一个精确而高效的静态并发错误检测器。我们的检测器使用不同的实现策略来考虑不同类型的并发错误。我们可以利用JDT对源代码进行语法检查,或者利用WALA执行过程间数据流分析。我们描述了各种新的启发式和增强现有的分析技术,使我们的检测器更实用,在准确性和性能方面。我们还提出了一种使用WALA进行复杂分析的有效方法来创建过程间数据流分析。最后,我们通过展示将我们的检测器应用于一系列实际应用的结果并将我们的检测器与其他工具进行比较来证明我们的主张。
{"title":"Effective Static Analysis to Find Concurrency Bugs in Java","authors":"Zhi Da Luo, L. Hillis, R. Das, Y. Qi","doi":"10.1109/SCAM.2010.20","DOIUrl":"https://doi.org/10.1109/SCAM.2010.20","url":null,"abstract":"Multithreading and concurrency are core features of the Java language. However, writing a correct concurrent program is notoriously difficult and error prone. Therefore, developing effective techniques to find concurrency bugs is very important. Existing static analysis techniques for finding concurrency bugs either sacrifice precision for performance, leading to many false positives, or require sophisticated analysis that incur significant overhead. In this paper, we present a precise and efficient static concurrency bugs detector building upon the Eclipse JDT and the open source WALA toolkit (which provides advanced static analysis capabilities). Our detector uses different implementation strategies to consider different types of concurrency bugs. We either utilize JDT to syntactically examine source code, or leverage WALA to perform interprocedural data flow analysis. We describe a variety of novel heuristics and enhancements to existing analysis techniques which make our detector more practical, in terms of accuracy and performance. We also present an effective approach to create inter-procedural data flow analysis using WALA for complex analysis. Finally we justify our claims by presenting the results of applying our detector to a range of real-world applications and comparing our detector with other tools.","PeriodicalId":222204,"journal":{"name":"2010 10th IEEE Working Conference on Source Code Analysis and Manipulation","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129706189","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
New Conceptual Coupling and Cohesion Metrics for Object-Oriented Systems 面向对象系统耦合和内聚度量的新概念
Pub Date : 2010-09-12 DOI: 10.1109/SCAM.2010.14
Bela Ujhazi, R. Ferenc, D. Poshyvanyk, T. Gyimóthy
The paper presents two novel conceptual metrics for measuring coupling and cohesion in software systems. Our first metric, Conceptual Coupling between Object classes (CCBO), is based on the well-known CBO coupling metric, while the other metric, Conceptual Lack of Cohesion on Methods (CLCOM5), is based on the LCOM5 cohesion metric. One advantage of the proposed conceptual metrics is that they can be computed in a simpler (and in many cases, programming language independent) way as compared to some of the structural metrics. We empirically studied CCBO and CLCOM5 for predicting fault-proneness of classes in a large open source system and compared these metrics with a host of existing structural and conceptual metrics for the same task. As the result, we found that the proposed conceptual metrics, when used in conjunction, can predict bugs nearly as precisely as the 58 structural metrics available in the Columbus source code quality framework and can be effectively combined with these metrics to improve bug prediction.
本文提出了两个新的度量软件系统耦合和内聚的概念度量。我们的第一个度量,对象类之间的概念耦合(CCBO),是基于众所周知的CBO耦合度量,而另一个度量,方法上的概念缺乏内聚(CLCOM5),是基于LCOM5内聚度量。所提出的概念度量的一个优点是,与某些结构度量相比,它们可以以更简单的方式计算(在许多情况下,与编程语言无关)。我们在经验上研究了CCBO和CLCOM5,用于预测大型开源系统中类的错误倾向,并将这些指标与用于相同任务的大量现有结构和概念指标进行了比较。结果,我们发现,当结合使用时,所提出的概念性度量标准几乎可以像哥伦布源代码质量框架中58个可用的结构度量标准一样精确地预测bug,并且可以有效地与这些度量标准结合起来以改进bug预测。
{"title":"New Conceptual Coupling and Cohesion Metrics for Object-Oriented Systems","authors":"Bela Ujhazi, R. Ferenc, D. Poshyvanyk, T. Gyimóthy","doi":"10.1109/SCAM.2010.14","DOIUrl":"https://doi.org/10.1109/SCAM.2010.14","url":null,"abstract":"The paper presents two novel conceptual metrics for measuring coupling and cohesion in software systems. Our first metric, Conceptual Coupling between Object classes (CCBO), is based on the well-known CBO coupling metric, while the other metric, Conceptual Lack of Cohesion on Methods (CLCOM5), is based on the LCOM5 cohesion metric. One advantage of the proposed conceptual metrics is that they can be computed in a simpler (and in many cases, programming language independent) way as compared to some of the structural metrics. We empirically studied CCBO and CLCOM5 for predicting fault-proneness of classes in a large open source system and compared these metrics with a host of existing structural and conceptual metrics for the same task. As the result, we found that the proposed conceptual metrics, when used in conjunction, can predict bugs nearly as precisely as the 58 structural metrics available in the Columbus source code quality framework and can be effectively combined with these metrics to improve bug prediction.","PeriodicalId":222204,"journal":{"name":"2010 10th IEEE Working Conference on Source Code Analysis and Manipulation","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129018736","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}
引用次数: 67
Validating the Use of Topic Models for Software Evolution 验证主题模型在软件演化中的应用
Pub Date : 2010-09-12 DOI: 10.1109/SCAM.2010.13
Stephen W. Thomas, Bram Adams, A. Hassan, D. Blostein
Topics are collections of words that co-occur frequently in a text corpus. Topics have been found to be effective tools for describing the major themes spanning a corpus. Using such topics to describe the evolution of a software system’s source code promises to be extremely useful for development tasks such as maintenance and re-engineering. However, no one has yet examined whether these automatically discovered topics accurately describe the evolution of source code, and thus it is not clear whether topic models are a suitable tool for this task. In this paper, we take a first step towards deter-mining the suitability of topic models in the analysis of software evolution by performing a qualitative case study on 12 releases of JHot Draw, a well studied and documented system. We define and compute various metrics on the identified topics and manually investigate how the metrics evolve over time. We find that topic evolutions are characterizable through spikes and drops in their metric values, and that the large majority of these spikes and drops are indeed caused by actual change activity in the source code. We are thus encouraged by the use of topic models as a tool for analyzing the evolution of software.
主题是在文本语料库中经常同时出现的单词的集合。主题已被发现是描述跨越语料库的主要主题的有效工具。使用这样的主题来描述软件系统源代码的演变,对于诸如维护和再工程之类的开发任务非常有用。然而,还没有人研究过这些自动发现的主题是否准确地描述了源代码的演变,因此还不清楚主题模型是否是这项任务的合适工具。在本文中,我们通过对JHot Draw(一个经过充分研究和记录的系统)的12个版本进行定性案例研究,向确定主题模型在软件演化分析中的适用性迈出了第一步。我们在确定的主题上定义和计算各种度量标准,并手动调查度量标准如何随时间发展。我们发现主题的演变可以通过其度量值的起伏来表征,并且这些起伏中的大部分确实是由源代码中的实际更改活动引起的。因此,我们被主题模型作为分析软件发展的工具的使用所鼓舞。
{"title":"Validating the Use of Topic Models for Software Evolution","authors":"Stephen W. Thomas, Bram Adams, A. Hassan, D. Blostein","doi":"10.1109/SCAM.2010.13","DOIUrl":"https://doi.org/10.1109/SCAM.2010.13","url":null,"abstract":"Topics are collections of words that co-occur frequently in a text corpus. Topics have been found to be effective tools for describing the major themes spanning a corpus. Using such topics to describe the evolution of a software system’s source code promises to be extremely useful for development tasks such as maintenance and re-engineering. However, no one has yet examined whether these automatically discovered topics accurately describe the evolution of source code, and thus it is not clear whether topic models are a suitable tool for this task. In this paper, we take a first step towards deter-mining the suitability of topic models in the analysis of software evolution by performing a qualitative case study on 12 releases of JHot Draw, a well studied and documented system. We define and compute various metrics on the identified topics and manually investigate how the metrics evolve over time. We find that topic evolutions are characterizable through spikes and drops in their metric values, and that the large majority of these spikes and drops are indeed caused by actual change activity in the source code. We are thus encouraged by the use of topic models as a tool for analyzing the evolution of software.","PeriodicalId":222204,"journal":{"name":"2010 10th IEEE Working Conference on Source Code Analysis and Manipulation","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"120959631","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}
引用次数: 87
期刊
2010 10th IEEE Working Conference on Source Code Analysis and Manipulation
全部 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