Detecting package cycles within eclipse

Java projects are tipically structured in packages which logically depend each from another. A logical dependency between two packages exists whenever elements contained in the first package concretely depend from elements of the second (or vice-versa).

Concrete dependencies are of 4 types:

Concrete dependencies can be detected by statically analyzing source code. Once identified, they can be used to derive logical dependencies between packages.

The goal of this project is to build an Eclipse plugin that detects cyclic dependencies within a project.

This can be done in two ways:

The first approach can be implemented by building an algorithm that queries the Eclipse JDT model (using SearchEngine API: javadoc, example). The second can be implemented by building a tool in Pharo smalltalk on top of Moose, a powerful platform for software and data analysis.

Both approaches are equally complex and will put you in front of different kinds of interesting challenges. As a student, you are asked to choose one of the two approaches and implement a fully functioning eclipse plugin showing a list of all package cycles contained in a project.

If you are interested in the project, feel free to contact me -> Andrea Caracciolo

Github project:

Related work: