Skip to content

NumbatUI: source code and graph explorer

⚠ This fork of Sourcetrail is in active development and unstable, we recommend to not use it in production environments.

Numbat UI is a fork of Sourcetrail, a source code explorer that was archived in 2021.

Why NumbatUI? NumbatUI has been written to explore any graph-based data generated by Numbat (which enables crafting databases through a friendly Python API). More specifically, NumbatUI has been created to extend Sourcetrail for additional UI/UX features. Features added are:

  • Renaming nodes and edges (to reflect the user specific use-case)
  • Custom colors on nodes or edges
  • Custom node or edges (tooltips, hovering text)
  • file sideloading (to store file content outside of the database)
  • bookmarking all predecsessors or successors of a given node (for later analysis)
  • custom commands (to perform any user-defined action on nodes/edges, e.g., open a terminal at a given path, open a web page, etc.)

Installation

We strongly recommend to use precompiled packages or our Docker image. For manual compilation, see the dedicated page in documentation.

Docker Image

You can either: - Build locally the docker image:

cd docker
docker build -t numbatui .
- Download it from github:
docker pull ghcr.io/quarkslab/numbatui:main

NumbatUI is a Qt GUI application, so the container needs access to your display server. Check documentation for details.

Debian Package (.deb)

  • Download the .deb package from Realeases.
  • Install it on your system:
    sudo dpkg -i numbatui.deb
    

Usage

Open the /path/to/my_database.srctrlprj database with NumbatUI. The command will depend of your windowing system, as the application is a GUI Qt application one needs to forward the X11/Wayland display to the container.

Supported Languages

C

C support is powered by Clang, with LLVM/Clang 19 as the hard minimum (matching Debian trixie's default toolchain). For issues loading C code, have a look at Clang language compatibility or report a bug in our issue tracker.

C++

C++ support is powered by Clang, with LLVM/Clang 19 as the hard minimum. For more information please visit Clang C++ Status. For issues loading C++ code, have a look at Clang language compatibility or report a bug in our issue tracker.

[!NOTE] C/C++ indexing is built only when -DBUILD_CXX_LANGUAGE_PACKAGE=ON is passed to CMake. It is off by default in the current builds while it is being stabilized, so the prebuilt Docker image and .deb ship without it for now.

Python

Python indexing (inherited from Sourcetrail's SourcetrailPythonIndexer) is currently disabled by design and is not built. Support may be revisited in a future release.

Publications

N/A

Authors

  • Eloïse Brocas (@ebrocas), Quarkslab
  • Robin David (@RobinDavid), Quarkslab
  • Pascal Wu (@pwu42), during his internship at Quarkslab