Skip to content

[Feature] Bring the HTML report generator to parity with uml4net#112

Merged
samatstariongroup merged 5 commits into
developmentfrom
GH91
Jul 5, 2026
Merged

[Feature] Bring the HTML report generator to parity with uml4net#112
samatstariongroup merged 5 commits into
developmentfrom
GH91

Conversation

@samatstariongroup

Copy link
Copy Markdown
Member

Summary

Brings the EcoreNetto HTML report generator to parity with uml4net (fixes #91). The report is still a single self-contained .html file, now rendering substantially richer content driven from the existing Ecore model.

What is delivered

  • Operations table (parameters with type + multiplicity, return type, documentation).
  • Richer feature flags as chips: {ordered}, {unique}, {id}, {readonly}, {transient}, {volatile}, {unsettable}, {derived}, {composite}, and {opposite: <link>}.
  • Attribute vs reference distinction, plus Specializations and Containers per class.
  • OCL / constraints (Rules) read from the Ecore constraint + OCL annotations.
  • Collapsible sections with expand-all / collapse-all, sidebar toggle, back-to-top / go-to-diagram.
  • SVG diagrams: a model-wide inheritance diagram and per-class inheritance + association diagrams, embedded inline and downloadable.
  • Custom-HTML injection point and stable, unique anchors derived from EObject.Identifier.
  • Primitive types vs other data types split; Interfaces section; enum Value/Literal columns.
  • CSS clean-up (removed dead .rectangle-list, mid-stylesheet @charset, FontAwesome and IE6/7 hacks); a real page footer.

New dependencies

  • Microsoft.Msagl 1.1.6 (graph layout)
  • Svg 3.4.7 (SVG output)

Out of scope

UML-only concepts that do not map to Ecore are intentionally excluded: visibility, stereotypes, and redefinition/subsetting.

Testing

  • Full solution green (dotnet test EcoreNetto.sln): 325 tests.
  • New feature-rich synthetic asset TestData/report-features.ecore plus unit tests for the new helpers, extensions and diagram renderers, and extended HTML report fixtures (feature rendering, custom HTML, overwrite, Open Graph, Capella at scale).
  • New reporting code meets the >= 80% new-code coverage gate.

Add Microsoft.Msagl and Svg package references and the ECoreNetto.Reporting.Drawing renderers (inheritance + association) that produce self-contained SVG, and register them for DI in the Tools host.
… for parity

Add stable anchor slugs, constraint/container/descendant queries and ConstraintInfo; new Anchor/Parameter/Class/IEnumerable helpers and id/opposite helpers; split the payload into primitive types, other data types and interfaces.
…and custom HTML

Render operations, feature-flag chips, attribute/reference split, specializations/containers, OCL rules, collapsible sections with expand/collapse-all, embedded inheritance and association SVG with download, a custom-HTML injection point and stable anchors; clean up dead CSS.
…extensions

Add a feature-rich synthetic ecore asset and tests for the new helpers, extensions and diagram renderers; extend the HTML report fixtures with feature, custom-HTML, overwrite and Open Graph assertions. fixes #91
Use a static Regex with a one-second match timeout instead of the static Regex.Replace helper to guard against pathological input, addressing the SonarCloud DoS hotspot.
@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor
Package Line Rate Branch Rate Complexity Health
ECoreNetto 91% 87% 690
ECoreNetto.Extensions 99% 92% 150
ECoreNetto.HandleBars 99% 95% 102
ECoreNetto.Reporting 89% 76% 338
ECoreNetto.Tools 95% 92% 58
Summary 92% (3414 / 3699) 85% (937 / 1098) 1338

@sonarqubecloud

sonarqubecloud Bot commented Jul 5, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
7.9% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@samatstariongroup
samatstariongroup merged commit a6e1598 into development Jul 5, 2026
13 of 14 checks passed
@samatstariongroup
samatstariongroup deleted the GH91 branch July 5, 2026 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Bring the HTML report generator to parity with uml4net (richer, more feature-complete output)

1 participant