main.py


Overview

`main.py` is the central script for performing a project-level evaluation of source code documentation coverage using CES (Code-to-Documentation Embedding Similarity) and BERTScore metrics. It processes source code and documentation files, generates semantic embeddings for both, computes similarity metrics to assess how well documentation covers the code, and produces visual and JSON summary outputs.

The evaluation leverages:

This script is intended to be run as a command-line tool, taking paths to source code and documentation directories and producing evaluation outputs in a designated folder.


Detailed Explanation

Imports and Dependencies


Function: evaluate_project

def evaluate_project(code_dir: str, docs_dir: str, out_dir: str,
                     use_umap: bool = False, quiet: bool = False) -> Dict:

Purpose

Performs the full evaluation pipeline on the given project directories and outputs results and visualizations.

Parameters

Returns

Workflow

  1. Setup Output Directory: Creates out_dir if it doesn't exist.

  2. Discover Files: Finds source code and documentation files using discover_files.

  3. Extract Code Units: Parses source files to extract raw code units (functions, classes, etc.).

  4. Chunk Code Units: Splits large code units into chunks (max 60 lines) suitable for embedding.

  5. Extract Documentation Units: Parses markdown files into manageable doc units.

  6. Generate Embeddings: Uses Ollama to create semantic embeddings for both code chunks and documentation units.

  7. Compute CES: Calculates the Code-to-Documentation Embedding Similarity metric from embeddings.

  8. (Commented Out) BERTScore Computation: Placeholder for generating pseudo-references and computing BERTScore.

  9. Visualization: Saves radar/bar charts and semantic scatter plots summarizing similarity metrics.

  10. Save Summary JSON: Writes evaluation results and metadata to a JSON file.

  11. Return Results: Returns the CES results dictionary.

Usage Example

results = evaluate_project(
    code_dir="./my_project/src",
    docs_dir="./my_project/docs",
    out_dir="./my_project/eval_results",
    use_umap=True,
    quiet=False
)
print(results)

Function: main

def main():

Purpose

Entry point for command-line usage of the script. Parses arguments and invokes `evaluate_project`.

Command-line Arguments

Workflow

  1. Parses CLI arguments.

  2. Calls evaluate_project with parsed arguments.

  3. Pretty-prints the JSON results to stdout.

Usage Example

python main.py --code_dir ./src --docs_dir ./docs --out_dir ./eval --use_umap

Important Implementation Details


Interactions with Other Modules

The script acts as the orchestrator that coordinates these modules to perform a comprehensive project documentation evaluation.


Visual Diagram: Class/Function Structure

flowchart TD
    A[evaluate_project] --> B[discover_files]
    A --> C[extract_code_units_from_file]
    A --> D[chunk_code_units_for_embedding]
    A --> E[chunk_markdown_files]
    A --> F[get_embeddings_ollama]
    A --> G[compute_ces_from_embeddings]
    A --> H[plotly_radar_and_bar]
    A --> I[plot_semantic_scatter]
    J[main] --> A

**Diagram Explanation**:


Summary

`main.py` is a comprehensive evaluation driver script that integrates parsing, embedding generation, similarity computation, and visualization to assess how well project documentation covers source code. It is designed for extensibility and scalability, leveraging state-of-the-art semantic embeddings and visualization techniques to provide actionable insights into documentation quality at a project level.