Repository navigation
v1.0.3 - Enhanced Developer Experience
Orleans.StateMachineES v1.0.3 Release Notes
🚀 Enhanced Developer Experience Release
Version 1.0.3 significantly enhances the developer experience with comprehensive Roslyn analyzer improvements, providing better compile-time safety and code quality checks for state machine implementations.
✨ New Features
Enhanced Roslyn Analyzers
OSMES003: Missing BuildStateMachine Implementation
- Severity: Error
- Category: Implementation
- Detects classes deriving from
StateMachineGrainthat don't properly implementBuildStateMachine - Ensures all state machines have proper configuration
OSMES004: Unreachable State Detection
- Severity: Warning
- Category: Design
- Identifies states that have no incoming transitions and aren't initial states
- Helps maintain clean and logical state machine designs
- Prevents dead code in state configurations
OSMES005: Duplicate State Configuration
- Severity: Warning
- Category: Design
- Detects when states are configured multiple times in
BuildStateMachine - Encourages consolidation of state configuration for better maintainability
Developer Experience Improvements
Comprehensive Documentation
- Added
docs/ANALYZERS.mdwith detailed documentation for all analyzers - Includes problem/solution examples for each diagnostic
- Configuration guidance and best practices
- Troubleshooting section
Configuration Support
- Created
.editorconfig.analyzerstemplate for easy severity customization - Per-project and per-file suppression patterns
- CI/CD integration examples
Analyzer Infrastructure
- Updated
AnalyzerReleases.Unshipped.mdwith proper tracking - Improved categorization (Usage, Implementation, Design)
- Better diagnostic messages without trailing punctuation
🔧 Improvements
Code Quality
- Fixed all nullable reference warnings in analyzer implementations
- Removed unused variable warnings in production code
- Cleaned up analyzer message formats for RS1032 compliance
Package Updates
- Orleans.StateMachineES: 1.0.3
- Orleans.StateMachineES.Abstractions: 1.0.3
- Orleans.StateMachineES.Generators: 1.0.3
- All packages maintain synchronized versioning
📋 Complete Analyzer List
| Rule ID | Category | Severity | Description |
|---|---|---|---|
| OSMES001 | Usage | Warning | Async lambda in state callback |
| OSMES002 | Usage | Error | FireAsync within callback |
| OSMES003 | Implementation | Error | Missing BuildStateMachine implementation |
| OSMES004 | Design | Warning | Unreachable state detection |
| OSMES005 | Design | Warning | Duplicate state configuration |
🔄 Migration Guide
From v1.0.2
No breaking changes. Simply update your package references:
<PackageReference Include="Orleans.StateMachineES" Version="1.0.3" />
<PackageReference Include="Orleans.StateMachineES.Generators" Version="1.0.3" />Configuring New Analyzers
Add to your .editorconfig:
[*.cs]
# Configure new analyzers
dotnet_diagnostic.OSMES003.severity = error
dotnet_diagnostic.OSMES004.severity = warning
dotnet_diagnostic.OSMES005.severity = warning📊 Statistics
- New Analyzers: 3
- Total Analyzers: 5
- Documentation Pages: 2 (ASYNC_PATTERNS.md, ANALYZERS.md)
- Build Warnings Fixed: 8
- Code Coverage: Maintained at 98%
🙏 Acknowledgments
Thanks to our community for the continuous feedback that drives these improvements. Special recognition to users who suggested better compile-time validation for state machine configurations.
📦 Installation
dotnet add package Orleans.StateMachineES --version 1.0.3
dotnet add package Orleans.StateMachineES.Generators --version 1.0.3📚 Documentation
🔗 Links
Full Changelog: v1.0.2...v1.0.3