Skip to content

Conversation

@ignatandrei
Copy link
Owner

@ignatandrei ignatandrei commented Dec 20, 2025

Summary by CodeRabbit

  • New Features

    • Added Silhouette, a new .NET profiler source code generator example, bringing the total to 249 examples
    • Introduced new "Profiler" category for profiler-related generators
  • Documentation

    • Added comprehensive documentation, tutorials, and example code for Silhouette profiler integration
    • Updated all documentation references to reflect the new example count and category structure

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 20, 2025

Walkthrough

This PR introduces Silhouette, a .NET profiler library, as the 249th RSCG example. Changes include adding a new Profiler category enum member, updating configuration and data files with the example metadata, creating documentation pages, and providing a complete sample profiler implementation project.

Changes

Cohort / File(s) Summary
Metadata & Count Updates
README.md, later.md, v2/book/list.html, v2/rscg_examples_site/docs/about.md, v2/rscg_examples_site/src/components/HomepageFeatures/index.js, v2/rscg_examples_site/docs/RSCG-Examples/index.md
Increments total RSCG examples from 248 to 249; updates descriptive text and latest update date to 2025-12-16 across multiple files.
Category & Configuration Data
v2/GeneratorData/Category.cs, v2/RSCGExamplesData/GeneratorDataRec.json, v2/rscg_examples_site/static/exports/RSCG.json
Adds new enum member Profiler=44 to Category; creates configuration entries for Silhouette with ID, category, and timestamp.
Documentation & Navigation
v2/.tours/Silhouette.tour, v2/book/examples/Silhouette.html, v2/book/pandocHTML.yaml, v2/rscg_examples_site/docs/Categories/Profiler.md, v2/rscg_examples_site/docs/Categories/_PrimitiveProfiler.mdx, v2/rscg_examples_site/docs/RSCG-Examples/Silhouette.md, v2/rscg_examples_site/docs/indexRSCG.md
Creates new Profiler category documentation, Silhouette example page with badges and code samples, interactive tour configuration, and updates navigation structure.
Example Project Implementation
v2/rscg_examples/Silhouette/src/ProfilerDemo/ProfilerDemo.csproj, v2/rscg_examples/Silhouette/src/ProfilerDemo/MyProfiler.cs, v2/rscg_examples/Silhouette/src/ProfilerDemo/Program.cs, v2/rscg_examples/Silhouette/src/ProfilerDemo.slnx, v2/rscg_examples/Silhouette/description.json, v2/rscg_examples/Silhouette/nuget.txt, v2/rscg_examples/Silhouette/readme.txt, v2/rscg_examples/Silhouette/video.json
Adds complete sample project with C# profiler class deriving from CorProfilerCallback5Base, project configuration enabling AOT and unsafe blocks, metadata JSON, readme documentation, and interactive video script.
Author Information Updates
v2/rscg_examples/RSCG_ExportDiagram/description.json, v2/rscg_examples_site/docs/Authors/Ignat_Andrei.md, v2/rscg_examples_site/docs/Authors/Kevin_Gosse.md
Corrects author name from "AndreiIgnat" to "Ignat Andrei"; updates author documentation to include Silhouette and reorganizes RSCG example references.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Most changes follow repetitive patterns across homogeneous metadata and documentation files
  • Careful attention recommended for v2/rscg_examples/Silhouette/src/ProfilerDemo/MyProfiler.cs to verify COM interop patterns, error handling, and metadata API usage align with Silhouette expectations
  • Verify consistency of the new Silhouette entry across all updated configuration and data files

Possibly related PRs

  • PR #430: Also adds a new RSCG example and modifies v2/GeneratorData/Category.cs enum with a new category member.
  • PR #414: Modifies the same v2/GeneratorData/Category.cs enum by adding a different Category member (Validator=40).
  • PR #405: Follows the same pattern of adding a new RSCG example with metadata updates to configuration and documentation files.

Poem

🐰 A profiler hops into the fold,
Category forty-four, a story to be told!
Silhouette shines bright among the RSCG crew,
Two-forty-nine examples—our collection's made anew! ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title check ❓ Inconclusive The title 'start' is vague and does not convey meaningful information about the changeset, which adds the Silhouette RSCG example. Use a descriptive title that summarizes the main change, such as 'Add Silhouette profiler RSCG example' or 'Add 249th RSCG example: Silhouette'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch Silhoutte

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ignatandrei ignatandrei self-assigned this Dec 20, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (7)
v2/rscg_examples/Silhouette/description.json (1)

22-22: Add a final newline.

The file ends without a newline character, which is generally recommended by most style guides.

v2/rscg_examples/Silhouette/readme.txt (2)

6-6: Break extremely long lines for readability.

This line exceeds 385 characters and combines multiple concepts (creating NativeAOT project, referencing NuGet, adding class, inheritance, overriding Initialize method, and version checking) into a single paragraph. This severely impacts readability and comprehension.

🔎 Suggested improvement

Consider breaking this into multiple shorter paragraphs with clear separation between concepts:

-Create a new C# NativeAOT project. Reference the Silhouette nuget package and add a class inheriting from `Silhouette.CorProfilerCallback11Base` (you can use a different version of `CorProfilerCallbackBase` depending on the version of .NET you're targeting). Override the `Initialize` method. It will be called with the highest version number of `ICorProfilerInfo` supported by the target runtime.
+Create a new C# NativeAOT project.
+
+Reference the Silhouette nuget package and add a class inheriting from `Silhouette.CorProfilerCallback11Base` (you can use a different version of `CorProfilerCallbackBase` depending on the version of .NET you're targeting).
+
+Override the `Initialize` method. It will be called with the highest version number of `ICorProfilerInfo` supported by the target runtime.

29-29: Break extremely long line for readability.

This line exceeds 400 characters and densely packs information about the Profiler attribute, source generator, DllGetClassObject function, and GUID validation. This makes the documentation difficult to read and understand.

🔎 Suggested improvement

Consider breaking this into multiple sentences with clearer separation:

-The `Profiler` attribute triggers a source-generator that emits the proper `DllGetClassObject` function and validates that the user is using the matching guid for the profiler. Alternatively, you can manually implement a `DllGetClassObject` method that will be called by the .NET runtime when initializing the profiler. Use the built-in `ClassFactory` implementation and give it an instance of your `CorProfiler` class.
+The `Profiler` attribute triggers a source-generator that emits the proper `DllGetClassObject` function and validates that the user is using the matching guid for the profiler.
+
+Alternatively, you can manually implement a `DllGetClassObject` method that will be called by the .NET runtime when initializing the profiler. Use the built-in `ClassFactory` implementation and give it an instance of your `CorProfiler` class.
README.md (1)

2159-2177: Check “Nuget” link target for RSCG_ExportDiagram

Line 2167 updates the author correctly to “Ignat Andrei”, but the “Nuget” link for RSCG_ExportDiagram still points to the GitHub repo rather than a nuget.org package URL. If a NuGet package now exists, consider pointing this link to the actual package; if not, you may want to relabel it as “Source” for clarity.

v2/.tours/Silhouette.tour (1)

2-30: Verify CodeTour file paths and Program.cs pattern

The overall tour structure looks fine, but there are a couple of details worth double‑checking:

  • The file paths (rscg_examples/...) assume a particular workspace root. If you typically open the repo at its root (containing v2/), these may need to be prefixed with v2/ to resolve correctly.
  • Step 2 uses "pattern": "this is the code" against Program.cs. That string does not appear in the sample Program.cs in this PR, so the step may not anchor as intended. Consider switching the pattern to something that actually exists (e.g. part of the Console.WriteLine text) or using a line value instead.

Step 3’s reference into obj/GX/... is fine if you expect users to have built the project first, but be aware that file will not exist in a clean checkout.

v2/rscg_examples_site/docs/RSCG-Examples/Silhouette.md (1)

1-52: Silhouette documentation page is solid; minor markdown hygiene nits only

The page structure (frontmatter, NuGet badges, Info/Author/Original Readme/About, example csproj + Program.cs, generated file sample, download/share, SameCategory) is coherent and matches the pattern of other RSCG example pages; the Silhouette content itself looks accurate.

A couple of optional polish points:

  • Lines 34, 37, 39 and the plain URL at 255 are bare URLs. If you care about markdownlint MD034, you can wrap them as Markdown links, e.g. [Silhouette on NuGet](https://www.nuget.org/packages/Silhouette/).
  • The underlined heading in the “Original Readme” snippet (setext style) is what triggers MD003/MD001; since it’s quoting the upstream README, it’s reasonable to leave it as‑is.
  • Ensure that ../Categories/_PrimitiveProfiler.mdx actually exists and is the intended partial for the Profiler category; otherwise, the <SameCategory /> import will fail at build time.

None of these are blockers; they’re just minor cleanup items if you want a perfectly clean markdownlint run.

Also applies to: 142-152, 157-182, 208-235

v2/rscg_examples/Silhouette/src/ProfilerDemo/MyProfiler.cs (1)

1-52: Profiler implementation is correct; be aware of event mask and logging overhead

The usage of Silhouette here looks good:

  • Initialize correctly enforces iCorProfilerInfoVersion >= 5 and configures the profiler via ICorProfilerInfo5.SetEventMask.
  • ClassLoadStarted uses the metadata APIs appropriately to resolve and log the loaded class name, with sensible error handling around ThrowIfFailed()/Win32Exception.
  • Shutdown simply logs and returns S_OK, which is fine for a demo.

For anything beyond a small sample, just keep in mind:

  • COR_PRF_MONITOR_ALL plus a Console.WriteLine on every ClassLoadStarted can have a noticeable performance impact on startup for large applications. You may want to narrow the event mask and/or gate logging if you ever repurpose this code for heavier scenarios.

Otherwise, this file is in good shape.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2db0dd5 and 84a3cc5.

⛔ Files ignored due to path filters (3)
  • v2/Generator/all.csv is excluded by !**/*.csv
  • v2/rscg_examples_site/static/exports/RSCG.xlsx is excluded by !**/*.xlsx
  • v2/rscg_examples_site/static/sources/Silhouette.zip is excluded by !**/*.zip
📒 Files selected for processing (27)
  • README.md (3 hunks)
  • later.md (1 hunks)
  • v2/.tours/Silhouette.tour (1 hunks)
  • v2/GeneratorData/Category.cs (1 hunks)
  • v2/RSCGExamplesData/GeneratorDataRec.json (1 hunks)
  • v2/book/examples/Silhouette.html (1 hunks)
  • v2/book/list.html (2 hunks)
  • v2/book/pandocHTML.yaml (1 hunks)
  • v2/rscg_examples/RSCG_ExportDiagram/description.json (1 hunks)
  • v2/rscg_examples/Silhouette/description.json (1 hunks)
  • v2/rscg_examples/Silhouette/nuget.txt (1 hunks)
  • v2/rscg_examples/Silhouette/readme.txt (1 hunks)
  • v2/rscg_examples/Silhouette/src/ProfilerDemo.slnx (1 hunks)
  • v2/rscg_examples/Silhouette/src/ProfilerDemo/MyProfiler.cs (1 hunks)
  • v2/rscg_examples/Silhouette/src/ProfilerDemo/ProfilerDemo.csproj (1 hunks)
  • v2/rscg_examples/Silhouette/src/ProfilerDemo/Program.cs (1 hunks)
  • v2/rscg_examples/Silhouette/video.json (1 hunks)
  • v2/rscg_examples_site/docs/Authors/Ignat_Andrei.md (2 hunks)
  • v2/rscg_examples_site/docs/Authors/Kevin_Gosse.md (1 hunks)
  • v2/rscg_examples_site/docs/Categories/Profiler.md (1 hunks)
  • v2/rscg_examples_site/docs/Categories/_PrimitiveProfiler.mdx (1 hunks)
  • v2/rscg_examples_site/docs/RSCG-Examples/Silhouette.md (1 hunks)
  • v2/rscg_examples_site/docs/RSCG-Examples/index.md (3 hunks)
  • v2/rscg_examples_site/docs/about.md (1 hunks)
  • v2/rscg_examples_site/docs/indexRSCG.md (3 hunks)
  • v2/rscg_examples_site/src/components/HomepageFeatures/index.js (1 hunks)
  • v2/rscg_examples_site/static/exports/RSCG.json (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
v2/GeneratorData/Category.cs (1)
v2/rscg_examples/Silhouette/src/ProfilerDemo/MyProfiler.cs (1)
  • Profiler (9-52)
🪛 Biome (2.1.2)
v2/rscg_examples/Silhouette/video.json

[error] 35-36: Property key must be double quoted

(parse)


[error] 36-36: unexpected character =

(parse)


[error] 36-36: expected , but instead found " "

Remove " "

(parse)


[error] 36-36: expected : but instead found }

Remove }

(parse)


[error] 37-38: Expected an array, an object, or a literal but instead found ']'.

Expected an array, an object, or a literal here.

(parse)

🪛 markdownlint-cli2 (0.18.1)
v2/rscg_examples_site/docs/indexRSCG.md

23-23: Spaces inside link text

(MD039, no-space-in-links)


119-119: Spaces inside link text

(MD039, no-space-in-links)

v2/rscg_examples_site/docs/RSCG-Examples/Silhouette.md

34-34: Bare URL used

(MD034, no-bare-urls)


37-37: Bare URL used

(MD034, no-bare-urls)


39-39: Bare URL used

(MD034, no-bare-urls)


52-52: Heading style
Expected: atx; Actual: setext

(MD003, heading-style)


142-142: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


170-170: Hard tabs
Column: 1

(MD010, no-hard-tabs)


171-171: Hard tabs
Column: 1

(MD010, no-hard-tabs)


177-177: Hard tabs
Column: 1

(MD010, no-hard-tabs)


178-178: Hard tabs
Column: 1

(MD010, no-hard-tabs)


179-179: Hard tabs
Column: 1

(MD010, no-hard-tabs)


180-180: Hard tabs
Column: 1

(MD010, no-hard-tabs)


181-181: Hard tabs
Column: 1

(MD010, no-hard-tabs)


182-182: Hard tabs
Column: 1

(MD010, no-hard-tabs)


215-215: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


230-230: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: call-workflow-passing-data / build (24.3.0)
🔇 Additional comments (22)
later.md (1)

3-3: LGTM!

The date update correctly reflects the latest change timestamp for the Silhouette addition.

v2/rscg_examples_site/docs/about.md (1)

9-9: LGTM!

The counter increment correctly reflects the addition of Silhouette as the 249th RSCG example.

v2/rscg_examples_site/docs/Authors/Kevin_Gosse.md (1)

3-9: LGTM!

The author page correctly updates to reflect Kevin Gosse's second RSCG entry. The Silhouette entry follows the established format with appropriate badges and date.

v2/rscg_examples/Silhouette/description.json (1)

16-16: Clarify the empty string in includeAdditionalFiles.

The includeAdditionalFiles array contains an empty string. Is this intentional as a placeholder, or should this array be empty [] if no additional files are needed?

v2/rscg_examples_site/docs/Categories/_PrimitiveProfiler.mdx (1)

1-7: LGTM!

The Profiler category documentation follows the established format and correctly lists Silhouette as the first generator in this category.

v2/GeneratorData/Category.cs (1)

48-49: LGTM!

The new Profiler=44 enum member is correctly added, and the trailing comma on the previous entry follows C# best practices for easier future additions.

v2/rscg_examples_site/src/components/HomepageFeatures/index.js (1)

7-7: LGTM!

The homepage feature count correctly updates to 249 examples, reflecting the addition of Silhouette.

v2/book/list.html (1)

20-20: LGTM!

The list title has been correctly updated to 249, and the new Silhouette entry is properly added as item 249 with correct HTML structure and linking.

Also applies to: 1021-1024

v2/rscg_examples/Silhouette/src/ProfilerDemo/Program.cs (1)

1-2: LGTM!

This minimal demo program appropriately directs users to the comprehensive external documentation for implementing the Silhouette profiler.

v2/rscg_examples/Silhouette/src/ProfilerDemo.slnx (1)

1-3: LGTM!

The solution file is correctly structured and references the ProfilerDemo project with proper XML syntax.

v2/rscg_examples/Silhouette/nuget.txt (1)

1-1: LGTM!

This concise description effectively communicates the key value proposition of Silhouette: building .NET profilers using C# instead of C++.

v2/book/pandocHTML.yaml (1)

265-265: LGTM!

The Silhouette.html file has been correctly added to the input-files list, maintaining proper YAML syntax and consistent ordering with other entries.

v2/rscg_examples/RSCG_ExportDiagram/description.json (1)

8-8: LGTM!

The author name has been correctly standardized from "AndreiIgnat" to "Ignat Andrei", aligning with the repository-wide consistency updates shown throughout this PR.

v2/rscg_examples_site/docs/Categories/Profiler.md (1)

1-6: LGTM!

The new Profiler category page is correctly structured with proper heading, count (1 RSCG), and the Silhouette entry including NuGet/GitHub badges and the correct date (2025-12-16).

v2/rscg_examples_site/docs/RSCG-Examples/index.md (1)

3-4: LGTM! Profiler category and Silhouette entry correctly integrated.

The count update to 249, the new Profiler category section, and the mermaid flowchart edge all follow the established patterns in the file.

Also applies to: 1318-1328, 1995-1996

v2/rscg_examples/Silhouette/src/ProfilerDemo/ProfilerDemo.csproj (3)

8-9: AOT and unsafe blocks are appropriate for profiler scenarios.

The configuration with PublishAot and AllowUnsafeBlocks is appropriate for a profiler demo that likely requires low-level access and native interop.


5-5: No changes needed.

.NET 10 was officially released on November 11, 2025 and is a long-term support (LTS) version scheduled to receive updates until November 2028. Targeting net10.0 is appropriate and correct for this project as of December 2025.


13-13: No issues found with Silhouette package version 3.2.0.

The package version 3.2.0 exists on NuGet and is used in current examples with net10.0 target framework. The project is properly configured with required settings for NativeAOT compilation.

v2/rscg_examples_site/static/exports/RSCG.json (1)

1989-1996: LGTM! Silhouette export entry is correctly formatted.

The JSON entry for Silhouette follows the established structure with all required fields (Name, Link, NuGet, Source, Category, AddedOn) properly populated.

v2/RSCGExamplesData/GeneratorDataRec.json (1)

1507-1512: LGTM! The Silhouette entry is correctly structured.

The entry follows the existing JSON format, and Category value 44 correctly corresponds to the Profiler enum member defined in Category.cs.

README.md (1)

1-3: Silhouette entry and top-level metadata are consistent

The header, example count (249), Microsoft count (16), latest update date, and the new Silhouette block (item 249) all line up and use the correct author, NuGet, docs, and source links. No issues from a content or consistency standpoint.

Also applies to: 7-7, 15-15, 27-49

v2/rscg_examples_site/docs/Authors/Ignat_Andrei.md (1)

3-52: Author list and counts updated correctly

Number RSCG: 24 matches the 24 entries listed, and the new tail entries (RSCG_ExportDiagram, RSCG_NameGenerator, rscg_queryables, rscg_Interface_to_null_object, RSCG_CompositeProvider, rscg_demeter, RSCG_MCP2OpenAPI, RSCG_MCP2File) have dates and links that line up with the corresponding entries in the main README and category docs. Aside from the previously noted NuGet‑vs‑GitHub link choice for RSCG_ExportDiagram, this file looks good.


<h2>About</h2>

Profiling .net applicationsMeasuring performance improvements
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add spacing/punctuation between sentences.

The description text is missing proper spacing or punctuation between "applications" and "Measuring".

🔎 Proposed fix
-Profiling .net applicationsMeasuring performance improvements
+Profiling .NET applications. Measuring performance improvements.

Note: Also consider capitalizing ".NET" for consistency with official branding.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Profiling .net applicationsMeasuring performance improvements
Profiling .NET applications. Measuring performance improvements.
🤖 Prompt for AI Agents
In v2/book/examples/Silhouette.html around line 15, the sentence "Profiling .net
applicationsMeasuring performance improvements" lacks spacing/punctuation and
uses incorrect casing; split into two sentences or add a separator and
capitalize ".NET" (e.g., "Profiling .NET applications. Measuring performance
improvements" or "Profiling .NET applications — measuring performance
improvements") to fix readability and branding.


| No | Name | Date | Category |
| --------- | ----- | ---- | -------- |
|249| [Silhouette by Kevin Gosse ](/docs/Silhouette)|2025-12-16 => 16 December 2025 | [Profiler](/docs/Categories/Profiler) |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix markdown formatting: remove space before closing bracket.

The link has an extra space before the closing bracket, which violates markdown best practices.

🔎 Proposed fix
-|249| [Silhouette by Kevin Gosse ](/docs/Silhouette)|2025-12-16 => 16 December 2025 | [Profiler](/docs/Categories/Profiler) |
+|249| [Silhouette by Kevin Gosse](/docs/Silhouette)|2025-12-16 => 16 December 2025 | [Profiler](/docs/Categories/Profiler) |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
|249| [Silhouette by Kevin Gosse ](/docs/Silhouette)|2025-12-16 => 16 December 2025 | [Profiler](/docs/Categories/Profiler) |
|249| [Silhouette by Kevin Gosse](/docs/Silhouette)|2025-12-16 => 16 December 2025 | [Profiler](/docs/Categories/Profiler) |
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

23-23: Spaces inside link text

(MD039, no-space-in-links)

🤖 Prompt for AI Agents
In v2/rscg_examples_site/docs/indexRSCG.md around line 23, the markdown link
text "[Silhouette by Kevin Gosse ](/docs/Silhouette)" contains an extra space
before the closing bracket; remove the trailing space so the link becomes
"[Silhouette by Kevin Gosse](/docs/Silhouette)" to fix formatting and comply
with markdown best practices.

|155| [Coplt.Dropping by 2A5F ](/docs/Coplt.Dropping)|2024-08-13 => 13 August 2024 | [Disposer](/docs/Categories/Disposer) |
|154| [Fluentify by Paul Martins ](/docs/Fluentify)|2024-08-02 => 02 August 2024 | [Builder](/docs/Categories/Builder) |
|153| [RSCG_ExportDiagram by AndreiIgnat ](/docs/RSCG_ExportDiagram)|2024-08-01 => 01 August 2024 | [EnhancementProject](/docs/Categories/EnhancementProject) |
|153| [RSCG_ExportDiagram by Ignat Andrei ](/docs/RSCG_ExportDiagram)|2024-08-01 => 01 August 2024 | [EnhancementProject](/docs/Categories/EnhancementProject) |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix markdown formatting: remove space before closing bracket.

The link has an extra space before the closing bracket, which violates markdown best practices.

🔎 Proposed fix
-|153| [RSCG_ExportDiagram by Ignat Andrei ](/docs/RSCG_ExportDiagram)|2024-08-01 => 01 August 2024 | [EnhancementProject](/docs/Categories/EnhancementProject) |
+|153| [RSCG_ExportDiagram by Ignat Andrei](/docs/RSCG_ExportDiagram)|2024-08-01 => 01 August 2024 | [EnhancementProject](/docs/Categories/EnhancementProject) |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
|153| [RSCG_ExportDiagram by Ignat Andrei ](/docs/RSCG_ExportDiagram)|2024-08-01 => 01 August 2024 | [EnhancementProject](/docs/Categories/EnhancementProject) |
|153| [RSCG_ExportDiagram by Ignat Andrei](/docs/RSCG_ExportDiagram)|2024-08-01 => 01 August 2024 | [EnhancementProject](/docs/Categories/EnhancementProject) |
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

119-119: Spaces inside link text

(MD039, no-space-in-links)

🤖 Prompt for AI Agents
In v2/rscg_examples_site/docs/indexRSCG.md around line 119, the markdown link
label "RSCG_ExportDiagram by Ignat Andrei " contains an extra trailing space
before the closing bracket; remove that space so the link label reads
"[RSCG_ExportDiagram by Ignat Andrei]" (no space before ]), preserving the rest
of the line unchanged to fix markdown formatting.

"data":{
"goodFor":["Profiling .net applications","Measuring performance improvements"],
"csprojDemo":"ProfilerDemo.csproj",
"csFiles":["Program.cs"],
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add MyProfiler.cs to the csFiles array.

The csFiles array only includes "Program.cs", but MyProfiler.cs contains the core profiler implementation and should likely be documented as part of the example.

🔎 Proposed fix
-     "csFiles":["Program.cs"],
+     "csFiles":["Program.cs","MyProfiler.cs"],
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"csFiles":["Program.cs"],
"csFiles":["Program.cs","MyProfiler.cs"],
🤖 Prompt for AI Agents
In v2/rscg_examples/Silhouette/description.json around line 14, the csFiles
array currently lists only "Program.cs" but omits "MyProfiler.cs"; update the
csFiles array to include "MyProfiler.cs" (e.g., add "MyProfiler.cs" as an entry
alongside "Program.cs") so the profiler implementation file is documented and
packaged with the example.

Comment on lines +35 to +38
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Silhouette#download-example-net--c-",
SpeakTest=" "},
{"typeStep":"waitseconds","arg":"30"},
]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Fix critical JSON syntax errors.

The JSON file contains multiple syntax errors that will prevent it from being parsed:

  1. Line 36: SpeakTest=" " should be "SpeakTest": " " (missing colon and quotes around the key)
  2. Line 38: Extra closing bracket ] after the last step

These errors were correctly identified by the static analysis tool.

🔎 Proposed fix
-{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Silhouette#download-example-net--c-",
-SpeakTest=" "},
-{"typeStep":"waitseconds","arg":"30"},
+{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Silhouette#download-example-net--c-","SpeakTest":" "},
+{"typeStep":"waitseconds","arg":"30"}
 ]
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Silhouette#download-example-net--c-",
SpeakTest=" "},
{"typeStep":"waitseconds","arg":"30"},
]
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Silhouette#download-example-net--c-","SpeakTest":" "},
{"typeStep":"waitseconds","arg":"30"}
]
}
🧰 Tools
🪛 Biome (2.1.2)

[error] 35-36: Property key must be double quoted

(parse)


[error] 36-36: unexpected character =

(parse)


[error] 36-36: expected , but instead found " "

Remove " "

(parse)


[error] 36-36: expected : but instead found }

Remove }

(parse)


[error] 37-38: Expected an array, an object, or a literal but instead found ']'.

Expected an array, an object, or a literal here.

(parse)

🤖 Prompt for AI Agents
In v2/rscg_examples/Silhouette/video.json around lines 35 to 38, the JSON has
two syntax errors: the step object uses SpeakTest=" " instead of a proper JSON
key/value ("SpeakTest": " "), and there is an extraneous closing bracket (])
after the last step; fix by replacing SpeakTest=" " with "SpeakTest": " " (add
quotes around key and a colon) and remove the extra closing bracket so the
array/object structure is correctly terminated (also verify commas between array
items are correct).

@ignatandrei ignatandrei merged commit 3c441ab into main Dec 20, 2025
3 checks passed
@ignatandrei ignatandrei deleted the Silhoutte branch December 20, 2025 07:12
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.

2 participants