CodeCompass

Thesis topics

If you're interested in any of these topics, please contact Anett Fekete (afekete@inf.elte.hu) or Zoltán Porkoláb (gsd@inf.elte.hu) for further information.


JavaScript, C#, PHP language plugin

(1 MSc student for each)

CodeCompass supports analyzing programming languages via plugins. Currently supported languages are C/C++, Python and Java. The task is to integrate the parsers of further programming languages (especially JavaScript, C#, PHP) into CodeCompass as new plugins.
Each language plugin consists of 2 components:

  • a parser, which shall be able to construct the abstract syntax tree (AST) of the analyzed programs, then retrieve and persist the semantically important information into a database; and
  • a service, which shall be able to serve the requests of the web frontend based on said database.

New web frontend

(1-2 BSc students for thesis, OR 1 MSc student for lab)

The design concept of the current web frontend is considered outdated in some terms. The task is to completly redesign and implement a new web frontend for CodeCompass from scratch. Using a widely known frontend framework (e.g. React, Vue or Angular) and modern layout library (e.g. Material Design) is highly recommended. The new frontend shall use the existing RPC-based Thrift backend and its provided features of CodeCompass.

Support Language Server Protocol

(1-2 BSc students)

Language Server Protocol (LSP) is an open-source protocol to connect source code editors with servers that provide language-specific features. The task is to implement code comprehension supporting features into Visual Studio Code using Language Server Protocol. The task includes the implementation of both server and client support, which can be distributed between 2 students.

CMake plugin

(1 BSc student)

CMake is a build system used by CodeCompass among plenty of other software projects. The task consists of the specification and implementation of a special language plugin into CodeCompass which executes the semantic analysis of the CMakeLists.txt files in a given software project, and displays textual, aggregated and visualized information based on them.

Github & Gitlab plugin

(1-2 BSc students)

In today's development, using version control systems is inevitable. Github and Gitlab are the most popular project hosting systems for Git based project management. Both websites provide several additional features that is not part of Git but are very useful in terms of software development and project management, such as handling pull/merge requests, issues within projects, continuous integration etc. The task consist of the specification and implementation of a plugin into CodeCompass which executes the analysis of the above mentioned project management features by invoking the REST API endpoints of Github or Gitlab, depending on where the provided repo is hosted. Both websites are to be handled by the same plugin which can be implemented by 2 students.