Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Ekeko plugin that provides support for Aspectj
Clojure Java AspectJ
branch: master
Failed to load latest commit information.
LICENSE.html Update to Eclipse Luna

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.


Install the prebuilt GASR plugin from the Eclipse update site:

Ensure dependencies Ekeko, AspectJ Development Tools, org.eclipse.jdt.astview and Counterclockwise are installed.

See Installing New Software for help on installing Eclipse plugins from an update site.

GASR has been tested against Eclipse Luna (4.4). Eclipse update site for AspectJ development snapshots that are Luna compatible:

Alternatively, the plugin can also be built from the EkekoAspectJ Eclipse project in this repository.


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

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

Something went wrong with that request. Please try again.