diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 42b8dea3..d51c9f03 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -10,14 +10,14 @@ "rollForward": false }, "dotnet-inspect": { - "version": "0.25.0", + "version": "0.26.0", "commands": [ "dotnet-inspect" ], "rollForward": false }, "purview.build": { - "version": "0.5.3", + "version": "0.5.4", "commands": [ "purview-build" ], diff --git a/.config/purview-build.json b/.config/purview-build.json index d6a2629a..ed782b74 100644 --- a/.config/purview-build.json +++ b/.config/purview-build.json @@ -13,7 +13,6 @@ "RequireSymbolPackage": false, "RequiredContent": { "purview.telemetry.sourcegenerator": [ - ".agents/**/*", "analyzers/dotnet/cs/Purview.Telemetry.SourceGenerator.dll", "analyzers/dotnet/cs/Purview.Telemetry.SourceGenerator.Refactorings.dll", "README.md", diff --git a/AGENTS.md b/AGENTS.md index 773c0d93..e6b9353e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -126,7 +126,8 @@ benchmarks/ └── Purview.Telemetry.Benchmarks/ # BenchmarkDotNet project (net48/net8.0/net9.0/net10.0) .build/ # TS scripts (build-pack.ts, update-version.ts) -.agents/ # Agent skills/prompts/agents (see "Agent instructions") +.agents/ # Package-delivered skills/prompts/agents (gitignored mirror) +skills/ # Authored skills shipped by this package (see "Authoring skills") .config/ # dotnet-tools.json, lefthook.yml .github/workflows/ # pr.yml, release.yml (reusable purview-dev/build workflows) scripts/ # setup-release.* (legacy changesets DSC scripts) @@ -172,21 +173,57 @@ The sample projects enable `EmitCompilerGeneratedFiles`, so generated telemetry `AnalyzerReleases.Shipped.md` at release time. `RS2003` is suppressed — see the comment in `src/src/SourceGenerator/SourceGenerator.csproj`. -## Source-generator and testing skills - -Load the relevant skill before doing specialist work: - -- `.agents/skills/source-generator-codewriter-modernization/SKILL.md` — CodeWriter/XmlCommentWriter - emission, incremental pipeline design, value equality, Roslyn best practices. -- `.agents/skills/source-generator-testing/SKILL.md` — picking the right runner/base, configuring - options, `CodeQuery`, asserting incremental caching. -- `.agents/skills/tunit-test-authoring/SKILL.md` — TUnit base classes, assertion extensions, - modernising existing tests. -- `.agents/skills/sdk-configuration-reference/SKILL.md`, - `.agents/skills/sdk-project-behavior-and-detection/SKILL.md`, - `.agents/skills/project-placement-defaults/SKILL.md` — `Purview.BuildSdk` configuration, - project-type detection, and placement rules. -- `.agents/agents/sdk-consumer-setup.md` — generic agent spec for helping consuming repos adopt the SDK. +## Skills from other repositories + +Specialist source-generator and SDK guidance — `CodeWriter` emission, incremental pipeline design, +test runners and `CodeQuery`, `Purview.BuildSdk` configuration — is published by the repositories +that own it. Install what you need through the skills CLI; it lands in `.agents/skills/`, which is +gitignored and recorded in `skills-lock.json`: + +```bash +npx skills add purview-dev/sourcegenerator-framework +npx skills add purview-dev/build-sdk +``` + +Do not edit anything under `.agents/skills/` — the CLI is its only writer. + +## Authoring skills + +Authored skills live in the repository-root `skills/` folder. **Nothing packs them into a NuGet +package.** `Purview.BuildSdk` 1.0.6 removed skill packaging outright — the skills CLI clones the +*git* repository and only discovers a root `skills/` folder, so that is the one delivery route. +`PurviewSkillsToPack`, the `IncludeRepositorySkillsInPackage` shim in `src/Directory.Build.targets`, +and the `.agents/**/*` entry in `.config/purview-build.json` went with it. + +```bash +npx skills add purview-dev/telemetry-sourcegenerator +``` + +| Skill | Answers | +| --- | --- | +| `skills/purview-telemetry-quickstart/` | adding the package, a first telemetry interface, registering it in DI | +| `skills/purview-telemetry-design/` | one interface or several, naming, structuring multi-target methods | +| `skills/purview-telemetry-migration/` | converting existing `ILogger`, `ActivitySource` or instrument code | +| `skills/purview-telemetry-multi-targeting/` | emitting an Activity, a log and a metric from one method | +| `skills/purview-telemetry-diagnostics/` | what a `TSG` diagnostic means and how to fix it | + +Every skill carries the `purview-telemetry` prefix. Skills install into one flat directory per agent, +shared with every skill a developer has installed from anywhere, so an unprefixed name collides and +the loser is whichever installed second. + +To add a skill: create `skills//SKILL.md` with spec-legal frontmatter, and nothing else. There +is no per-project registration any more. + +`src/tests/Repository.UnitTests/SkillTests.cs` validates every skill on every test run, through +`Purview.Skills.Testing`'s rule set (the Agent Skills specification: frontmatter fields, name and +description constraints, bundled links, body size). The `[InheritsTests]` attribute on that class is +load-bearing — TUnit does not walk base types during discovery, so without it the run is green and +nothing is checked. That project is single-targeted at `net10.0`, because it asserts something about +the repository rather than about the runtime's reach. + +A relative link from one `SKILL.md` into another skill's folder is a rule violation: only a skill's +own folder is installed with it, so such a link works here and nowhere else. Name the other skill in +prose instead, and keep deep detail in the skill's own `references/`. ## Benchmarking and performance documentation diff --git a/Directory.Packages.props b/Directory.Packages.props index 96661c3a..d307c538 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -2,16 +2,16 @@ true 5.9.0 - 1.74.0 - 1.1.0 - 10.0.12 - 10.10.0 + 1.75.0 + 1.1.1 + 10.0.13 + 10.11.0 1.18.0 - + @@ -27,6 +27,7 @@ + diff --git a/global.json b/global.json index 5ad43180..32f1a20f 100644 --- a/global.json +++ b/global.json @@ -3,7 +3,7 @@ "allowPrerelease": false }, "msbuild-sdks": { - "Purview.BuildSdk": "1.0.5" + "Purview.BuildSdk": "1.0.6" }, "test": { "runner": "Microsoft.Testing.Platform" diff --git a/package.json b/package.json index a165d518..23ad3913 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "telemetry-sourcegenerator", - "version": "5.0.3", + "version": "5.0.4", "description": "Generates [`ActivitySource`](https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.activitysource), [`ILogger`](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.ilogger), and [`Metrics`](https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.metrics) based on interface methods.", "license": "MIT", "readme": "README.md", @@ -13,4 +13,4 @@ "url": "https://github.com/purview-dev/telemetry-sourcegenerator/issues" }, "homepage": "https://purview.dev/projects/telemetry-sourcegenerator/" -} \ No newline at end of file +} diff --git a/src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-design/SKILL.md b/skills/purview-telemetry-design/SKILL.md similarity index 98% rename from src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-design/SKILL.md rename to skills/purview-telemetry-design/SKILL.md index c73347de..c8df5f81 100644 --- a/src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-design/SKILL.md +++ b/skills/purview-telemetry-design/SKILL.md @@ -1,7 +1,7 @@ --- -name: telemetry-sourcegenerator-design +name: purview-telemetry-design description: Design best practices for Purview.Telemetry.SourceGenerator interfaces. Use when deciding between a single telemetry interface and per-area interfaces, choosing telemetry names, designing multi-target methods, or reviewing telemetry structure in a C# project. -license: ISC +license: MIT compatibility: C# projects using Purview.Telemetry.SourceGenerator. metadata: author: Purview-Dev diff --git a/src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-design/references/REFERENCE.md b/skills/purview-telemetry-design/references/REFERENCE.md similarity index 100% rename from src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-design/references/REFERENCE.md rename to skills/purview-telemetry-design/references/REFERENCE.md diff --git a/skills/purview-telemetry-diagnostics/SKILL.md b/skills/purview-telemetry-diagnostics/SKILL.md new file mode 100644 index 00000000..fec24d27 --- /dev/null +++ b/skills/purview-telemetry-diagnostics/SKILL.md @@ -0,0 +1,168 @@ +--- +name: purview-telemetry-diagnostics +description: >- + Use when a Purview.Telemetry.SourceGenerator build reports a TSG diagnostic - TSG1xxx general, + TSG2xxx logging, TSG3xxx activities, TSG4xxx metrics - to find what triggered it and how to fix it, + or when deciding whether a rule can be suppressed. +license: MIT +compatibility: C# projects using Purview.Telemetry.SourceGenerator. +metadata: + author: Purview-Dev + product: Purview.Telemetry.SourceGenerator + repository: purview-dev/telemetry-sourcegenerator +--- + +# Purview.Telemetry.SourceGenerator diagnostics + +One Roslyn analyzer, `TelemetryDiagnosticAnalyzer`, validates telemetry interfaces and raises `TSG` +diagnostics in four families: + +| Family | Covers | +| --- | --- | +| `TSG1xxx` | general — interface and method shape, targets, framework support | +| `TSG2xxx` | logging | +| `TSG3xxx` | activities | +| `TSG4xxx` | metrics | + +Every rule is tracked in `AnalyzerReleases.Shipped.md` / `AnalyzerReleases.Unshipped.md` with its ID, +category and severity, validated by the Roslyn release-tracking analyzers on every build. A new or +changed diagnostic must be recorded there in the same change. + +## General — `TSG1xxx` + +| ID | Severity | Reported when | +| --- | --- | --- | +| `TSG1000` | Error | An unexpected exception escaped the generation pipeline. | +| `TSG1001` | Error | A method on a multi-target interface has no explicit generation attribute — inference is not supported there. | +| `TSG1002` | Error | Two attributes from the same target family on one method. Only one Activity, Logging or Metrics attribute per method. | +| `TSG1003` | Error | Two methods on the interface share a name. | +| `TSG1004` | Error | Generic interfaces are not supported. | +| `TSG1005` | Error | Generic methods are not supported. | +| `TSG1006` | Warning | `ExcludeTargets` names a target not present on the method. | +| `TSG1007` | Warning | `ExcludeTargets` leaves a target with an empty or invalid parameter set. | +| `TSG1008` | Warning | An `Activity`-typed parameter on a method with no `[Activity]`/`[Event]`/`[Context]`. | +| `TSG1010` | Error | A method carries an attribute for a target family the interface does not register. | +| `TSG1011` | Error | The compilation targets neither .NET 8+ nor .NET Framework 4.8+. Define `PURVIEW_TELEMETRY_NON_NULLABLE` to opt out. | + +## Logging — `TSG2xxx` + +| ID | Severity | Reported when | +| --- | --- | --- | +| `TSG2000` | Error | A non-scoped log method has more than one `Exception` parameter. | +| `TSG2001` | Error | A v1-mode log method has more than 6 non-exception parameters. | +| `TSG2002` | Info | v1 generation inferred `Error` from a lone `Exception` parameter with no explicit level. | +| `TSG2003` | Warning | No reference to `Microsoft.Extensions.Logging.ILogger`; log generation is skipped. | +| `TSG2004` | Error | Ordinal and named placeholders mixed in one message template. | +| `TSG2005` | Error | The maximum ordinal placeholder exceeds the parameter count. | +| `TSG2006` | Error | `[LogProperties]` and `[ExpandEnumerable]` on the same parameter. | +| `TSG2007` | Warning | A scoped log declares a `LogLevel`; it is ignored. | +| `TSG2008` | Warning | `[ExpandEnumerable]` has a `MaximumValueCount` above the recommended default of 5. | +| `TSG2021` | Error | A log method returns something other than `void` or `IDisposable`. (`Activity` is allowed when the method is also an Activity method.) | + +## Activities — `TSG3xxx` + +| ID | Severity | Reported when | +| --- | --- | --- | +| `TSG3000` | Warning | A baggage parameter is not a string; `ToString()` will be called. | +| `TSG3001` | Warning | No activity source name available anywhere; generation defaults to `purview`. | +| `TSG3002` | Error | An Activity/Event method returns something other than `void` or `Activity`. | +| `TSG3003` | Error | More than one parameter maps to the same reserved destination. | +| `TSG3004` | Error | An `Activity`-destination parameter on an Activity method — only valid on `[Event]`. | +| `TSG3005` | Error | A `timestamp` parameter on a method that is not `[Event]`. | +| `TSG3006` | Error | A start-time parameter on a Create-activity or Event method. | +| `TSG3007` | Error | A parent-context or parent-id parameter on an event. | +| `TSG3008` | Error | Activity-links parameters on an event or context method. | +| `TSG3009` | Error | An activity-tags parameter on a context method. | +| `TSG3010` | Error | An escaped parameter is not a boolean. | +| `TSG3011` | Error | Escaped parameters on an Activity or Context method — Events only. | +| `TSG3012` | Info | No Activity methods defined; `Activity.Current` is assumed. | +| `TSG3013` | Warning | An Activity method does not return the created `Activity`. | +| `TSG3014` | Warning | An Event/Context method has no `Activity` parameter. Controlled by `ActivitySourceGeneration.GenerateDiagnosticsForMissingActivity` (default `true`). | +| `TSG3015` | Info | `Activity` should be the first parameter. Same opt-in as `TSG3014`. | +| `TSG3016` | Error | A status-description parameter is not a string. | +| `TSG3017` | Error | Status-description parameters on an Activity or Context method — Events only. | +| `TSG3021` | Info | An `[Event]` records an exception under the OpenTelemetry rules but is not named `"exception"`. | +| `TSG3022` | Warning | An Activity method returns non-nullable `Activity`. | + +## Metrics — `TSG4xxx` + +| ID | Severity | Reported when | +| --- | --- | --- | +| `TSG4000` | Error | A method on a Metrics interface has no instrument attribute and is not excluded. | +| `TSG4001` | Error | A metrics-owned method returns something other than `void` or `bool`. | +| `TSG4002` | Error | An auto-increment instrument also declares a measurement parameter. | +| `TSG4003` | Error | More than one measurement value. | +| `TSG4004` | Error | A non-auto-increment instrument method has no measurement parameter. | +| `TSG4005` | Error | An observable instrument is not declared as `Func`. | +| `TSG4006` | Error | The measurement type is not `byte`, `short`, `int`, `long`, `double`, `float`, `decimal`, `Measurement` or `IEnumerable>`. | +| `TSG4007` | Error | An observable metric returns `bool`. | +| `TSG4008` | Error | An `AutoCounter` does not return `void`. | +| `TSG4009` | Warning | The instrument name matches the instrument type name. Name what is measured, not the instrument. | + +## The ones people actually hit + +### `TSG1001` — inference is off on a multi-target interface + +A method on an interface carrying `[ActivitySource]` + `[Logger]` + `[Meter]` has no explicit +attribute. Add one per target the method should emit, or mark it `[Exclude]`: + +```csharp +[ActivitySource("MyApp")] +[Logger] +[Meter] +interface IMyTelemetry +{ + [Info] // explicit target + void ProcessItem(int id); +} +``` + +### `TSG3013` / `TSG3014` — the Activity went missing + +Return the created `Activity` (as `Activity?`, per `TSG3022` — it is null when no listeners are +active) and pass it into the Event and Context methods that should attach to it. Both are +best-practice rules controlled by `ActivitySourceGeneration.GenerateDiagnosticsForMissingActivity`. + +### `TSG3021` — exception event name + +Name the event `exception` so the OpenTelemetry exception tags (`exception.type`, +`exception.message`, `exception.stacktrace`, `exception.escaped`) attach to *that* event rather than +a separate one: + +```csharp +[Event(Name = "exception")] // the event carries the exception tags +void FailedToRetrieve(Activity? activity, Exception exception); +``` + +A `Name` on a **logging** attribute does not name the event — it renames the log entry: + +```csharp +[Event] // event name is still the method name +[Error(Name = "exception")] // this renames the log entry +void FailedToRetrieve(Activity? activity, Exception exception); +``` + +The rule is not raised when the exception is not recorded under the OpenTelemetry rules: +`[Event(UseRecordExceptionRules = false)]`, a `[Baggage]` exception parameter, or an exception +parameter excluded from the Activities target (`[ExcludeTargets(Targets.Activities)]`). + +### `TSG2008` — unbounded enumeration + +`[ExpandEnumerable]` with `MaximumValueCount` above 5. Bring it back to the default unless you have +measured the cost. + +### `TSG4002` — auto-increment counter with a measurement + +`[AutoCounter]` — equivalently `[Counter(AutoIncrement = true)]` — must declare no measurement +parameter. The measurement is fixed at 1. + +### `TSG1003` — duplicate method names + +The method name becomes a member on the generated implementation class, so two methods cannot share +one. Rename. + +## Related skills + +`purview-telemetry-quickstart` to get an interface wired up, `purview-telemetry-design` for +structuring interfaces, and `purview-telemetry-migration` for converting existing `ILogger`, +`ActivitySource` or instrument code. diff --git a/src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-migration/SKILL.md b/skills/purview-telemetry-migration/SKILL.md similarity index 98% rename from src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-migration/SKILL.md rename to skills/purview-telemetry-migration/SKILL.md index 387077c6..b9a01fad 100644 --- a/src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-migration/SKILL.md +++ b/skills/purview-telemetry-migration/SKILL.md @@ -1,7 +1,7 @@ --- -name: telemetry-sourcegenerator-migration +name: purview-telemetry-migration description: Migrate existing ILogger, ActivitySource, or System.Diagnostics.Metrics instrument code to Purview.Telemetry.SourceGenerator interfaces. Use when converting hand-written telemetry to generated telemetry interfaces, or when a user wants to replace ILogger, ActivitySource, or Counter/Histogram/UpDownCounter usage with Purview telemetry. -license: ISC +license: MIT compatibility: C# projects using Purview.Telemetry.SourceGenerator. metadata: author: Purview-Dev diff --git a/src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-migration/references/REFERENCE.md b/skills/purview-telemetry-migration/references/REFERENCE.md similarity index 100% rename from src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-migration/references/REFERENCE.md rename to skills/purview-telemetry-migration/references/REFERENCE.md diff --git a/skills/purview-telemetry-multi-targeting/SKILL.md b/skills/purview-telemetry-multi-targeting/SKILL.md new file mode 100644 index 00000000..d9654ab9 --- /dev/null +++ b/skills/purview-telemetry-multi-targeting/SKILL.md @@ -0,0 +1,224 @@ +--- +name: purview-telemetry-multi-targeting +description: >- + Use when one Purview.Telemetry.SourceGenerator method should emit several kinds of telemetry at + once - an Activity, a log entry and a metric from a single call. Covers combining [ActivitySource], + [Logger] and [Meter] on an interface, the supported per-method attribute combinations, excluding a + parameter from one target with [ExcludeTargets], return types, and why inference turns off. +license: MIT +compatibility: C# projects using Purview.Telemetry.SourceGenerator. +metadata: + author: Purview-Dev + product: Purview.Telemetry.SourceGenerator + repository: purview-dev/telemetry-sourcegenerator +--- + +# Multi-targeting + +One interface — and one *method* — can generate Activities, logs and metrics together. A single call +then emits all of them, from one set of parameters. + +```csharp +using Purview.Telemetry; + +[ActivitySource("OrderService")] +[Logger] +[Meter] +interface IOrderTelemetry +{ + // Activity + Info log + counter increment, from one call. + [Activity] + [Info] + [AutoCounter] + Activity? ProcessingOrder([Baggage] int orderId, [Tag] string customerName); + + // ActivityEvent + Debug log. + [Event] + [Debug] + void OrderValidated(Activity? activity, decimal amount); + + // Log only. + [Warning] + void OrderRejected(int orderId, string reason); + + // Metric only. + [Histogram] + void OrderProcessingDuration([InstrumentMeasurement] int milliseconds); +} +``` + +```csharp +using var activity = telemetry.ProcessingOrder(123, "Acme Corp"); +// Activity created and started, Info log written, counter incremented by 1. +``` + +## What you may combine + +| Combination | Example | +| --- | --- | +| Activity + Log | `[Activity]` + `[Info]` | +| Activity + Metric | `[Activity]` + `[AutoCounter]` | +| Log + Metric | `[Info]` + `[Histogram]` | +| Activity + Log + Metric | `[Activity]` + `[Info]` + `[AutoCounter]` | +| Event + Log | `[Event]` + `[Debug]` | +| Context + Log | `[Context]` + `[Trace]` | + +**One attribute per family, per method** — more is `TSG1002`: + +- Activities: one of `[Activity]`, `[Event]`, `[Context]`. +- Logging: one of `[Log]`, `[Trace]`, `[Debug]`, `[Info]`, `[Warning]`, `[Error]`, `[Critical]`. +- Metrics: one of `[Counter]`, `[AutoCounter]`, `[Histogram]`, `[UpDownCounter]`, or an observable + variant. + +```csharp +[Activity] +[Event] // TSG1002 +void InvalidMethod(Activity? activity); + +[Counter] +[Histogram] // TSG1002 +void InvalidMethod([InstrumentMeasurement] int value); +``` + +## Inference turns off — and that is the point + +An interface with **more than one** class-level attribute (`[ActivitySource]`, `[Logger]`, `[Meter]`) +disables inference. Every method must then declare its targets explicitly, or be `[Exclude]`d: + +```csharp +[ActivitySource("MyApp")] +[Logger] +[Meter] +interface IMyTelemetry +{ + void ProcessItem(int id); // TSG1001 - no explicit attribute + + [Info] + void ProcessItemLogged(int id); // fine + + [Exclude] + void NotTelemetry(int id); // fine +} +``` + +A single-target interface keeps inference. The alternative — guessing which of three families an +unannotated method meant — would silently emit the wrong telemetry, so the generator refuses. + +## Excluding a parameter from one target + +`[ExcludeTargets(Targets.X)]` on a parameter keeps it out of specific families. Use it when a value +is useful in one place and harmful in another — a verbose message is wasted as a metric tag, and an +internal reference may not belong in Activity baggage: + +```csharp +[ActivitySource("PaymentService")] +[Logger] +[Meter] +interface IPaymentTelemetry +{ + [Activity] + [Info] + [Counter] + Activity? ProcessingPayment( + [Baggage] Guid paymentId, + + [ExcludeTargets(Targets.Metrics)] + string processingMessage, + + [InstrumentMeasurement] + decimal amount, + + [ExcludeTargets(Targets.Activities)] + [Tag] // still in logs and metrics + string internalReference + ); +} +``` + +```csharp +[Flags] +public enum Targets +{ + None = 0, + Activities = 1, + Logging = 2, + Metrics = 4, + All = Activities | Logging | Metrics +} +``` + +Flags combine, so `[ExcludeTargets(Targets.Activities | Targets.Metrics)]` leaves a parameter to +logging alone. + +## Return types + +| Shape | Return | +| --- | --- | +| Activity + anything else | `Activity?` — so the caller can dispose it and pass it to Event/Context methods | +| Log + Metric, no Activity | `void`, or `IDisposable?` for a scoped log | +| Event/Context + Log | `void` | + +```csharp +[Activity] +[Info] +[AutoCounter] +Activity? ProcessingOrder(int orderId); + +[Info] +[AutoCounter] +IDisposable? ProcessingBatch(int batchId); // scoped log + counter + +[Event] +[Debug] +void OrderCompleted(Activity? activity, decimal total); +``` + +Return `Activity?`, not `Activity`: it is null when no listeners are active (`TSG3022`). + +## Patterns worth copying + +Full observability on one call: + +```csharp +[Activity] +[Info] +[AutoCounter] +Activity? ProcessingRequest( + [Baggage] string requestId, + [Tag] string endpoint, + [Tag] string method +); +``` + +Selective parameter routing: + +```csharp +[Activity] +[Info] +[Counter] +Activity? ApiCall( + [Baggage] string traceId, // Activity baggage only + [ExcludeTargets(Targets.Metrics)] string verboseMessage, // Activity + log + [InstrumentMeasurement] + [ExcludeTargets(Targets.Activities | Targets.Logging)] + int callCount, // metrics only + [Tag] string endpoint // all three +); +``` + +## Why bother + +One method definition instead of three call sites; the same parameters feed every family, so they +cannot drift; everything is emitted together; a change lands once; and it is one call rather than +several. + +## Diagnostics you will meet here + +| Diagnostic | Fix | +| --- | --- | +| `TSG1001` | Add an explicit target attribute, or `[Exclude]`. | +| `TSG1002` | One Activity, Logging and Metrics attribute per method. | +| `TSG1006` | `[ExcludeTargets]` names a target the method does not have — remove it, or add the target attribute. | +| `TSG1007` | Exclusions left a target with no valid parameters — adjust them. | + +The `purview-telemetry-diagnostics` skill carries the full `TSG` catalogue. diff --git a/src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-quickstart/SKILL.md b/skills/purview-telemetry-quickstart/SKILL.md similarity index 98% rename from src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-quickstart/SKILL.md rename to skills/purview-telemetry-quickstart/SKILL.md index be4de8c4..1743ffe3 100644 --- a/src/src/SourceGenerator/Sdk/.agents/skills/telemetry-sourcegenerator-quickstart/SKILL.md +++ b/skills/purview-telemetry-quickstart/SKILL.md @@ -1,7 +1,7 @@ --- -name: telemetry-sourcegenerator-quickstart +name: purview-telemetry-quickstart description: Get started with Purview.Telemetry.SourceGenerator in a C# project. Use when adding the package, creating a first telemetry interface, registering it in DI, or asking how to begin with Purview telemetry. -license: ISC +license: MIT compatibility: C# projects using Purview.Telemetry.SourceGenerator. metadata: author: Purview-Dev diff --git a/src/Telemetry.SourceGenerator.slnx b/src/Telemetry.SourceGenerator.slnx index 62a2a965..723553ff 100644 --- a/src/Telemetry.SourceGenerator.slnx +++ b/src/Telemetry.SourceGenerator.slnx @@ -1,8 +1,8 @@ - + @@ -10,10 +10,11 @@ - + + diff --git a/src/settings.VisualStudio.json b/src/settings.VisualStudio.json new file mode 100644 index 00000000..194ba356 --- /dev/null +++ b/src/settings.VisualStudio.json @@ -0,0 +1,4 @@ +/* Visual Studio Settings File */ +{ + "csharpier.general.runonsave": true +} diff --git a/src/src/SourceGenerator/Helpers/SharedHelpers.cs b/src/src/SourceGenerator/Helpers/SharedHelpers.cs index 26bbd7f3..e460fa3c 100644 --- a/src/src/SourceGenerator/Helpers/SharedHelpers.cs +++ b/src/src/SourceGenerator/Helpers/SharedHelpers.cs @@ -132,6 +132,7 @@ CancellationToken token if (typeData.Exists) return Normalize(typeData); + // If the type doesn't have the attribute, fall back to the assembly-level attribute or defaults. return GetAssemblyTelemetryGenerationAttribute(compilation); } diff --git a/src/src/SourceGenerator/SourceGenerator.csproj b/src/src/SourceGenerator/SourceGenerator.csproj index 26a9a399..46f17ef6 100644 --- a/src/src/SourceGenerator/SourceGenerator.csproj +++ b/src/src/SourceGenerator/SourceGenerator.csproj @@ -1,4 +1,4 @@ - + true true diff --git a/src/tests/Repository.UnitTests/Repository.UnitTests.csproj b/src/tests/Repository.UnitTests/Repository.UnitTests.csproj new file mode 100644 index 00000000..ac16b2ea --- /dev/null +++ b/src/tests/Repository.UnitTests/Repository.UnitTests.csproj @@ -0,0 +1,15 @@ + + + + net10.0 + false + + + + + + + diff --git a/src/tests/Repository.UnitTests/SkillTests.cs b/src/tests/Repository.UnitTests/SkillTests.cs new file mode 100644 index 00000000..fc8a32e1 --- /dev/null +++ b/src/tests/Repository.UnitTests/SkillTests.cs @@ -0,0 +1,60 @@ +using Purview.Skills.Testing; + +namespace Purview.Telemetry.Repository; + +/// +/// Runs the Agent Skills conformance rule set against this repository's authored skills in +/// skills/. +/// +/// +/// +/// [InheritsTests] is load-bearing. TUnit does not walk base types when it discovers +/// tests, so without it this class compiles, the run is green, and nothing is validated. +/// +/// +/// There is no RepositoryRoot override: the default is the SDK's repository-root marker walk, +/// the same resolution InstallPurviewSkills uses, so an ordinary test run exercises it. +/// is what catches a walk that landed elsewhere - +/// every inherited rule passes vacuously against a catalogue that was never found. +/// +/// +[InheritsTests] +public sealed class SkillTests : PurviewSkillTests +{ + [Test] + public async Task SkillsFolder_ResolvesToThisRepository() + { + var catalogue = Evaluator.Catalogue; + + await Assert + .That(catalogue.FolderExists) + .IsTrue() + .Because($"the marker walk resolved '{catalogue.RepositoryRoot}', whose skills folder does not exist"); + + await Assert + .That(File.Exists(Path.Combine(catalogue.RepositoryRoot, "AGENTS.md"))) + .IsTrue() + .Because($"'{catalogue.RepositoryRoot}' does not look like this repository"); + + await Assert.That(catalogue.Skills).IsNotEmpty(); + } + + [Test] + public async Task EverySkill_IsNamedForThisProduct() + { + // Skills install into one flat directory per agent, shared with every skill a developer has + // installed from anywhere. An unprefixed name collides with somebody else's, and the loser is + // whichever installed second. + var unprefixed = Evaluator + .Catalogue.Skills.Select(skill => skill.FolderName) + .Where(name => !name.StartsWith("purview-telemetry", StringComparison.Ordinal)) + .ToArray(); + + await Assert + .That(unprefixed) + .IsEmpty() + .Because( + "every skill this repository publishes must carry the product prefix: " + string.Join(", ", unprefixed) + ); + } +} diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicContextGen.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicContextGen.cs index dc9775c9..6f7e113b 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicContextGen.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicContextGen.cs @@ -26,7 +26,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -74,7 +74,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -124,7 +124,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -192,7 +192,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -249,7 +249,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -308,7 +308,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicEventGen.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicEventGen.cs index 089f768c..b3a35ea0 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicEventGen.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicEventGen.cs @@ -35,7 +35,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -81,7 +81,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -129,7 +129,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -177,7 +177,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -217,7 +217,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -257,7 +257,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult).HasDiagnostic("TSG3021"); @@ -288,7 +288,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult).HasDiagnostic("TSG3021"); @@ -322,7 +322,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -367,7 +367,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult).DoesNotHaveDiagnostic("TSG3021"); @@ -401,7 +401,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult).HasDiagnostic("TSG3021"); @@ -439,7 +439,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult).DoesNotHaveDiagnostic("TSG3021"); @@ -468,7 +468,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult).DoesNotHaveDiagnostic("TSG3021"); @@ -499,7 +499,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult).DoesNotHaveDiagnostic("TSG3021"); @@ -547,7 +547,7 @@ public interface ITestActivities """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert await Assert diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicGen.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicGen.cs index c0bfda6f..5d902ee4 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicGen.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.BasicGen.cs @@ -27,7 +27,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -89,7 +89,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -119,7 +119,7 @@ public interface ITestActivities "; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -175,7 +175,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -206,7 +206,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -240,7 +240,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -272,7 +272,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -320,7 +320,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.CSharp73.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.CSharp73.cs index b1ef1670..c256c79c 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.CSharp73.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.CSharp73.cs @@ -29,7 +29,7 @@ public interface ITestActivities { "; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert: validates the generated code compiles. The source uses C# 7.3-style syntax // (block namespaces, no nullable annotations). TSG3022 (non-nullable Activity return diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.DI.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.DI.cs index b092f9f6..857b87d0 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.DI.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.DI.cs @@ -30,7 +30,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -91,7 +91,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -145,7 +145,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -199,7 +199,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -251,7 +251,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, GenerateDependencyInjection(), cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.ParentTests.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.ParentTests.cs index 94eaf912..19efa1f9 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.ParentTests.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.ParentTests.cs @@ -25,7 +25,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -56,7 +56,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -94,7 +94,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -125,7 +125,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.cs index a921d63e..2d4866eb 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorActivityTests.cs @@ -33,7 +33,7 @@ public interface ITestActivities "; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -75,7 +75,7 @@ public interface ITestActivities<{genericTypeDef}> "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -108,7 +108,7 @@ public interface ITestActivities "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.CSharp73.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.CSharp73.cs index c8bae867..b2e81169 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.CSharp73.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.CSharp73.cs @@ -27,7 +27,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(source, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(source, cancellationToken: cancellationToken); // Assert: GenerateAsync's EnsureValid (default) verifies generated code compiles under C# 7.3. var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ExceptionTests.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ExceptionTests.cs index 732a44c3..6aa1694f 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ExceptionTests.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ExceptionTests.cs @@ -23,7 +23,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -56,7 +56,7 @@ public class BadLuckException : Exception { } "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -92,7 +92,7 @@ public class BadLuckException : Exception { } "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ExpandEnumerable.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ExpandEnumerable.cs index 622fbf64..e05a66b4 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ExpandEnumerable.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ExpandEnumerable.cs @@ -25,7 +25,7 @@ public interface ITestLogger "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -59,7 +59,7 @@ public interface ITestLogger "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.LogProperties.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.LogProperties.cs index a0b61ae0..51b593dc 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.LogProperties.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.LogProperties.cs @@ -32,7 +32,7 @@ public class WeatherForecast "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -76,7 +76,7 @@ public class WeatherForecast "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -108,7 +108,7 @@ public interface ITestLogger """; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -150,7 +150,7 @@ public class WeatherForecast "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -197,7 +197,7 @@ public class WeatherForecast "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -241,7 +241,7 @@ public class WeatherForecast "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -288,7 +288,7 @@ public class WeatherForecast "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.PerMethodV1.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.PerMethodV1.cs index c2682872..374b0639 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.PerMethodV1.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.PerMethodV1.cs @@ -25,7 +25,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(source, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(source, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -60,7 +60,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(source, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(source, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -93,7 +93,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( source, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ScopedGen.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ScopedGen.cs index 1c53b40c..416cf304 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ScopedGen.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.ScopedGen.cs @@ -28,7 +28,7 @@ public interface ITestLogger "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -62,7 +62,7 @@ public interface ITestLogger "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -105,7 +105,7 @@ public interface ITestLogger """; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -148,7 +148,7 @@ public interface ITestLogger """; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -191,7 +191,7 @@ public interface ITestLogger "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -222,7 +222,7 @@ public interface ITestLogger "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.cs index 141e7ffc..c6e8db27 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingGen2Tests.cs @@ -26,7 +26,7 @@ public interface ITestLogger "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -58,7 +58,7 @@ public interface ITestLogger<{genericTypeDef}> {{ "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -89,7 +89,7 @@ public interface ITestLogger<{genericTypeDef}> {{ "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -115,7 +115,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.BasicGen.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.BasicGen.cs index b661d674..6fbac72d 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.BasicGen.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.BasicGen.cs @@ -24,7 +24,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -60,7 +60,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -101,7 +101,7 @@ public interface ITestLogger {{ "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -138,7 +138,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -164,7 +164,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -192,7 +192,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -220,7 +220,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -253,7 +253,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -293,7 +293,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.CSharp73.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.CSharp73.cs index d6a14a38..4830b58e 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.CSharp73.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.CSharp73.cs @@ -25,7 +25,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert: GenerateAsync's EnsureValid (default) verifies generated code compiles under C# 7.3. var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.DI.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.DI.cs index c11f9256..dfc7d0b9 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.DI.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.DI.cs @@ -24,7 +24,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLog, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -69,7 +69,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLog, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -118,7 +118,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLog, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -167,7 +167,7 @@ public interface ITestLogger { "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLog, GenerateDependencyInjection(), cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.LogAttribute.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.LogAttribute.cs index c3de7a3b..703b43df 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.LogAttribute.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.LogAttribute.cs @@ -26,7 +26,7 @@ public interface ITestLogger { """; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -77,7 +77,7 @@ public interface ITestLogger { """; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.Nested.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.Nested.cs index 378ddbda..dae11fd0 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.Nested.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.Nested.cs @@ -26,7 +26,7 @@ public interface ITestLogger {{ "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -65,7 +65,7 @@ public interface ITestLogger {{ "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -108,7 +108,7 @@ public interface ITestLogger {{ "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.NoILoggerRef.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.NoILoggerRef.cs index d13ccfcc..9cd66171 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.NoILoggerRef.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.NoILoggerRef.cs @@ -29,7 +29,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult).HasNoDiagnostics(); @@ -72,7 +72,7 @@ public interface ITestActivities { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicActivity, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.SpecificLogAttribute.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.SpecificLogAttribute.cs index 3e91cd6c..5bf7ad6c 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.SpecificLogAttribute.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.SpecificLogAttribute.cs @@ -26,7 +26,7 @@ public interface ITestLogger "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -82,7 +82,7 @@ public interface ITestLogger """; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.cs index d0d8a7d5..3917ce18 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorLoggingTests.cs @@ -24,7 +24,7 @@ public interface ITestLogger {{ "; // Act - var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicLogger, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -56,7 +56,7 @@ public interface ITestLogger<{genericTypeDef}> {{ "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -87,7 +87,7 @@ public interface ITestLogger<{genericTypeDef}> {{ "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicLogger, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.CSharp73.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.CSharp73.cs index 1d80f27f..fb63793c 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.CSharp73.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.CSharp73.cs @@ -38,7 +38,7 @@ public interface ITestMetrics { "; // Act - var generationResult = await GenerateAsync(basicMetrics, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetrics, cancellationToken: cancellationToken); // Assert: GenerateAsync's EnsureValid (default) verifies generated code compiles under C# 7.3. var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Counters.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Counters.cs index bfae7f7d..4408acf3 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Counters.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Counters.cs @@ -26,7 +26,7 @@ public interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -58,7 +58,7 @@ public interface ITestMetrics """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicMetric, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -87,7 +87,7 @@ public interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -119,7 +119,7 @@ public interface ITestMetrics """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicMetric, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -165,7 +165,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -204,7 +204,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -245,7 +245,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.DI.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.DI.cs index 0d1961fa..8d986682 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.DI.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.DI.cs @@ -25,7 +25,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicMetric, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -71,7 +71,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicMetric, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -121,7 +121,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicMetric, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -171,7 +171,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicMetric, GenerateDependencyInjection(), cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Gauge.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Gauge.cs index f8711fdd..9c7c275f 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Gauge.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Gauge.cs @@ -28,7 +28,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Histogram.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Histogram.cs index 844d4e96..dcf2ba84 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Histogram.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.Histogram.cs @@ -25,7 +25,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.MeterNaming.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.MeterNaming.cs index cedfe557..a0ea76b7 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.MeterNaming.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.MeterNaming.cs @@ -23,7 +23,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -61,7 +61,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -99,7 +99,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -137,7 +137,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -173,7 +173,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -209,7 +209,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -245,7 +245,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -281,7 +281,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -317,7 +317,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -355,7 +355,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -391,7 +391,7 @@ interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.NameUnitsDescription.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.NameUnitsDescription.cs index 1e60b42d..e33d62af 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.NameUnitsDescription.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.NameUnitsDescription.cs @@ -27,7 +27,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.ObservableSpecific.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.ObservableSpecific.cs index 95707c5f..9c5fbde1 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.ObservableSpecific.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.ObservableSpecific.cs @@ -27,7 +27,7 @@ public interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -72,7 +72,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.TagListCount.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.TagListCount.cs index 34cbf1d6..5ba6605e 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.TagListCount.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.TagListCount.cs @@ -40,7 +40,7 @@ public interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.UpDown.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.UpDown.cs index f134157a..721847cf 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.UpDown.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.UpDown.cs @@ -25,7 +25,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -80,7 +80,7 @@ public interface ITestMetrics { """; // Act - var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicMetric, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.cs index d4e28678..a8c78c96 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorMetricsTests.cs @@ -49,7 +49,7 @@ public interface ITestMetrics """; // Act - var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicActivity, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -111,7 +111,7 @@ public interface ITestMetrics<{{genericTypeDef}}> { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicMeter, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -144,7 +144,7 @@ public interface ITestMetrics<{{genericTypeDef}}> { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicMeter, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.Docs_README.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.Docs_README.cs index c20be410..c3878c86 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.Docs_README.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.Docs_README.cs @@ -67,7 +67,7 @@ interface IEntityStoreTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -139,7 +139,7 @@ interface IActivityTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -183,7 +183,7 @@ enum ItemTypes "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -248,7 +248,7 @@ interface IMeterTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -322,7 +322,7 @@ interface IServiceTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, GenerateDependencyInjection(), cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.DuplicateMethodNames.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.DuplicateMethodNames.cs index 6a9a5c77..c8f09c5f 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.DuplicateMethodNames.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.DuplicateMethodNames.cs @@ -26,7 +26,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -61,7 +61,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -90,7 +90,7 @@ public interface ITestTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -119,7 +119,7 @@ public interface ITestTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -169,7 +169,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.IRL.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.IRL.cs index e9416c32..573cc081 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.IRL.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.IRL.cs @@ -83,7 +83,7 @@ public interface ICacheServiceProviderTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, GenerateDependencyInjection(), cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.InvalidReturnTypes.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.InvalidReturnTypes.cs index 54e79f89..dfe6c45c 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.InvalidReturnTypes.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.InvalidReturnTypes.cs @@ -26,7 +26,7 @@ public interface IInvalidTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -55,7 +55,7 @@ public interface IInvalidTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -84,7 +84,7 @@ public interface IInvalidTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -113,7 +113,7 @@ public interface IInvalidTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -142,7 +142,7 @@ public interface IInvalidTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -171,7 +171,7 @@ public interface IInvalidTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -201,7 +201,7 @@ public interface IInvalidTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -233,7 +233,7 @@ public interface IInvalidTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -266,7 +266,7 @@ public interface IInvalidTelemetry "; // Act - var generationResult = await GenerateAsync(code, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(code, cancellationToken: cancellationToken); // Assert - this should succeed since void-returning logs are valid non-scoped logs var query = generationResult.Generated(); @@ -296,7 +296,7 @@ public interface IInvalidTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -325,7 +325,7 @@ public interface IInvalidTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -360,7 +360,7 @@ string eventName """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -396,7 +396,7 @@ string value """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -424,7 +424,7 @@ public interface IInvalidTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -452,7 +452,7 @@ public interface IInvalidTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -483,7 +483,7 @@ public interface IInvalidTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -514,7 +514,7 @@ public interface IInvalidTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -545,7 +545,7 @@ public interface IInvalidTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.MultiGeneration.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.MultiGeneration.cs index 4231bf10..26643161 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.MultiGeneration.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.MultiGeneration.cs @@ -31,7 +31,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -68,7 +68,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -105,7 +105,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -146,7 +146,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -187,7 +187,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert - should generate both activity and logging for this method var query = generationResult.Generated(); @@ -220,7 +220,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert - should generate both activity and counter for this method var query = generationResult.Generated(); @@ -253,7 +253,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert - should generate both logging and counter for this method var query = generationResult.Generated(); @@ -288,7 +288,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert - should generate activity, logging, and counter for this method var query = generationResult.Generated(); @@ -332,7 +332,7 @@ public void MethodWithoutAttribute(string message) """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( multiGen, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -385,7 +385,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -466,7 +466,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -538,7 +538,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -606,7 +606,7 @@ void LogProcessing( """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -659,7 +659,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -715,7 +715,7 @@ public void ExcludedMethod(string message) """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -756,7 +756,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( multiGen, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -798,7 +798,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -843,7 +843,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( multiGen, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -879,7 +879,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(multiGen, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -922,7 +922,7 @@ public interface IMultiTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( multiGen, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -956,7 +956,7 @@ public interface ITelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -990,7 +990,7 @@ public interface ITelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -1024,7 +1024,7 @@ public interface ITelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken @@ -1056,7 +1056,7 @@ public interface ITelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( code, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryBasic.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryBasic.cs index ed8e741f..9cc5d36b 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryBasic.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryBasic.cs @@ -61,7 +61,7 @@ partial interface ITestTelemetry "; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( [partialInterfaceDef, partialInterfaceActivities, partialInterfaceLogging, partialInterfaceMetric], cancellationToken: cancellationToken ); @@ -125,7 +125,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -188,7 +188,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -237,7 +237,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult).HasDiagnostic("TSG3021"); @@ -267,7 +267,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult).HasDiagnostic("TSG3021"); @@ -297,7 +297,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert // With the OpenTelemetry exception rules disabled the exception is emitted as an ordinary tag, @@ -329,7 +329,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -363,7 +363,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(basicTelemetry, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -416,7 +416,7 @@ public interface ITestTelemetry """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( basicTelemetry, TelemetrySourceGeneratorTestOptions.NoValidation, cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryNames.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryNames.cs index 6ffbd0d3..c4014ac7 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryNames.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryNames.cs @@ -45,7 +45,7 @@ CancellationToken cancellationToken ) { // Act - var generationResult = await GenerateAsync(TelemetryNamesSource, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(TelemetryNamesSource, cancellationToken: cancellationToken); // Assert var attributeSource = generationResult.GetSource(AttributeHintName); @@ -76,7 +76,7 @@ public interface ITestLogger { """; // Act - var generationResult = await GenerateAsync(source, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(source, cancellationToken: cancellationToken); // Assert var hintNames = generationResult @@ -95,7 +95,7 @@ CancellationToken cancellationToken ) { // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( TelemetryNamesSource, TelemetryNamesOptions("GenerateTelemetryNamesAttribute = false"), cancellationToken: cancellationToken @@ -116,7 +116,7 @@ await Assert public async Task Generate_GivenDefaults_DoesNotGenerateTheTelemetryNamesClass(CancellationToken cancellationToken) { // Act - var generationResult = await GenerateAsync(TelemetryNamesSource, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(TelemetryNamesSource, cancellationToken: cancellationToken); // Assert await Assert @@ -129,7 +129,7 @@ await Assert public async Task Generate_GivenGenerateTelemetryNamesClass_GeneratesTheClass(CancellationToken cancellationToken) { // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( TelemetryNamesSource, TelemetryNamesOptions("GenerateTelemetryNamesClass = true"), cancellationToken: cancellationToken @@ -162,7 +162,11 @@ CancellationToken cancellationToken }; // Act - var generationResult = await GenerateAsync(TelemetryNamesSource, options, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync( + TelemetryNamesSource, + options, + cancellationToken: cancellationToken + ); // Assert var classSource = generationResult.GetSource(ClassHintName); @@ -198,7 +202,7 @@ CancellationToken cancellationToken }; // Act - var generationResult = await GenerateAsync(noTelemetry, options, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(noTelemetry, options, cancellationToken: cancellationToken); // Assert await Assert @@ -220,7 +224,7 @@ CancellationToken cancellationToken const string noTelemetry = "namespace Testing;"; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( noTelemetry, TelemetryNamesOptions("GenerateTelemetryNamesClass = true"), cancellationToken: cancellationToken @@ -254,7 +258,11 @@ CancellationToken cancellationToken }; // Act - var generationResult = await GenerateAsync(TelemetryNamesSource, options, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync( + TelemetryNamesSource, + options, + cancellationToken: cancellationToken + ); // Assert var classSource = generationResult.GetSource(ClassHintName); diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryNamesNamespace.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryNamesNamespace.cs index 57412358..9cce2f8b 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryNamesNamespace.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.TelemetryNamesNamespace.cs @@ -34,7 +34,7 @@ public interface ITestLogger { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( source, GenerateDependencyInjection(), cancellationToken: cancellationToken @@ -80,7 +80,7 @@ public interface ITestLogger { """; // Act - var generationResult = await GenerateAsync( + using var generationResult = await GenerateAsync( source, GenerateDependencyInjection(), cancellationToken: cancellationToken diff --git a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.cs b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.cs index 45bd20e8..e307ca65 100644 --- a/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.cs +++ b/src/tests/SourceGenerator.IntegrationTests/Generators/TelemetrySourceGeneratorTests.cs @@ -15,7 +15,7 @@ CancellationToken cancellationToken var generatedAttributes = TypeLibrary.Purview.Telemetry.GetTypes().Select(m => m.Identity); // Act - var generationResult = await GenerateAsync(empty, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(empty, cancellationToken: cancellationToken); var query = generationResult.Generated(); // Assert @@ -42,7 +42,7 @@ namespace Testing; "; // Act - var generationResult = await GenerateAsync(empty, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(empty, cancellationToken: cancellationToken); // Assert var query = generationResult.Generated(); @@ -78,7 +78,7 @@ namespace Testing; "; // Act - var generationResult = await GenerateAsync(empty, cancellationToken: cancellationToken); + using var generationResult = await GenerateAsync(empty, cancellationToken: cancellationToken); // Assert await Assert.That(generationResult.DriverResult.Diagnostics).IsEmpty();