{"title":"The FermaT Maintenance Environment Tool Demonstration","authors":"Martin P. Ward","doi":"10.1109/SCAM.2009.23","DOIUrl":"https://doi.org/10.1109/SCAM.2009.23","url":null,"abstract":"The FermaT Maintenance Environment (FME) is a platform independent graphical user interface for the FermaT program transformation system. It is able to represent WSL code and apply FermaT transformations on single statements.","PeriodicalId":353579,"journal":{"name":"2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation","volume":"66 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117231926","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}
{"title":"thr2csp: Toward Transforming Threads into Communicating Sequential Processes","authors":"Robert Charles Lange, S. Mancoridis","doi":"10.1109/SCAM.2009.10","DOIUrl":"https://doi.org/10.1109/SCAM.2009.10","url":null,"abstract":"As multicore and heterogeneous multiprocessor platforms replace uniprocessor systems, software programs must be designed with a greater emphasis on concurrency. Threading has become the dominant paradigm of concurrent computation in the most popular programming languages. Large threaded programs are known to be difficult to implement correctly, comprehend, and maintain, while concurrent programs written in process algebraic paradigms of concurrency, such as communicating sequential processes, are known to be easier to analyze. This paper presents our initial work on reverse engineering threaded source code and transforming the code into functionally-equivalent message-passing code. The paper also explores future work needed to convert the message-passing code into communicating sequential processes.","PeriodicalId":353579,"journal":{"name":"2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation","volume":"53 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126364659","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}
{"title":"An Assessment of Type-3 Clones as Detected by State-of-the-Art Tools","authors":"Rebecca Tiarks, R. Koschke, Raimar Falke","doi":"10.1109/SCAM.2009.16","DOIUrl":"https://doi.org/10.1109/SCAM.2009.16","url":null,"abstract":"Code reuse through copying and pasting leads to so-called software clones. These clones can be roughly categorized into identical fragments (type-1 clones), fragments with parameter substitution (type-2 clones), and similar fragments that differ through modified,deleted, or added statements (type-3 clones). Although there has been extensive research on detecting clones, detection of type-3 clones is still an open research issue due to the inherent vaguenessin their definition. In this paper, we analyze type-3 clones detected by state-of-the-art tools and investigate type-3 clones in terms of their syntactic differences. Then, we derive their underlying semantic abstractions from their syntactic differences. Finally, we investigate whether there are any additional code characteristics that indicate that a tool-suggested clone candidate is a real type-3 clone from a human's perspective. Our findings can help developers of clone detectors to improve their tools.","PeriodicalId":353579,"journal":{"name":"2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation","volume":"130 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132635811","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}
{"title":"Lightweight Techniques for Tracking Unique Program Statements","authors":"Jaime Spacco, Chadd C. Williams","doi":"10.1109/SCAM.2009.19","DOIUrl":"https://doi.org/10.1109/SCAM.2009.19","url":null,"abstract":"Previous work on tracking source locations has focused on tracking lines through multiple revisions of software. In this paper, we explore a new technique for tracking statements, rather than lines, across multiple revisions of Java source code. We show that our statement-tracking technique achieves comparable accuracy for source code than the most accurate line-tracking techniques, while also safely handling all non-executable formatting changes, such as breaking a single statement across many lines, adding or removing whitespace, moving brackets, or re-ordering methods. Finally, we compare the performance of three of the current state-of-the-art techniques for tracking lines across revisions on a series of benchmarks, and discuss the strengths and weaknesses of each technique.","PeriodicalId":353579,"journal":{"name":"2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation","volume":"45 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128895108","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}
{"title":"Backporting Java 5 Code","authors":"T. Gutzmann, Tamara Steijger","doi":"10.1109/SCAM.2009.21","DOIUrl":"https://doi.org/10.1109/SCAM.2009.21","url":null,"abstract":"Java 5 has introduced a number of new syntactical language features that make development faster, easier, and safer. However, at the same time, it has also introduced downward incompatibilities: code written for Java 5 cannot be used on pre-Java 5 platforms. This tool demonstration presents a number of source-to-source transformations that backport source code written for the Java 5 platform to legacy platforms. Developers who are, for different reasons, still bound to legacy platforms can benefit with help of this tool from the new language features, and they can use thirdparty components written for more recent platforms. Compared to existing tools, ours is the first that can backport all new syntactical Java 5 language features while the user maintains full control of the source code.","PeriodicalId":353579,"journal":{"name":"2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation","volume":"109 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115380208","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}
{"title":"Static Estimation of Test Coverage","authors":"Tiago L. Alves, Joost Visser","doi":"10.1109/SCAM.2009.15","DOIUrl":"https://doi.org/10.1109/SCAM.2009.15","url":null,"abstract":"Test coverage is an important indicator for unit test quality. Tools such as Clover compute coverage by first instrumenting the code with logging functionality, and then logging which parts are executed during unit test runs. Since computation of test coverage is a dynamic analysis, it presupposes a working installation of the software. In the context of software quality assessment by an independent third party, a working installation is often not available. The evaluator may not have access to the required libraries or hardware platform. The installation procedure may not be automated or documented. In this paper, we propose a technique for estimating test coverage at method level through static analysis only. The technique uses slicing of static call graphs to estimate the dynamic test coverage. We explain the technique and its implementation. We validate the results of the static estimation by statistical comparison to values obtained through dynamic analysis using Clover. We found high correlation between static coverage estimation and real coverage at system level but closer analysis on package and class level reveals opportunities for further improvement.","PeriodicalId":353579,"journal":{"name":"2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131177980","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}
{"title":"Maintaining Fine-Grained Code Metadata Regardless of Moving, Copying and Merging","authors":"Christian R. Prause","doi":"10.1109/SCAM.2009.20","DOIUrl":"https://doi.org/10.1109/SCAM.2009.20","url":null,"abstract":"Source code metadata on a file-level granularity is too coarse for certain applications. But fine-grained metadata (e.g. line-by-line authorship) easily gets lost due to changes like merging, moving or copying code. Enabling metadata to survive code evolution provides valuable insights into program source code. This helps developers to understand the sources and opens up opportunities for advanced tools. We present a concept that utilizes different search heuristics to identify probable ancestors of source documents, and pair this with clone detection to locate origins of inserted code. Arbitrary kinds of metadata can then be linked to code sections and be preserved automatically while code evolves. We evaluate our approach using code from the Hydra and FreeCol projects, and sketch prospective applications.","PeriodicalId":353579,"journal":{"name":"2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation","volume":"432 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131920202","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}
{"title":"Concepts as Syntactic Sugar","authors":"Valentin David, M. Haveraaen","doi":"10.1109/SCAM.2009.26","DOIUrl":"https://doi.org/10.1109/SCAM.2009.26","url":null,"abstract":"The coming standard for C++ will contain language extensions. It can be expected that there will be some years between the release of the new standard and the time when most compilers will be compliant, like it happened for the 1998 standard. Concepts are an extension proposed for the new standard. We show how we can translate ConceptC++ code into pure C++03 using the C++ template mechanism. Such a translation tool could be used for example to port software written using a ConceptC++ compiler to architectures having only older compilers. Or a library written using concepts could be used by a project written in pure C++. The goal of this transformation is not to provide all capabilities of ConceptC++, but with restrictions we can afford, to be as simple as possible.","PeriodicalId":353579,"journal":{"name":"2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation","volume":"125 3","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132702584","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}
{"title":"A Value Analysis for C Programs","authors":"G. Canet, Pascal Cuoq, Benjamin Monate","doi":"10.1109/SCAM.2009.22","DOIUrl":"https://doi.org/10.1109/SCAM.2009.22","url":null,"abstract":"We demonstrate the value analysis of Frama-C. Frama-C is an Open Source static analysis framework for the C language. In Frama-C, each static analysis technique, approach or idea can be implemented as a new plug-in, with the opportunity to obtain information from other plug-ins, and to leave the verification of difficult properties to yet other plug-ins. The new analysis may in turn provide access to the data it has computed. The value analysis of Frama-C is a plug-in based on abstract interpretation. It computes and stores supersets of possible values for all the variables at each statement of the analyzed program. It handles pointers, arrays, structs, and heterogeneous pointer casts. Besides producing supersets of possible values for the variables at each point of the execution, the value analysis produces run-time-error alarms. An alarm is emitted for each operation in the analyzed program where the value analysis cannot guarantee that there will not be a run-time error.","PeriodicalId":353579,"journal":{"name":"2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131188100","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}
{"title":"A Metric Extraction Framework Based on a High-Level Description Language","authors":"E. Alikacem, H. Sahraoui","doi":"10.1109/SCAM.2009.27","DOIUrl":"https://doi.org/10.1109/SCAM.2009.27","url":null,"abstract":"Nowadays, many tools are available for metric extraction. However, extending these tools with new metrics or modifying the calculation of existing ones is often difficult, sometimes impossible. Indeed, many of them are black box tools. Others can be extended only by modifying third-party code. Moreover, metric specifications often lack precision, which leads to implementations that do not correspond necessarily to users’ expectations. In this paper, we propose a flexible approach for metric collection based on a metric description language that allows manipulating basic data extracted from the code. These data are mapped to a generic object-oriented meta-model that is language agnostic. This makes it easy to focus on the metric specification rather than language specific constructs. Metric specifications are interpreted automatically to extract their corresponding values for a target program.","PeriodicalId":353579,"journal":{"name":"2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation","volume":"136 ","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"113982640","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}