Skip to content

FritzAndFriends/codemedic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 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

About

A collection of tools that help .NET developers

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •