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
<PackageReference Include="Rebel.Alliance.ObjectInfo.DeepDive" Version="1.0.1" />
paket add Rebel.Alliance.ObjectInfo.DeepDive --version 1.0.1
#r "nuget: Rebel.Alliance.ObjectInfo.DeepDive, 1.0.1"
// 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
DeepDiveAnalysis: The main entry point for deep analysis operations. It wraps an ObjectInfo instance and provides methods for various types of advanced analysis.
AnalyzerManager: Manages the collection of analyzers and orchestrates their execution.
IAnalyzer Interface: The base interface for all analyzers, defining the contract for analysis operations.
IMethodAnalyzer and ITypeAnalyzer Interfaces: Specialized interfaces for method and type analysis respectively.
PluginLoader: Responsible for discovering and loading external analyzer plugins.
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 | Versions 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. |
-
net8.0
- ICSharpCode.Decompiler (>= 7.2.1.6856)
- Microsoft.CodeAnalysis.CSharp (>= 4.8.0)
- Microsoft.CodeAnalysis.CSharp.Workspaces (>= 4.8.0)
- Microsoft.Extensions.DependencyInjection (>= 8.0.0)
- Mono.Cecil (>= 0.11.5)
- Rebel.Alliance.ObjectInfo (>= 1.0.1)
- Serilog (>= 4.0.1)
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.