Abstract:Abstract-Program queries play an important role in several software evolution tasks like program comprehension, impact analysis, or the automated identification of anti-patterns for complex refactoring operations. A central artifact of these tasks is the reverse engineered program model built up from the source code (usually an Abstract Semantic Graph, ASG), which is traditionally post-processed by dedicated, hand-coded queries. Our paper investigates the use of the popular industrial Eclipse Modeling Framewor… Show more
“…This renders them attractive for prototyping development tools. Comparisons of the expressiveness of some of these languages exist [57,58], but they are not yet comprehensive.…”
• We argue for a general-purpose source code analysis tool that is aware of aspects.• We present the logic program querying tool GASR, the first such tool..• We discuss its implementation along with its library of logical predicates.• We show how it can automatically verify previously published aspectual assumptions.
AbstractAspect-oriented programming languages extend existing languages with new features for supporting modularization of crosscutting concerns. These features however make existing source code analysis tools unable to reason over this code. Consequently, all code analysis efforts of aspect-oriented code that we are aware of have either built limited analysis tools or were performed manually. Given the significant complexity of building them or manual analysis, a lot of duplication of effort could have been avoided by using a general-purpose tool.To address this, in this paper we present Gasr: a source code analysis tool that reasons over AspectJ source code, which may contain metadata in the form of annotations. Gasr provides multiple kinds of analyses that are general enough such that they are reusable, tailorable and can reason over annotations. We demonstrate the use of Gasr in two ways: we first automate the recognition of previously identified aspectual source code assumptions. Second, we turn implicit assumptions into explicit assumptions through annotations and automate their verification. In both uses Gasr performs detection and verification of aspect assumptions on two well-known case studies that were manually investigated in earlier work. Gasr finds already known aspect assumptions and adds instances that had been previously overlooked.
“…This renders them attractive for prototyping development tools. Comparisons of the expressiveness of some of these languages exist [57,58], but they are not yet comprehensive.…”
• We argue for a general-purpose source code analysis tool that is aware of aspects.• We present the logic program querying tool GASR, the first such tool..• We discuss its implementation along with its library of logical predicates.• We show how it can automatically verify previously published aspectual assumptions.
AbstractAspect-oriented programming languages extend existing languages with new features for supporting modularization of crosscutting concerns. These features however make existing source code analysis tools unable to reason over this code. Consequently, all code analysis efforts of aspect-oriented code that we are aware of have either built limited analysis tools or were performed manually. Given the significant complexity of building them or manual analysis, a lot of duplication of effort could have been avoided by using a general-purpose tool.To address this, in this paper we present Gasr: a source code analysis tool that reasons over AspectJ source code, which may contain metadata in the form of annotations. Gasr provides multiple kinds of analyses that are general enough such that they are reusable, tailorable and can reason over annotations. We demonstrate the use of Gasr in two ways: we first automate the recognition of previously identified aspectual source code assumptions. Second, we turn implicit assumptions into explicit assumptions through annotations and automate their verification. In both uses Gasr performs detection and verification of aspect assumptions on two well-known case studies that were manually investigated in earlier work. Gasr finds already known aspect assumptions and adds instances that had been previously overlooked.
“…After the first round of our experiments described in [4], it turned out that all antipatterns can be evaluated by our selection of tools effectively. In order to find the limits of the approaches, we selected two additional, more complex antipatterns requiring additional capabilities.…”
Section: Motivationmentioning
confidence: 99%
“…This article is based on a conference paper [4] with extensions along four directions: two new types of anti-pattern queries were implemented, which are different from previous ones in their complexity and nature; OCL queries were included in the study as a fifth approach; the size of subject programs were increased from 1.9 M to 10 M lines of code, including three large programs (over 1 M lines of code each) to experiment with the limitations of the approaches; and the evaluation was extended, among others, with model and query metrics and with a lessons learned section.…”
a b s t r a c tContext: Program queries play an important role in several software evolution tasks like program comprehension, impact analysis, or the automated identification of anti-patterns for complex refactoring operations. A central artifact of these tasks is the reverse engineered program model built up from the source code (usually an Abstract Semantic Graph, ASG), which is traditionally post-processed by dedicated, hand-coded queries. Objective: Our paper investigates the costs and benefits of using the popular industrial Eclipse Modeling Framework (EMF) as an underlying representation of program models processed by four different general-purpose model query techniques based on native Java code, OCL evaluation and (incremental) graph pattern matching. Method: We provide in-depth comparison of these techniques on the source code of 28 Java projects using anti-pattern queries taken from refactoring operations in different usage profiles. Results: Our results show that general purpose model queries can outperform hand-coded queries by 2-3 orders of magnitude, with the trade-off of an increased in memory consumption and model load time of up to an order of magnitude. Conclusion: The measurement results of usage profiles can be used as guidelines for selecting the appropriate query technologies in concrete scenarios.
“…That was in code level only. In 2014 [6] authors evaluated different query approaches to locate anti-patterns for refactoring Java programs. In a traditional setup, they use code analysis tool called Columbus to optimize Abstract Semantic Graph and processed by hand-coded visitor queries.…”
Section: Related Workmentioning
confidence: 99%
“…There are many works introduce to detect only special problems like in references [1], [2] and [3]. In addition, there were many works for the general problems detection such as in references [4], [5] and [6], but our proposed method covered all the informal problems (special and general). In addition, Using Formal methods languages like Event-B can be support mathematical reasoning required for detecting this kind of problems.…”
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.