Rebel.Alliance.ObjectInfo.DeepDive 1.0.1

dotnet add package Rebel.Alliance.ObjectInfo.DeepDive --version 1.0.1                
NuGet\Install-Package Rebel.Alliance.ObjectInfo.DeepDive -Version 1.0.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rebel.Alliance.ObjectInfo.DeepDive" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Rebel.Alliance.ObjectInfo.DeepDive --version 1.0.1                
#r "nuget: Rebel.Alliance.ObjectInfo.DeepDive, 1.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Rebel.Alliance.ObjectInfo.DeepDive as a Cake Addin
#addin nuget:?package=Rebel.Alliance.ObjectInfo.DeepDive&version=1.0.1

// Install Rebel.Alliance.ObjectInfo.DeepDive as a Cake Tool
#tool nuget:?package=Rebel.Alliance.ObjectInfo.DeepDive&version=1.0.1                

ObjectInfo.Deepdive

ObjectInfo.Deepdive is an extension library for ObjectInfo, designed to provide advanced code analysis capabilities. It leverages .NET 8+ features and the Roslyn compiler platform to offer deep insights into .NET objects and codebases.

Key Components

  1. DeepDiveAnalysis: The main entry point for deep analysis operations. It wraps an ObjectInfo instance and provides methods for various types of advanced analysis.

  2. AnalyzerManager: Manages the collection of analyzers and orchestrates their execution.

  3. IAnalyzer Interface: The base interface for all analyzers, defining the contract for analysis operations.

  4. IMethodAnalyzer and ITypeAnalyzer Interfaces: Specialized interfaces for method and type analysis respectively.

  5. PluginLoader: Responsible for discovering and loading external analyzer plugins.

  6. DeepDiveConfiguration: Holds configuration options for customizing the analysis process.

Plugin System

ObjectInfo.Deepdive implements a flexible plugin system allowing for easy extension with custom analyzers:

  • Plugins implement the IAnalyzerPlugin interface.
  • The PluginLoader class discovers and loads plugins from a specified directory.
  • Analyzers from plugins are registered using dependency injection.

Integration with ObjectInfo

  • Uses extension methods (like ToDeepDive()) to provide a seamless transition from ObjectInfo to DeepDive analysis.
  • Extends ObjectInfo's capabilities without duplicating its functionality.

Key Features

  • Method body analysis (e.g., cyclomatic complexity, LINQ complexity)
  • Type hierarchy and dependency analysis
  • Performance optimizations for large-scale analysis
  • Async-first API design for responsive analysis of large codebases

Current State

The library has a working core architecture with the first analyzers (CyclomaticComplexityAnalyzer and LinqComplexityAnalyzer) implemented and tested. It successfully integrates with ObjectInfo and provides a foundation for advanced code analysis.

Future Developments

  • Implementation of additional analyzers
  • Enhancement of Roslyn integration for more sophisticated code analysis
  • Development of specific analysis features like dependency graph generation
  • Expansion of the plugin system
  • Implementation of caching mechanisms for improved performance
  • Expansion of test coverage and creation of integration tests

ObjectInfo.Deepdive is designed to provide developers with powerful insights into their code, enabling better understanding, maintenance, and optimization of .NET applications.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Rebel.Alliance.ObjectInfo.DeepDive:

Package Downloads
Rebel.Alliance.ObjectInfo.DeepDive.CyclomaticComplexityAnalyzer

ObjectInfo.DeepDive.CyclomaticComplexityAnalyzer is a plugin for ObjectInfo.DeepDive that calculates the cyclomatic complexity of methods within .NET projects. Leveraging Roslyn, it provides deep insights into code complexity, aiding developers in maintaining and improving code quality.

Rebel.Alliance.ObjectInfo.DeepDive.SolidAnalyzer

ObjectInfo.DeepDive.SolidAnalyzer is a plugin for ObjectInfo.DeepDive that analyzes .NET projects for adherence to SOLID principles. Leveraging Roslyn, it provides deep insights into code structure and design, helping developers ensure their codebases maintain high standards of maintainability, scalability, and robustness.

Rebel.Alliance.ObjectInfo.DeepDive.LinqComplexityAnalyzer

ObjectInfo.DeepDive.LinqComplexityAnalyzer is a plugin for ObjectInfo.DeepDive that analyzes the complexity of LINQ queries within .NET projects. Leveraging Roslyn, it provides deep insights into LINQ usage patterns and performance implications, helping developers optimize their code for better efficiency and maintainability.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.1 123 9/21/2024
1.0.0 132 9/21/2024