CodeCompass

Thesis / lab / internship topics

If you're interested in any of these topics, please contact Máté Cserép (mcserep@inf.elte.hu), Anett Fekete (afekete@inf.elte.hu) or Zoltán Porkoláb (gsd@inf.elte.hu) for further information. Any BSc or MSc student who qualifies for a task may join the project for a university thesis or obligatory internship. It is also possible to join the project within the Model-C++ Software Technology lab for MSc students.

The tasks are in descending order by priority in the project.

All tasks require fair knowledge in the following: C/C++, CMake, Git, database handling (ODB), compilers, design patterns. Other technologies that a task requires are listed below the task.


Software metrics

MSc lab

Software metrics in software engineering are the standards for estimating the quality, progress, and health of software development activity. A software metric is a quantifiable or countable assessment of the qualities of the source code. Popular software metrics include coupling-based metrics, relational cohesion metrics, cyclomatic complexity metric (McCabe), bumpy road metric, etc. The current task consists of 2 major subtasks:

  • On the backend, various software metrics should be calculated based on the static analysis of the source code. The implementation of these metrics are usually language-dependent, therefore the task should be carried out for each supported programming language in CodeCompass.
  • On the frontend, various visualizations should be integrated for presenting the metrics.

Requirements: C++ / C# / Java (backend), TypeScript and React (frontend)

Find all possible values.yaml file sets in a Kubernetes project

MSc thesis / MSc lab

In Kubernetes orchestrated software systems, microservices are built and deployed using Helm charts. The compulsory files in a Helm chart include the chart, default values, and requirements. The file that contains the default, overridable variables of the system is the `values.yaml` file. The task is to work out an algorithm that uses static analysis to produce all possible sets of `values.yaml` files in a Kubernetes orchestrated project. The solution should prove that there are a finite number of file sets, independent of the number of microservices.

Requirements: basic Kubernetes and Helm

Integrated analysis of microservice-based software systems

MSc thesis / MSc lab

CodeCompass has a plugin that is capable of applying static analysis to Helm charts (Kubernetes configuration files). This plugin is inteded to automatically identify the microservices and Kubernetes objects in the system. The analysis is based on Helm and Kubernetes rules and it is applied to a certain subset of chart files. The task is to complement the plugin with dynamic analysis. CodeCompass is a fundamentally static analysis tool, hence the the task includes logging the deployed software, and analyzing the collected log files and messages. The task also includes comparing static and dynamic analysis results.

Requirements: basic Kubernetes and Helm

Online parsing support for CodeCompass users

BSc thesis / MSc lab

Currently, a request-based system works on codecompass.net, which makes it available for users to make requests on which projects to parse and showcase on the website. This project consists of implementing a system on the website which allows users to parse and deploy projects on their own. The website should be complemented with a page that receives the input from the user, and a Docker-based backend where parsing is executed automatically.

Requirements: C#/.NET, Docker, UNIX

Visual code comprehension support for existing language plugins (Java, Python)

BSc thesis / MSc lab

CodeCompass supports analyzing programming languages via plugins. There are currently multiple supported languages (C#, Python, and Java) which need to be complemented with web service functionalities that enrich code comprehension support, such as graph-based UML diagrams, automatically generated documentation, and other useful visualizations. The task is to implement such functionalities based on the existing parser for the listed languages in the service layer and frontend of the chosen language plugin.

Requirements: High level knowledge in the chosen language, Thrift, JavaScript (dojo.js)

JavaScript, PHP, Go language plugin

MSc thesis

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, PHP, and Go) 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.

Requirements: High level knowledge in the chosen language, Thrift, JavaScript (dojo.js)

CMake plugin

MSc thesis

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. The plugin structure shall be similar to that of the language plugins.

Requirements: Thrift, JavaScript (dojo.js)

Back to Home Page