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
.\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
dotnet build
Run Locally
codemedic --help
codemedic --version
dotnet run -- --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
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
- Implement Health Dashboard - Repository health analysis and scoring
- Implement BOM Command - Dependency reporting with multiple formats
- Add Plugin System - Extensible architecture for third-party plugins
- 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
codemedic --version # Version
codemedic unknown-cmd # Error handling
Contributing
When adding new features:
- Follow existing code patterns in
Commands/andOutput/ - Add documentation in
doc/ - Test on Windows, macOS, and Linux
- 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.mdthendoc/cli_architecture.md - Architects: See
doc/plugin_architecture.mdanddoc/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