GASR ( General-purpose Aspectual Source code Reasoner ) is a tool for answering user-specified questions about the structure as well as the behavior of an aspect-oriented program. Examples range from " which pointcut definitions are overridden in a subtype? " over " which pointcuts have a join point shadow in an advice? " to " can these advices be executed consecutively? ". Such questions have to be specified as a logic query of which the conditions quantify over the program’s source code.
GASR owes its query language to the core.logic port to Clojure of Kanren, and its IDE integration to the Ekeko Eclipse plugin. The latter enables launching and scheduling program queries, as well as inspecting the solutions to a query.
See the API documentation for an overview of the predicates than can be used within a program query.
Slideshare hosts an earlier presentation on GASR.
The plugin can be built from the EkekoAspectJ Eclipse project in this repository.
Note: for annotations to be visible to GASR, their type definitions need to be on the AspectJ inpath (Project context menu item "AspectJ Tools" -> "Configure AspectJ Build path ..." )
Distributed under the Eclipse Public License (EPL version 1.0). See