AhmadHassan-BTed/CoDiver
AhmadHassan-BTed/CoDiver has 4,668 GitHub stars and 2 forks. GitHot measured -2 stars in 24 hours and -16 in 7 days. Last checked 2026-11-12 14:05 UTC. Last push 2026-06-30.
An advanced, unified platform for code quality, architectural metrics, and Agile analytics. Features Python AST parsing, Java static analysis (code smells), and interactive project health dashboards built with Streamlit.
What you can do
- 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
Measured star growth
- in 24h
- -2
- in 7 days
- -16
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalCoDiver: Code Sniffer & Project Analyzer
An advanced, open-source unified platform for code quality, architecture metrics, and Agile analytics.
[!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)
- Fork this repository.
- Navigate to Streamlit Share.
- Connect your fork and point the main file path to
app.py. - The cloud environment will automatically parse
requirements.txtand 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.
Explore related projects
Asabeneh/30-Days-Of-Python
The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,560 starsgrafana/grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
77,830 starsredis/redis
For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.
77,395 starsapache/superset
Apache Superset is a Data Visualization and Data Exploration Platform
75,473 stars