mjul/diesel
57.5
Adequate · 20 September 2026
3k
lines of production code
C#
primary language
4
measurements over time
What this system is
Diesel is a .NET code generation toolkit that uses a declarative DSL to produce C\# source code for Domain-Driven Design artifacts. It parses DSL definitions to generate value types, commands, domain events, DTOs, application services, and enums, handling complex type mappings and serialization attributes. The system includes a compiler pipeline that transforms parsed syntax into a semantic model before emitting the final C\# code via CodeDOM.
Features
C\# type parsing now supports arrays, nullables, and user-defined types
The C\# parsing module in Diesel now handles a broader range of type declarations, including multi-dimensional arrays (via RankSpecifiers), user-defined nullable value types (e.g., DateTime?), and explicit string types. This is enabled by a new grammar structure in CSharpGrammar.cs that introduces interfaces like ITypeNode and IReferenceType, alongside concrete AST nodes such as ArrayType, NullableType, and TypeName, allowing the parser to correctly interpret complex C\# type syntax in data contracts.
Diesel/Parsing/CSharp · high confidence
Code generation now supports application services, DTOs, and sealed domain events
The Diesel code generator has been refactored to support new declaration types and improved type handling. Application services are now generated as interfaces with an Execute method for each command. Data Transfer Objects (DTOs) are generated as classes with value semantics, including equality and serialization support. Domain events are now generated as sealed classes. The generator also supports enums with DataContract attributes, value types with ToString and DebuggerDisplay attributes, and handles nullable and array types in member mappings and equality checks.
Diesel/CodeGeneration · high confidence
Diesel DSL parser now supports comments and conventions for commands and domain events
The Diesel parsing engine now allows comments (using semicolons) within application service declarations, namespace declarations, and around conventions. It also introduces parsing support for command and domain event conventions, enabling users to define base types for these entities. Additionally, the parser now recognizes new DSL keywords: defdto for Data Transfer Objects, defdomainevent for domain events, and defenum for enumerations, expanding the types of declarations that can be defined in the DSL.
Diesel/Parsing · high confidence
Diesel compiler now generates C\# source code from DSL models
The Diesel tooling now includes a DieselCompiler class that compiles Diesel DSL source code into C\# source code. The compiler parses the input using the existing grammar, transforms the resulting AST into a semantic model, and then uses CodeDom to generate the final C\# output.
Diesel · high confidence
Initial release of Diesel DSL toolkit for .NET code generation
Diesel is introduced as a Domain-Driven Design toolkit that uses a declarative DSL to generate .NET code for Value Types, Commands, Domain Events, DTOs, and Application Services. The release includes the core solution structure, a Visual Studio T4 template for integration, and comprehensive documentation explaining how to define types like \defvaluetype\ and \defcommand\ to automatically generate constructors, equality operators, and serialization attributes (DataContract/Serializable).
(repo-wide) · high confidence
Introduce model transformation pipeline and semantic model
Diesel now includes a transformation layer that processes the parsed Abstract Syntax Tree (AST) into a Semantic Model. This pipeline applies default values to simple value type declarations (assigning 'Int32' as the default property type and 'Value' as the default property name) and harvests all declared types (commands, DTOs, domain events, enums, value types, and application services) into a known types collection. This semantic model serves as the foundation for subsequent code generation steps.
Diesel/Transformations · high confidence
Behavioural changes
Diesel assembly version updated to 1.15.0
The Diesel assembly metadata has been updated to version 1.15.0. This change updates the AssemblyVersion and AssemblyFileVersion attributes in the project's AssemblyInfo.cs file, ensuring that the compiled library reports the correct version number for consumers and dependency managers.
Diesel/Properties · high confidence
Test coverage
Added integration and unit tests for generated Diesel types; Added test object mothers for Diesel parsing declarations; Added tests for generated code covering nested DTOs, domain events, and value types; Added tests for transformation defaults and type harvesting; Added unit tests for C\# parsing components; Added unit tests for parsing conventions and grammar rules; Added unit tests for the CodeGeneration module.
Dependencies
Added NUnit and Sprache NuGet packages
Added the NUnit 2.6.2 unit testing framework and the Sprache 1.10.0.28 parser library to the project's local packages directory, along with the repositories configuration file.
packages, packages/NUnit.2.6.2, packages/Sprache.1.10.0.28 · high confidence
Initial project setup with Sprache and NUnit dependencies
The Diesel library and its associated test project have been initialized with their build manifests and dependency configurations. The main library references the Sprache parser combinator library (version 1.10.0.28) to support its DSL parsing capabilities, while the test project adds NUnit (version 2.6.2) for unit testing alongside the shared Sprache dependency.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 59 → 57 (-1.2)
- Rubric changed (rubric-2026.08.17 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 95 → 97 (+1.7)
- Architecture 100 → 99 (-0.9)
- Maturity 55 → 45 (-9.8)
- Readiness 43 → 46 (+3.3)
- Security 85 → 85 (+0.0)
Resolved (11)
- Build did not complete in the analyzer
- LLM evaluation failed
- No exposed public API
- Test reliability not measured — no test run produced results
- The 'Defining Simple Value Types' and 'Adding Base Classes or Interfaces to Domain Events' sections are named in the outline but not shown, so their presence cannot be confirmed. (README.md)
- TodoComment (Diesel/Parsing/CSharp/CSharpGrammar.cs)
- TodoComment (Diesel/Parsing/CSharp/CSharpGrammar.cs)
- TodoComment (Test/Parsing/CSharp/ArrayTypeTest.cs)
- TodoComment (Test/Parsing/CSharp/ArrayTypeTest.cs)
- TodoComment (Test/Parsing/CSharp/ArrayTypeTest.cs)
- single-maintainer — knowledge-concentration (bus factor) risk
New (11)
- Dead code: CreateSetMethodForProperty (Diesel/CodeGeneration/CodeDomGenerator.cs)
- Documentation: no installation or build instructions (README.md)
- Documentation: no licence statement (README.md)
- Documentation: no usage examples (README.md)
- ObsoleteWithCallers (Diesel/Parsing/PropertyDeclaration.cs)
- ObsoleteWithCallers (Diesel/Parsing/PropertyDeclaration.cs)
- TodoComment (Diesel/Parsing/CSharp/CSharpGrammar.cs)
- TodoComment (Diesel/Parsing/CSharp/CSharpGrammar.cs)
- TodoComment (Test/Parsing/CSharp/ArrayTypeTest.cs)
- TodoComment (Test/Parsing/CSharp/ArrayTypeTest.cs)
- TodoComment (Test/Parsing/CSharp/ArrayTypeTest.cs)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
mjul/diesel was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit b05bfb4028355a882d73eb96973a4208ac9401d8 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.