CoDiver is a free, open source business intelligence & reporting project written in Python and released under MIT. It has 2,892 GitHub stars, 2 forks and 0 open issues, and was last pushed 4 months ago. On this registry it ranks #41 of 79 tracked projects in Business Intelligence & Reporting, with 5 head-to-head comparisons available.

What is CoDiver?

CoDiver is an MIT-licensed, open-source Streamlit platform that unifies Python AST parsing, Java static analysis, and Agile process analytics in a single dashboard, aimed at developers, tech leads, and engineering teams who want code quality and project health measured in one place.

What it is

CoDiver — previously released as SMC-Software-Metrics-Calculator — is a code sniffer and project analyzer written in Python and distributed under the MIT licence, currently at version 4.1. It lives in the Streamlit ecosystem: the interface is a Streamlit application whose frontend delegates all analysis to isolated backend engines that parse raw uploaded files into abstract syntax trees on the fly. The README describes this arrangement as a "Zero-Coupling, Event-Reactive Architecture", and the repository enforces the split between UI logic and calculation algorithms, with app.py as the master unified controller and UI entry point and the analyzer subsystems held under src/.

The concrete problem it solves is fragmentation. Measuring technical debt normally means running one tool for Python complexity, another for Java code smells, and keeping Agile sprint numbers somewhere else entirely, then reconciling three sets of output by hand. CoDiver instead takes a single file upload, auto-categorizes each file by extension — .py to the Python AST Engine, .java to the Java AST Engine, .json to the Agile Process Engine — and funnels every engine's findings through a results aggregator into Pandas DataFrames that the same dashboard renders as Plotly visuals. Technical debt, in the project's own framing, becomes visible and actionable rather than abstract, and the borders between languages stop mattering to the person reading the report.

Key capabilities

  • A Universal Control Center routes uploads by extension: .py files to the Python AST Engine, .java files to the Java AST Engine, and .json files to the Agile Process Engine from one interface.
  • Python AST parsing produces complexity and code metrics for uploaded source files.
  • Java static analysis performs javalang AST traversal in src/java_analyzer/analyzer_engine.py to detect design and implementation code smells across classes, fields, and methods, with detector logic organized under src/java_analyzer/detectors/.
  • Agile process analytics read .json inputs to report velocity and scope creep, supporting effort estimation alongside the code findings.
  • Interactive project health dashboards are built with Streamlit and Plotly, fed by Pandas DataFrames produced by the aggregator.
  • The UI stays fully stateless until the user explicitly executes a CoDiver analysis, after which session state handlers in src/java_analyzer/dashboard.py trigger a reactive re-render.
  • A modular project tree separates the controller (app.py) and dependency configuration (requirements.txt) from the analyzer subsystems under src/.

Who uses it and how

  • Individual developers auditing an unfamiliar codebase upload Python and Java sources together and read complexity metrics and smell findings side by side in one dashboard.
  • Tech leads and engineering managers analysing exported Agile data as .json so that velocity and scope creep appear next to the code quality findings for the same project.
  • Teams evaluating the tool before committing can use the hosted Streamlit deployment at codiver.streamlit.app, which runs the same application without any local installation.
  • Educators and researchers in software metrics — reflected in topics such as agile-metrics, software-metrics-analysis, and ast-parsing — can reuse and adapt the code under the permissive MIT licence.

Getting started

The quickest route is the hosted application at https://codiver.streamlit.app/. To run it yourself, install the dependencies listed in requirements.txt and launch app.py as a Streamlit application.

How it compares

No comparable or paid products are named in the supplied facts, so on the available evidence CoDiver stands alone in this registry, with no direct alternative documented here to contrast it against.

When to use it — and when not to

Choose CoDiver when a team wants Python, Java, and Agile process signals in one place and is content to work through an interactive upload-and-analyze dashboard rather than a continuous integration pipeline. A self-hoster takes on only a Python environment and the requirements.txt dependencies, since no database, object storage, or SMTP service is mentioned. It is a poor fit if coverage is needed beyond Python and Java or if analysis must run unattended in CI, and the published README excerpt stops partway through the project tree at detectors/, so the internal documentation is incomplete.

project readme (upstream, from github) — read inline

CoDiver: Code Sniffer & Project Analyzer

An advanced, open-source unified platform for code quality, architecture metrics, and Agile analytics.

Version License Open Source Streamlit Python Live Demo

[!NOTE] This project was previously known as SMC-Software-Metrics-Calculator.


The Philosophy

Software is inherently human. Behind every line of code, every architectural decision, and every sprint metric lies human effort and engineering intent. The CoDiver: Code Sniffer & Project Analyzer was built on the premise that technical debt shouldn't be an abstract concept - it should be deeply visible, understandable, and actionable.

This platform bridges the gap between raw codebase complexity and human understanding. By unifying Python parsing, Java static analysis, and Agile process tracking into a single frictionless dashboard, the suite abstracts away the borders between languages and focuses purely on the code.


Architecture Overview

The platform operates on a Zero-Coupling, Event-Reactive Architecture. The frontend strictly delegates analysis to isolated backend engines, which parse raw files into Abstract Syntax Trees (ASTs) on the fly.

graph TD
    classDef frontend fill:#1e3a8a,stroke:#3b82f6,stroke-width:2px,color:#fff;
    classDef controller fill:#475569,stroke:#94a3b8,stroke-width:2px,color:#fff;
    classDef engine fill:#0f172a,stroke:#10b981,stroke-width:2px,color:#fff;
    
    UI[ Streamlit Frontend]:::frontend -->|Unified File Upload| Controller[ Universal Control Center]:::controller
    
    Controller -->|Routes .py| PythonEngine[ Python AST Engine]:::engine
    Controller -->|Routes .java| JavaEngine[ Java AST Engine]:::engine
    Controller -->|Routes .json| AgileEngine[ Agile Process Engine]:::engine
    
    subgraph Core Analyzers
        PythonEngine --> PyMetrics[Complexity & Code Metrics]
        JavaEngine --> JavaSmells[Design & Implementation Smells]
        AgileEngine --> SprintMetrics[Velocity & Scope Creep]
    end
    
    PyMetrics --> Aggregator[ Results Aggregator]
    JavaSmells --> Aggregator
    SprintMetrics --> Aggregator
    
    Aggregator -->|Pandas DataFrames| UI

Request Lifecycle & Data Flow

Data flows deterministically from the browser, through the AST generators, into Pandas dataframes, and back out to Plotly visuals. The UI remains fully stateless until explicitly commanded to execute an analysis.

sequenceDiagram
    participant User as Developer
    participant UI as  UI (app.py)
    participant Engine as  Analyzer Engine
    participant State as  Session State
    
    User->>UI: Uploads Source Code (.py, .java)
    UI->>UI: Auto-categorize by extension
    User->>UI: Adjusts Global Parameters
    User->>UI: Executes CoDiver Analysis
    
    UI->>Engine: Dispatches raw UTF-8 strings & configs
    
    rect rgb(30, 41, 59)
        Note right of Engine: Backend Processing Phase
        Engine->>Engine: Generate Abstract Syntax Trees
        Engine->>Engine: Traverse classes, fields, methods
        Engine->>Engine: Evaluate Code Smells & Constraints
    end
    
    Engine-->>State: Yield structured dictionaries
    State->>State: Transform to Pandas DataFrames
    State-->>UI: Triggers reactive re-render
    
    UI-->>User: Displays interactive visualizations

Internal Module Structure

The repository enforces a strict separation between UI logic and calculation algorithms to guarantee high cohesion and maintainability at scale.

Click to expand the Project Tree
CoDiver/
├── app.py                      # Master Unified Controller & UI Entry Point
├── requirements.txt            # Dependency configuration
└── src/
    ├── java_analyzer/          # Java Static Analysis Subsystem
    │   ├── analyzer_engine.py  # javalang AST traversal logic
    │   ├── dashboard.py        # Session state & execution handlers
    │   ├── detectors/          # Code Smell logic (Design, Naming, etc.)
    │   └── utils/              # UI components & helpers
    │
    └── software_metrics/       # Python & Agile Analytics Subsystem
        ├── calculators/        # Core calculation algorithms (COCOMO, Agile)
        ├── ui/                 # Visualization components (Charts, Cards)
        └── tests/              # Subsystem validation

System Capabilities

Subsystem Core Responsibilities Underlying Tech
Code Metrics AST generation, Cyclomatic & Cognitive complexity mapping, Defect density prediction, COCOMO estimation. ast, radon
Static Architecture God Class detection, Feature Envy identification, naming conventions, Javadoc validation, raw LOC distributions. javalang
Agile Process Velocity tracking, sprint burndown visualization, scope creep calculation. pandas, plotly
Universal Control Unified drag-and-drop ingestion, cross-language processing dispatch, dynamic parameter routing. streamlit

Build & Deployment Pipeline

Because this application leverages a robust Python backend for intensive AST processing, it is deployed natively via containerized Python runtimes (and cannot be served statically via standard GitHub Pages).

Live Demo

The platform is currently live and operational on Streamlit Community Cloud.

Access the live suite here: codiver.streamlit.app

Self-Hosting & Deployment

Because this application leverages a robust Python backend for intensive AST processing, it is deployed natively via containerized Python runtimes.

Deployment via Streamlit Cloud (Recommended)
  1. Fork this repository.
  2. Navigate to Streamlit Share.
  3. Connect your fork and point the main file path to app.py.
  4. The cloud environment will automatically parse requirements.txt and deploy your instance.

Local Development Workflow

To initialize the suite in a local development environment:

# 1. Clone the repository
git clone https://github.com/yourusername/CoDiver.git
cd CoDiver

# 2. Install AST parsers and UI dependencies
pip install -r requirements.txt

# 3. Boot the reactive frontend server
streamlit run app.py

Development & Contribution

New ideas, architectural optimizations, and structural improvements are warmly welcomed. The system is designed to be highly extensible - adding support for a new language parser simply requires introducing a new module within src/ and wiring it to the Universal Control Center in app.py.

When modifying the codebase, please ensure that UI concerns remain strictly separated from backend AST calculation logic.


Engineering Credits

Ahmad Hassan (B-Ted)
Software Engineer

This architecture was designed and engineered from the ground up to solve complex software quality tracking constraints using modern, event-driven Python web paradigms.

License

This repository is published under the MIT License, promoting open knowledge and collaborative engineering.

Frequently asked questions

Is CoDiver free to use?

CoDiver is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does CoDiver do?

An advanced, unified platform for code quality, architectural metrics, and Agile analytics. Features Python AST parsing, Java static analysis (code smells), an

What is CoDiver written in?

CoDiver is primarily written in Python. Its source is publicly available at https://github.com/AhmadHassan-BTed/CoDiver, and it has 2,892 GitHub stars.