CoDiver README

The project's README from github.com/AhmadHassan-BTed/CoDiver. As one markdown file: README.md.

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.

  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.

CoDiver (AhmadHassan-BTed/CoDiver)

software-engineering
Searching Database…

1.2K ·GitHub
What is this?CoDiver (formerly SMC-Software-Metrics-Calculator) is a unified platform for code quality, architecture metrics, and Agile analytics, combining Python AST parsing, Java static analysis, and sprint tracking into one Streamlit dashboard.
Is this a CLI tool or a web dashboard?It's a Streamlit web dashboard, not a command-line tool - you drag and drop your project files into the browser and it runs the analysis for you.
How do I get this running?Fork the repository, go to Streamlit Share, connect your fork, and point the main file path to app.py; the cloud environment installs dependencies automatically. You can also run it locally for development.
Do I need to install Python packages myself?If you deploy on Streamlit Community Cloud, it auto-installs everything from requirements.txt; for local development you set up the Python environment yourself since the backend relies on ast, radon, javalang, pandas, and plotly.
Can I just host this as a static page?No - because it does live AST parsing and analysis in Python, it needs a running backend and can't be served as a static site on GitHub Pages.
What does the Java static analysis actually check?It parses Java code with javalang to flag code smells like God Class and Feature Envy, checks naming conventions and Javadoc coverage, and reports raw lines-of-code distributions.
What Agile metrics can I track besides code quality?The platform tracks sprint velocity, burndown visualization, and scope creep, and can estimate development effort using the COCOMO model.
Is there a hosted demo I can try without deploying anything?Yes - a live instance runs on Streamlit Community Cloud at codiver.streamlit.app.
Size
0.4 MB
Stars
1.2K
Updated
CommitJun 30
Age
5mo
Commits · 90 Days