Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Latest commit

History

History

Folders and files

NameName
Last commit message
Last commit date

README.md

CodeMedic - .NET Repository Health Analysis Tool

A comprehensive CLI application for analyzing the health of .NET repositories, including dependency analysis, architecture review, and health scoring.

Quick Start

Option 1: Docker (Recommended)

# Build container
.\build-docker.ps1 # Windows
./build-docker.sh # Linux/macOS

# Run
docker run --rm codemedic:latest --help
docker run --rm -v ${PWD}:/repo codemedic:latest health /repo

Option 2: Local Build

cd src/CodeMedic
dotnet build

Run Locally

codemedic --help
codemedic --version
dotnet run -- --help

Documentation

User Documentation

  • CLI Quick Reference: user-docs/cli_quick_reference.md
  • Configuration Files: user-docs/configuration-files.md - Batch analysis with JSON/YAML
  • Docker Usage: user-docs/docker_usage.md
  • Vulnerability Scanning: user-docs/vulnerability-scanning.md

Technical Documentation

  • CLI Architecture: doc/cli_architecture.md
  • Implementation Guide: doc/cli_skeleton_implementation.md
  • Docker Implementation: doc/docker_implementation.md
  • Test Results: doc/cli_skeleton_test_results.md

Features

  • Help system with command reference
  • Version information display
  • Cross-platform support (Windows, macOS, Linux)
  • Docker containerization with automated versioning
  • Rich formatted console output
  • Proper error handling with exit codes
  • Extensible plugin architecture
  • Repository health analysis
  • Bill of Materials (BOM) generation
  • NuGet package vulnerability scanning
  • Multiple output formats (console, markdown)
  • Path argument support (-p / --path) for all analysis commands
  • Command-specific help with argument documentation
  • Configuration file support (JSON & YAML) for batch analysis

Current Commands

# General commands
codemedic # Show help (default)
codemedic --help # Explicit help
codemedic --version # Show version

# Configuration-based batch analysis
codemedic config <config-file> # Run multiple analyses from config file
codemedic config config.json
codemedic config config.yaml

# Analysis commands
codemedic health # Repository health dashboard
codemedic health -p /path/to/repo --format markdown

codemedic bom # Bill of Materials
codemedic bom --path /path/to/repo --format md > bom.md

codemedic vulnerabilities # Scan for NuGet vulnerabilities
codemedic vulnerabilities -p /path/to/repo --format markdown > vulns.md

Technology Stack

  • .NET 10.0 - Application framework
  • System.CommandLine 2.0.0 - CLI infrastructure
  • Spectre.Console 0.49.1 - Rich terminal output
  • Nerdbank.GitVersioning 3.9.50 - Automatic versioning

Project Status

  • CLI skeleton implemented and tested
  • Help and version commands working
  • Error handling and exit codes proper
  • Documentation complete
  • Plugin architecture implemented
  • Health dashboard command (internal plugin)
  • Bill of materials command (internal plugin)
  • Repository scanner with NuGet inspection
  • Multiple output formats (console, markdown)
  • Vulnerability scanning for NuGet packages
  • Dedicated vulnerability analysis command

Plugin Architecture

CodeMedic uses an extensible plugin system for analysis engines:

Current Plugins:

  • HealthAnalysisPlugin - Repository health and code quality analysis
  • BomAnalysisPlugin - Bill of Materials generation
  • VulnerabilityAnalysisPlugin - NuGet package vulnerability scanning

See doc/plugin_architecture.md for details on creating custom plugins.

Next Steps

  1. Implement Health Dashboard - Repository health analysis and scoring
  2. Implement BOM Command - Dependency reporting with multiple formats
  3. Add Plugin System - Extensible architecture for third-party plugins
  4. Extended Options - Format selection (JSON, Markdown, XML)

See doc/cli_architecture.md for extension guidelines.

Project Structure

d:\doctor-dotnet/
+-- README.md # This file
+-- doc/
| +-- cli_skeleton_implementation.md # Technical guide
| +-- cli_architecture.md # Architecture & extensions
| +-- cli_skeleton_test_results.md # Test coverage
| +-- feature_bill-of-materials.md
| +-- feature_repository-health-dashboard.md
| +-- plugin_architecture.md
+-- user-docs/
| +-- cli_quick_reference.md # User reference
+-- src/CodeMedic/
+-- Program.cs
+-- Commands/
+-- Output/
+-- Utilities/
+-- Options/

Testing

All 8 core functionality tests passing:

  • Help command (4 variants)
  • Version command (3 variants)
  • Error handling

Run manual tests:

codemedic # Help
codemedic --version # Version
codemedic unknown-cmd # Error handling

Contributing

When adding new features:

  1. Follow existing code patterns in Commands/ and Output/
  2. Add documentation in doc/
  3. Test on Windows, macOS, and Linux
  4. Update help text in ConsoleRenderer.RenderHelp()

See doc/cli_architecture.md for detailed extension patterns.

Learning Resources

  • Users: Start with user-docs/cli_quick_reference.md
  • Developers: Read doc/cli_skeleton_implementation.md then doc/cli_architecture.md
  • Architects: See doc/plugin_architecture.md and doc/cli_architecture.md

Quality

  • Build: 0 errors, 0 warnings
  • Tests: 8/8 passing
  • Code: Clean architecture, well-organized
  • Docs: Comprehensive
  • Cross-platform: Ready

Status

READY FOR PRODUCTION AND EXTENSION