Startseite > Fachgruppen > Softwaretechnik > Lehre > Project Group JimpleAid - Jimple Language Server

Project Group JimpleAid - Jimple Language Server

Project Description

The goal of this project group is to build a Jimple language server which uses the language server protocol to integrate features like go to definition, find all references for the intermediate language Jimple into different IDE tools. The Jimple language server can be used for inspecting vulnerabilities in Java applications without available source code or it can be used in code instrumentation for logging the application's runtime behavior.

Having this technology at hand, a further goal of the project group is to re-implement the heavily out-dated Jimple parser with an established parser-framework. And, thereby, add missing language features to Jimple which are required to render it a complete Java-bytecode-based program representation.

As a last step, the group focuses on designing and implementing a powerful update mechanism that allows other components to react to changes to Jimple code. This opens the door to even more convenient IDE integrations of the Jimple language, e.g., show a call-graph additionally to the Jimple code and let the call-graph adapt to changes made to Jimple code in real-time.

Project Requirements

WP1 Implementation of the prerequisites for Jimple language analyzers

WP2 Implementation of Jimple language server

WP3 Change Jimple and write out to bytecode/sourcecode again

WP4 Implement incremental update mechanism for Jimple

Please visit our wiki for further information.

Mandatory sessions

We will give a serie of sessions including talks & workshops in the first semester of the project group. Attendance is mandatory for all students in this project group. The sessions are:

Workshop on Soot (time: tba)

Workshop on LSP (time: tba)

Milestones

There will be regular milestone presentations (every 2-3 months). You have to provide the following documents which describe your work for each milestone and give a presentation for each document:

- Project plan

- Intermediate report

- Final report (at the end)

- User manual both in pdf and github wiki (at the end)