Moose Documentation

website·Indexed 32 days ago

https://modularmoose.org/

A platform for analyzing software systems through the generation and exploration of models. It includes the Moose IDE, Moose Query for navigating entity relations, and the Famix meta-model family for analyzing project dependencies and global architecture. The ecosystem provides tools for importing various languages (including Java and Python via FAST), GitProject Health for repository analysis, and FamixSQL for relational database analysis.

Tokens
86.2K
Snippets
409
Records
584
Agent score
64%

What's inside Moose

  1. Overview of Moose Query for entity relations

    Moose Query is an internal domain-specific language (DSL) used to build navigation and scope queries for entities in Moose. It allows developers to explore two primary types of relations:

    1. Containment: Defines the containment hierarchy (e.g., a package containing a class, or a class containing methods). This is used to build containment trees (DAGs).
    2. Associations: Represents dependencies between entities (e.g., inheritance between a subclass and a superclass, or a reference between a behavioral entity and a type).

    Moose Query relies on the model meta-description (accessible via #mooseDescription), where properties must be meta-described as container, source, or target.

  2. Overview of FamixNG Predefined Entities and Traits

    To analyze a system in a specific programming language, Moose requires a meta-model. FamixNG provides a library of over 130 predefined traits that act as reusable building blocks for these meta-models. Instead of defining every property from scratch, developers create new entities as classes composed of these existing traits. These traits are divided into four main categories: Association, Technical, Property, and Terminal traits.
  3. Overview of Local Resolution in FAST-Python

    Local resolution is a symbol resolution pass that links every named entity (read, write, call, import) to the entity that declares it within the same file or model. If a name is not declared within the file, it is bound to a FASTNonLocalDeclaration placeholder. This process is a prerequisite for higher-level analyses like Static Single Assignment (SSA).
  4. Overview of Carrefour bidirectional binding

    Carrefour provides a two-way link between the Famix meta-model and the FAST (Famix AST) meta-model. While Famix offers high-level abstraction for understanding how models work, FAST provides granular details such as expression statements and identifiers. Carrefour allows a developer to navigate the AST and return to Famix elements, which is particularly useful for modernization and migration projects.
  5. Overview of FAST-Pharo

    FAST-Pharo is a FAST meta-model designed to represent the Abstract Syntax Tree (AST) of Pharo classes, traits, or methods. It provides a meta-model, an importer, and tools for manipulating and exploring these models.
  6. Overview of TreeSitterFamixIntegration features

    The TreeSitterFamixIntegration framework simplifies the development of Famix importers by providing:

    • Source management (text, positions, and sourceAnchor setting).
    • Error handling for parsing issues.
    • An enhanced TreeSitter node inspector for debugging.
    • Utilities for attaching single-line and multi-line comments to entities.
    • Context tracking for symbol scope to avoid manual push/pop operations.
  7. Overview of Moose Critics

    Moose Critics is a tool in MooseIDE that allows developers to define a suite of rules to verify software systems' models. It functions similarly to tools like SonarQube by identifying violations of defined rules within a model.
  8. Overview of Carrefour, Famix, and FAST meta-models

    Carrefour provides a bidirectional link between two software analysis meta-models: Famix and FAST (Famix AST).

    • Famix: Provides a high level of abstraction to understand how models work.
    • FAST: Provides lower abstraction and more granular detail, such as expression statements and identifiers.
    • Carrefour: Enables navigation from the AST (FAST) back to Famix elements and vice versa, which is essential for modernization and migration projects.
  9. Overview of TreeSitterFamixIntegration features

    The TreeSitterFamixIntegration framework simplifies the development of Famix importers by providing tools for:

    • Source management (text, positions, and sourceAnchor settings).
    • Parsing error handling and reporting.
    • An enhanced TreeSitter node inspector for debugging.
    • Utilities for importing and attaching single-line and multi-line comments to entities.
    • Automatic context tracking for symbol scope (eliminating manual push/pop operations).
  10. Overview of TreeSitterFamixIntegration features

    The TreeSitterFamixIntegration stack simplifies the development of Famix importers using tree-sitter by providing:

    • Source management utilities (text retrieval, position tracking, and setting sourceAnchor for Famix entities).
    • Parsing error handling and reporting.
    • An enhanced TreeSitter node inspector for debugging.
    • Utilities for importing and attaching single-line and multi-line comments to entities.
    • Context tracking for symbol scope management.
  11. Overview of VerveineC-Cpp

    VerveineC-Cpp (also known as VerveineC) is a Java-based tool designed to analyze C/C++ source code and generate either JSON or MSE files. It is implemented as an Eclipse plugin that can run in a headless model.