Skip to content

FritzAndFriends/codemedic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

34 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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