Skip to main content

Library to manipulate and create Sourcetrail databases

Project description

Numbat

Numbat is an API to create and manipulate Sourcetrail databases. Sourcetrail is a code source explorer which allows users to navigate through the different components (functions, classes, types, etc.) easily.

Numbat main goal is to offer a full-python SDK given the fact that the current one, SourcetrailDB cannot be used anymore efficiently. It is not user-friendly at first sight, need to be compiled to provide Python bindings and, moreover, it is no longer maintained. Finally, we have added some little new features as finding an element in the database.

With Numbat, you will be able to visualize your data quickly with the nice graphical Sourcetrail interface. For example, Pyrrha uses Numbat to map firmware structure.

Installation

Numbat is available on pypi.

pip install numbat

From sources

You can also install it from the git repository. Either using the following oneliner:

pip install 'numbat @ git+https://github.com/quarkslab/numbat'

or doing it in few steps:

# Download the repo
git clone https://gitlab.qb/firmware-re/cartography/numbat
cd numbat
# Install numbat locally
pip install .

Build Documentation

If you want to build the documentation by first installing Numbat with the required [doc] dependencies and then serve the documentation on a local server.

# if you already have a local clone of the project
cd NUMBAT_DIR
pip install .[doc]

# otherwise
pip install 'numbat[doc]'

# serve doc locally
mkdocs serve

Basic Usage

A complete usage with examples is available in the documentation but here is a quick usage to begin with Numbat.

To use Numbat, you must first create a SourcetrailDB object and either create a new database or open an existing one:

from pathlib import Path
from numbat import SourcetrailDB

db_path = Path('my_database')
try:
    # Create a new database
    srctrl = SourcetrailDB.create(db_path)
except FileExistsError:
    # Database already exists, open it and remove the entire content with clear
    srctrl = SourcetrailDB.open(db_path)
    srctrl.clear()

You could also use this one-liner to open the database quicker:

from pathlib import Path
from numbat import SourcetrailDB

srctrl = SourcetrailDB.open(Path('my_database'), clear=True)

Once the database is open, you can add one or more source files in the database using the following snippet:

file_id = srctrl.record_file(Path('my_file.c'))
srctrl.record_file_language(file_id, 'C')

To populate the database, it is possible to record different symbols such as class or function like this:

symbol_id = srctrl.record_class(name="MyClass", is_indexed=True)
# if you have a source code, you can add the location of your symbol definition
srctrl.record_symbol_location(symbol_id, file_id, 2, 7, 2, 12)
# and your symbol scope
srctrl.record_symbol_scope_location(symbol_id, file_id, 2, 1, 7, 1)

Once the database is filled with information, it must be saved and close like this:

srctrl.commit()
srctrl.close()

Authors

  • Sami Babigeon (@sbabigeon), Quarkslab
  • Eloïse Brocas (@ebrocas), Quarkslab

The logo is a creation of Benoît Forgette and Sami Babigeon.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

numbat-0.1.0.tar.gz (26.1 kB view details)

Uploaded Source

Built Distribution

numbat-0.1.0-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

File details

Details for the file numbat-0.1.0.tar.gz.

File metadata

  • Download URL: numbat-0.1.0.tar.gz
  • Upload date:
  • Size: 26.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.7

File hashes

Hashes for numbat-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0af9ebed4cac49a22b928d90dc8e1ddfaa0b2a2744417312608e57b82ecf47d3
MD5 be968b110962a4c18bd4651da5b6c0ad
BLAKE2b-256 38310167e50fd610038118d4c531a5a3c1a24317c94af77530603ed05cb117a4

See more details on using hashes here.

File details

Details for the file numbat-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: numbat-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 26.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.7

File hashes

Hashes for numbat-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5479d24881d13c3692c29ab99e3487c468bb7052c4bba87a1ca3502ea5929335
MD5 3f74d27d42f93448bc749ca96dc14c1b
BLAKE2b-256 6b9f1762cb1ffb7f51e35b0c257699fe008239956803ee5e7575bff994d3e138

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page