Project#

class scubatrace.Project(path: str, language: type[Language], enable_lsp: bool = True, enable_joern: bool = False)#

Bases: object

A codebase project with a specified path and language.

static create(path: str, language: type[Language], enable_lsp: bool = True) Project#

Factory function to create a language-specific Project instance.

Parameters:
  • path (str) – The file system path to the project root.

  • language (type[Language]) – The programming language type for the project.

  • enable_lsp (bool, optional) – Whether to enable Language Server Protocol (LSP) support. Defaults to True. Note: For PHP and Swift, LSP is always disabled.

Returns:

An instance of the appropriate language-specific Project subclass.

Return type:

Project

Raises:

ValueError – If the provided language is not supported.

export_callgraph(output_path: str)#

Exports the call graph of the project to a DOT file.

Parameters:

output_path (str) – The directory where the call graph DOT file will be saved.

property abspath: str#

The absolute path of the project.

property callgraph: MultiDiGraph#

Call graph of the project, starting from the entry point function.

property entry_point: Function | None#

The entry point function of the project, if it exists.

For example, in a C project, this would be the main function. If no entry point is defined, returns None.

property files: dict[str, File]#

A dictionary mapping relative file paths to File objects for all source files in the project.

The keys are relative paths from the project root, and the values are File representing each source file.

property files_abspath: dict[str, File]#

A dictionary mapping the absolute file paths to their corresponding File objects.

property files_uri: dict[str, File]#

A dictionary mapping the file URIs to their corresponding File objects.

property functions: list[Function]#

Functions in the project.

language: type[Language]#

The programming language type for the project.

abstract property parser: Parser#

The Parser instance associated with the current object.

path: str#

The file system path to the project root.

property sub_dirs: list[str]#

A list of subdirectories in the project path.