Skip to content
Ekeko plugin that provides support for Aspectj
Clojure Java AspectJ
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

About GASR

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.


Our SCAM13 paper titled Aspectual Source Code Analysis with GASR introduces GASR. The paper's experimental data can be found in a markdown-formatted file.

See the GASR wiki for some example program queries.

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.


Ensure that the dependencies AspectJ Development Tools and and Counterclockwise are installed. (See Installing New Software for help on installing Eclipse plugins from an update site.)

The plugin can be built from the EkekoAspectJ Eclipse project in this repository.

GASR has been tested against Eclipse Luna (4.4) and Eclipse Mars (4.5).

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 ..." )


Copyright © 2012-2014 GASR contributors: Coen De Roover, Johan Fabry, Carlos Noguera

Distributed under the Eclipse Public License (EPL version 1.0). See LICENSE.html.

Something went wrong with that request. Please try again.