Skip to content

feat(analyzers): renumber to 8 domain bands, 3.0.0 break#2

Merged
ANcpLua merged 6 commits into
mainfrom
feat/3.0-renumber
May 25, 2026
Merged

feat(analyzers): renumber to 8 domain bands, 3.0.0 break#2
ANcpLua merged 6 commits into
mainfrom
feat/3.0-renumber

Conversation

@ANcpLua
Copy link
Copy Markdown
Owner

@ANcpLua ANcpLua commented May 25, 2026

Summary

Renumbers all 48 active analyzer rules from a sparse QYL0001..QYL0156 (with 105 reserved-stub slots) into a clean 8-band 100-wide scheme: QYL0001..QYL0703. Coordinated family bump — all 5 packages move to 3.0.0 in lockstep.

Band Range Rules Domain
0 QYL0001..0013 13 Semantic conventions
1 QYL0100..0110 11 Tracing
2 QYL0200..0202 3 Metrics
3 QYL0300..0305 6 Configuration
4 QYL0400..0406 7 GenAI
5 QYL0500..0501 2 Source-generator partials
6 QYL0600..0601 2 Security / sensitive data
7 QYL0700..0703 4 Export / performance

Each band leaves ~80 free slots for growth — no future re-renumber required. Reserved QYL0800..0999 for future bands (logs/events, AOT/trim). QYL9#### runtime-derived suppressor IDs unchanged.

Side-effect: pre-existing resx prefix bug fixed

AlAnalyzer.CreateRule interpolates $"{id}AnalyzerTitle" for resx lookup, but every resx key used the legacy AL#### prefix from when the analyzer was forked. All 37 file-based QYL analyzers were silently falling back to raw key names. Renamed 121 keys + swept 316 orphan AL keys.

Cleanup

  • 105 ReservedCatalogStubsAnalyzer placeholders deleted (the supplemental migration analyzer always reports through 3 real IDs, never through the reserved stubs)
  • 3 hidden gotchas the renumber agent caught proactively: SemconvLegacyContextSuppressor ID table, two FixableDiagnosticIds arrays, one switch arm in SupplementalSemconvMigrationAnalyzer

Plan + per-package READMEs

  • Full mapping at eng/analyzer-renumber-plan.md
  • Each of the 5 packages now ships its own per-package README (the prior pack shipped the monorepo root README everywhere)

Test plan

  • dotnet build slnx: 0/0
  • tests/Pipeline.Tests: 11/11 pass
  • tests/SourceGeneration.Tests: 60/60 pass
  • ./build.sh VerifyAttributesHash (dogfood): green, attribute manifest unchanged
  • dotnet pack slnx: 5 nupkg + 3 snupkg @ 3.0.0
  • CI green on this PR
  • CodeRabbit clean

After merge

  • dotnet nuget push 5 packages @ 3.0.0
  • Unlist 2.0.1 of .Analyzers (had legacy IDs; other 4 packages keep 2.0.1 listed as a stable intermediate)
  • Consumer-repo PRs (qyl + others) bump Directory.Packages.props pins to 3.0.0

🤖 Generated with Claude Code

QYL ids were sparse (QYL0001..QYL0156 with 105 reserved-stub slots) — the
README documented 11 ids out of a 0001..0032 range, real code had 37 active
analyzers scattered to QYL0135. Renumbered to 8 100-wide bands; 48 active
rules in QYL0001..QYL0703 with ~80 free slots per band for growth. 105
ReservedCatalogStubsAnalyzer placeholders deleted entirely.

Bands (plan at eng/analyzer-renumber-plan.md):
  QYL0001..0013  Semantic conventions       (13 rules)
  QYL0100..0110  Tracing                    (11)
  QYL0200..0202  Metrics                    (3)
  QYL0300..0305  Configuration              (6)
  QYL0400..0406  GenAI                      (7)
  QYL0500..0501  Source-generator partials  (2)
  QYL0600..0601  Security / sensitive data  (2)
  QYL0700..0703  Export / performance       (4)
  QYL0800..0999  reserved (logs, AOT, etc.)
  QYL9####       runtime-derived suppressors (unchanged)

Wave delivered by a parallel agent team — renumber executor, README
author, consumer-rewirer, cleanup. Plus a CodeRabbit round on the prior
recover-from-qyl PR addressed all 11 findings (Major: namespace-dot
preservation in GeneratedSourceNames, fail-fast in JsonReader +
RegistryLoader + ActivityRegistryLoader, contiguous-block byte-identity
gate. Minor: 5 generator XML docs. Trivial: CachingTests collapsed to
[Theory]).

Caught a pre-existing resx prefix bug as a side-effect: AlAnalyzer.CreateRule
interpolates "{id}AnalyzerTitle" for resx lookup, but every resx key in
this assembly used the legacy "AL####" prefix — all 37 file-based QYL
analyzers were falling back to raw key names. Renamed 121 keys
AL####{suffix} → QYL####{suffix} and swept 316 orphan AL keys left over
from the fork.

Coordinated family bump: all 5 packages move to 3.0.0 in lockstep.

  Qyl.OpenTelemetry.SemanticConventions             3.0.0
  Qyl.OpenTelemetry.SemanticConventions.Incubating  3.0.0
  Qyl.OpenTelemetry.SemanticConventions.SourceGeneration 3.0.0
  Qyl.OpenTelemetry.SemanticConventions.Analyzers   3.0.0  (renumbered)
  Qyl.OpenTelemetry.SemanticConventions.Nuke        3.0.0

Verified locally: 0/0 build, 11/11 pipeline + 60/60 sourcegen tests pass,
./build.sh VerifyAttributesHash green (attribute manifest unchanged),
dotnet pack produces 5 nupkg + 3 snupkg at 3.0.0 cleanly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 25, 2026

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • README.md is excluded by none and included by none

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: da21f257-bef7-4f6c-b722-dd45017df40e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

This PR renumbers analyzer diagnostics and resources for a v3.0.0 release: project VersionPrefix bumped, DiagnosticDescriptor IDs and help links rewritten, analyzer DiagnosticId constants remapped into domain QYL bands, AL* resource keys replaced with QYL*, a reserved-stub analyzer removed, shipped-release and README docs added, and an engineering renumber plan included.

Changes

Diagnostic ID renumbering for version 3.0.0

Layer / File(s) Summary
Version bump and renumber plan
Directory.Build.props, eng/analyzer-renumber-plan.md
Version default updated to 3.0.0; adds a renumbering plan describing domain bands, deterministic remapping, old→new mappings, reserved-deletion list, and resx rename checklist.
Shipped release list
src/.../AnalyzerReleases.Shipped.md
Replaces Release 2.0.0 table with Release 3.0.0 entries reflecting the new QYL numbering and updated categories/severities.
Diagnostic descriptor literals
src/.../DiagnosticDescriptors.cs
All DiagnosticDescriptor id literals and helpLinkUri anchors renumbered to the new QYL IDs.
Resources and CodeFix resources
src/.../Resources.resx, src/.../CodeFixResources.resx
AL* analyzer/title/message/description and code-fix title keys replaced with corresponding QYL* entries; Resources.Designer.cs should be regenerated after merge.
Code fix provider updates
src/.../*CodeFixProvider.cs, LiveSemconvMetadataCodeFixProvider.cs
CodeAction display titles and FixableDiagnosticIds updated to reference new QYL resource keys and IDs.
Analyzer DiagnosticId constant remapping
src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL*.cs
Updated DiagnosticId constants across the analyzer suite to align with domain bands (semantic-conventions, tracing, metrics, configuration, GenAI, meters, security, export).
Reserved stub removal & suppressor changes
src/.../ReservedCatalogStubsAnalyzer.cs, src/.../SemconvLegacyContextSuppressor.cs, src/.../SupplementalSemconv*.cs
Removed the reserved-stub analyzer; suppressor updated to include new legacy compatibility IDs; supplemental migration analyzer/codefix adjusted to new QYL keys.
Package READMEs
src/.../README.md, src/.../Incubating/README.md, src/.../Nuke/README.md
Added/updated package README files documenting domain bands, rule lists, targets, and package contents.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Suggested labels

area:infra, breaking

🚥 Pre-merge checks | ✅ 8
✅ Passed checks (8 passed)
Check name Status Explanation
Title check ✅ Passed Title follows conventional commits format with valid area prefix (analyzers), clear scope, and concise description of a major version-breaking change under 72 characters.
Description check ✅ Passed Description thoroughly documents the renumbering scheme, version bump rationale, resx bug fix, cleanup actions, and post-merge plan; directly related to the changeset across all modified files.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Otel Instrumentation Required ✅ Passed No new injectable service classes added; PR contains only diagnostic ID renumbering, resource updates, documentation, and deletion of a stub analyzer—not DI-registered services.
No Unbounded Mcp Responses ✅ Passed No MCP tool definitions exist under src/qyl.mcp/ in the repository, and this PR makes no changes to MCP tool definitions.
Duckdb Backpressure On Write Paths ✅ Passed PR adds no DuckDB code—it's purely a Roslyn analyzer diagnostic ID renumbering effort (3.0.0 break). Zero database dependencies in repository.
Cancellationtoken Threading ✅ Passed PR contains no new public async methods; all changes are refactoring of diagnostic IDs, version bump, resource file updates, and documentation additions.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


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

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 7

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (7)
src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0406DirectGenAiSdkUsageAnalyzer.cs (1)

5-6: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Align XML docs with QYL0406.

Documentation still says AL0131, which now conflicts with the constant value and can mislead maintainers.

Also applies to: 23-24

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0406DirectGenAiSdkUsageAnalyzer.cs`
around lines 5 - 6, Update the XML documentation comments in
QYL0406DirectGenAiSdkUsageAnalyzer (the summary and any other occurrences) to
reference the correct diagnostic ID QYL0406 instead of AL0131; locate the XML
doc at the top of the file and the similar doc block around lines 23-24 and
replace the incorrect AL0131 token with QYL0406 so the docs match the
constant/diagnostic identifier used by the analyzer.
src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0600InsecureEndpointAnalyzer.cs (2)

53-56: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use the security category for QYL0600.

QYL0600 was moved into the security/sensitive-data band, but the descriptor is still categorized as configuration. This breaks the renumbered domain taxonomy and downstream grouping/filtering.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0600InsecureEndpointAnalyzer.cs`
around lines 53 - 56, The diagnostic s_rule is being created with the wrong
category (DiagnosticCategories.Configuration); update the CreateRule invocation
for s_rule (the call referencing DiagnosticId,
DiagnosticCategories.Configuration, DiagnosticSeverities.Suggestion) to use the
security/sensitive-data category instead (e.g., replace
DiagnosticCategories.Configuration with DiagnosticCategories.Security or the
specific enum member used for security/sensitive-data in your project) so
QYL0600 is classified under the security category.

5-6: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Refresh stale diagnostic ID text in XML docs.

The documentation still references QYL0083; it should be updated to QYL0600 to match the emitted ID.

Also applies to: 50-51

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0600InsecureEndpointAnalyzer.cs`
around lines 5 - 6, Update the XML documentation comments that reference the old
diagnostic ID to the correct one: replace "QYL0083" with "QYL0600" in the doc
summary for the QYL0600InsecureEndpointAnalyzer class and any other XML doc tags
in that file (the other occurrences around the same header region). Ensure all
<summary> and any <remarks>/<see> entries that mention the old ID are updated so
the documentation matches the emitted diagnostic ID QYL0600.
src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405NonInterceptableAgentTracedAnalyzer.cs (1)

5-6: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Update XML docs to the new diagnostic ID.

The file-level and constant-level comments still reference AL0124 even though the analyzer now emits QYL0405.

Also applies to: 20-21

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405NonInterceptableAgentTracedAnalyzer.cs`
around lines 5 - 6, Update the outdated diagnostic ID references from "AL0124"
to "QYL0405" in the file-level XML summary and any constant-level comments;
locate the QYL0405NonInterceptableAgentTracedAnalyzer class and its
DiagnosticId/Id constant (or any string literal named AL0124) and replace the
old ID text in the XML documentation and comment blocks so the summary and
constant comment match the emitted diagnostic ID QYL0405.
src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodMustBePartialAnalyzer.cs (1)

5-6: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Update documentation to QYL0501.

The summary and constant comment still mention AL0072, which is now outdated.

Also applies to: 29-30

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodMustBePartialAnalyzer.cs`
around lines 5 - 6, Update the outdated rule ID in the documentation and
constant comments from "AL0072" to "QYL0501": edit the XML summary comment at
the top of QYL0501MetricMethodMustBePartialAnalyzer.cs and any internal comment
near the diagnostic identifier (e.g., the DiagnosticId/const string or field
used by QYL0501MetricMethodMustBePartialAnalyzer) so both the file header and
the constant/comment lines (including the occurrences around lines 29-30)
reference QYL0501 instead of AL0072.
src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassMustBePartialStaticAnalyzer.cs (1)

5-6: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Correct stale ID text in analyzer documentation.

Comments still reference AL0071 while the rule ID is QYL0500.

Also applies to: 30-31

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassMustBePartialStaticAnalyzer.cs`
around lines 5 - 6, Update the outdated rule ID text in the analyzer XML
documentation: replace any occurrences of "AL0071" with the correct rule ID
"QYL0500" in the file defining QYL0500MeterClassMustBePartialStaticAnalyzer
(check the class QYL0500MeterClassMustBePartialStaticAnalyzer and its XML
summary/comments and the other comment blocks around the top of the file where
the old ID appears, including the secondary comment lines referenced). Ensure
all instances (including the summary and the two other comment lines) are
changed so the documentation consistently uses QYL0500.
src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiAttributeAnalyzer.cs (1)

5-6: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix stale analyzer ID references in XML docs.

The XML comments still mention AL0074 while the diagnostic ID is now QYL0404; update both references to keep generated docs and maintenance cues consistent.

Also applies to: 30-31

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiAttributeAnalyzer.cs`
around lines 5 - 6, Update the stale XML documentation that still references the
old diagnostic ID "AL0074" to the current ID "QYL0404" in the
QYL0404DeprecatedGenAiAttributeAnalyzer class and any related XML comment blocks
(including the occurrences around lines 30-31); locate the doc summary and any
"AL0074" tokens and replace them with "QYL0404" so the XML docs and generated
documentation match the analyzer's actual diagnostic ID.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@eng/analyzer-renumber-plan.md`:
- Around line 99-112: Two fenced code blocks in analyzer-renumber-plan.md are
missing language tags (the blocks containing the long QYL... list and the
AL{old}AnalyzerTitle -> QYL{new}AnalyzerTitle mapping), which triggers MD040;
add a language identifier (e.g., "text") to each opening fence so both blocks
start with ```text instead of ``` to satisfy markdown-lint. Locate the blocks by
searching for the QYL... sequence line (QYL0003 ... QYL0156) and the mapping
lines starting with AL{old}AnalyzerTitle and change their opening fences
accordingly.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0101UnregisteredActivitySourceAnalyzer.cs`:
- Around line 19-20: Update the XML doc comment that currently reads "The
diagnostic identifier for AL0063" to the new identifier "QYL0101" so the comment
matches the DiagnosticId constant; edit the summary above the private const
string DiagnosticId = "QYL0101" in the QYL0101UnregisteredActivitySourceAnalyzer
class to reference QYL0101.

In `@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/README.md`:
- Around line 1-9: Move the markdown H1 "#
Qyl.OpenTelemetry.SemanticConventions.Analyzers" to the very first line of
README.md (so it satisfies MD041) and then place all the badge image links (the
existing [![NuGet ...], [![.NET], [![License...] lines) immediately below the
H1; ensure the header text matches exactly "#
Qyl.OpenTelemetry.SemanticConventions.Analyzers" so the linter recognizes it and
the badges remain intact beneath it.

In `@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/Resources.resx`:
- Line 162: The diagnostic message in Resources.resx incorrectly suggests a
"grpc://" scheme; update the resource string value to instruct using "http://"
or "https://" schemes (e.g. "Collector endpoint '{0}' should use OTLP protocol
(http:// or https://.../v1/traces)") so it no longer references "grpc://".
Locate and change the value entry in Resources.resx that currently contains
"Collector endpoint '{0}' should use OTLP protocol (grpc:// or
http://...v1/traces)" to the corrected text.

In `@src/Qyl.OpenTelemetry.SemanticConventions.Incubating/README.md`:
- Around line 1-9: Move the top-level heading "#
Qyl.OpenTelemetry.SemanticConventions.Incubating" to the very first line of
README.md (so the H1 appears before the badges) and then place the existing
badge block immediately below it; this satisfies markdownlint MD041 while
leaving the badge lines and other content unchanged.

In `@src/Qyl.OpenTelemetry.SemanticConventions.Nuke/README.md`:
- Around line 1-9: The file's top-level heading must appear before badges to
satisfy MD041; move the H1 text "# Qyl.OpenTelemetry.SemanticConventions.Nuke"
to the very first line and relocate the badge lines (the NuGet/.NET/License
badge markdown) below that heading so the README starts with the single
top-level heading followed by the badges.

In `@src/Qyl.OpenTelemetry.SemanticConventions/README.md`:
- Around line 1-9: The README currently starts with badge images before the
top-level heading; move the heading "# Qyl.OpenTelemetry.SemanticConventions" to
be the very first line of the file so the H1 appears before the badge block
(this satisfies MD041). Keep the existing badge block intact but place it
directly below the H1; no other content changes required.

---

Outside diff comments:
In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiAttributeAnalyzer.cs`:
- Around line 5-6: Update the stale XML documentation that still references the
old diagnostic ID "AL0074" to the current ID "QYL0404" in the
QYL0404DeprecatedGenAiAttributeAnalyzer class and any related XML comment blocks
(including the occurrences around lines 30-31); locate the doc summary and any
"AL0074" tokens and replace them with "QYL0404" so the XML docs and generated
documentation match the analyzer's actual diagnostic ID.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405NonInterceptableAgentTracedAnalyzer.cs`:
- Around line 5-6: Update the outdated diagnostic ID references from "AL0124" to
"QYL0405" in the file-level XML summary and any constant-level comments; locate
the QYL0405NonInterceptableAgentTracedAnalyzer class and its DiagnosticId/Id
constant (or any string literal named AL0124) and replace the old ID text in the
XML documentation and comment blocks so the summary and constant comment match
the emitted diagnostic ID QYL0405.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0406DirectGenAiSdkUsageAnalyzer.cs`:
- Around line 5-6: Update the XML documentation comments in
QYL0406DirectGenAiSdkUsageAnalyzer (the summary and any other occurrences) to
reference the correct diagnostic ID QYL0406 instead of AL0131; locate the XML
doc at the top of the file and the similar doc block around lines 23-24 and
replace the incorrect AL0131 token with QYL0406 so the docs match the
constant/diagnostic identifier used by the analyzer.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassMustBePartialStaticAnalyzer.cs`:
- Around line 5-6: Update the outdated rule ID text in the analyzer XML
documentation: replace any occurrences of "AL0071" with the correct rule ID
"QYL0500" in the file defining QYL0500MeterClassMustBePartialStaticAnalyzer
(check the class QYL0500MeterClassMustBePartialStaticAnalyzer and its XML
summary/comments and the other comment blocks around the top of the file where
the old ID appears, including the secondary comment lines referenced). Ensure
all instances (including the summary and the two other comment lines) are
changed so the documentation consistently uses QYL0500.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodMustBePartialAnalyzer.cs`:
- Around line 5-6: Update the outdated rule ID in the documentation and constant
comments from "AL0072" to "QYL0501": edit the XML summary comment at the top of
QYL0501MetricMethodMustBePartialAnalyzer.cs and any internal comment near the
diagnostic identifier (e.g., the DiagnosticId/const string or field used by
QYL0501MetricMethodMustBePartialAnalyzer) so both the file header and the
constant/comment lines (including the occurrences around lines 29-30) reference
QYL0501 instead of AL0072.

In
`@src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0600InsecureEndpointAnalyzer.cs`:
- Around line 53-56: The diagnostic s_rule is being created with the wrong
category (DiagnosticCategories.Configuration); update the CreateRule invocation
for s_rule (the call referencing DiagnosticId,
DiagnosticCategories.Configuration, DiagnosticSeverities.Suggestion) to use the
security/sensitive-data category instead (e.g., replace
DiagnosticCategories.Configuration with DiagnosticCategories.Security or the
specific enum member used for security/sensitive-data in your project) so
QYL0600 is classified under the security category.
- Around line 5-6: Update the XML documentation comments that reference the old
diagnostic ID to the correct one: replace "QYL0083" with "QYL0600" in the doc
summary for the QYL0600InsecureEndpointAnalyzer class and any other XML doc tags
in that file (the other occurrences around the same header region). Ensure all
<summary> and any <remarks>/<see> entries that mention the old ID are updated so
the documentation matches the emitted diagnostic ID QYL0600.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 85b25a06-c563-4f5f-bc64-34f9c97c0e62

📥 Commits

Reviewing files that changed from the base of the PR and between 1fc1313 and 28142f7.

⛔ Files ignored due to path filters (10)
  • release-artifacts/Qyl.OpenTelemetry.SemanticConventions.3.0.0.nupkg is excluded by none and included by none
  • release-artifacts/Qyl.OpenTelemetry.SemanticConventions.3.0.0.snupkg is excluded by none and included by none
  • release-artifacts/Qyl.OpenTelemetry.SemanticConventions.Analyzers.3.0.0.nupkg is excluded by none and included by none
  • release-artifacts/Qyl.OpenTelemetry.SemanticConventions.Incubating.3.0.0.nupkg is excluded by none and included by none
  • release-artifacts/Qyl.OpenTelemetry.SemanticConventions.Incubating.3.0.0.snupkg is excluded by none and included by none
  • release-artifacts/Qyl.OpenTelemetry.SemanticConventions.Nuke.3.0.0.nupkg is excluded by none and included by none
  • release-artifacts/Qyl.OpenTelemetry.SemanticConventions.Nuke.3.0.0.snupkg is excluded by none and included by none
  • release-artifacts/Qyl.OpenTelemetry.SemanticConventions.SourceGeneration.3.0.0.nupkg is excluded by none and included by none
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/CodeFixResources.Designer.cs is excluded by !**/*.Designer.cs and included by src/**
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/Resources.Designer.cs is excluded by !**/*.Designer.cs and included by src/**
📒 Files selected for processing (61)
  • Directory.Build.props
  • eng/analyzer-renumber-plan.md
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/AnalyzerReleases.Shipped.md
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/CodeFixResources.resx
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/DiagnosticDescriptors.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/LiveSemconvMetadataCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0006MissingSchemaUrlAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0012InvalidAttributeValueAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0013IncorrectAttributeTypeAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0100ActivityMissingSemconvAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0101UnregisteredActivitySourceAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedActivitySourceNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0103DuplicateInstrumentationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0104InvalidActivitySourceNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0105ManualSpanRecommendedAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefParameterAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0110MissingExceptionRecordingOnActivityAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0200UnregisteredMeterAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0201InvalidMetricNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0202HighCardinalityMetricTagAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0300IncompleteServiceDefaultsAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0301NonOtlpCollectorEndpointAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0302MissingOTelConfigurationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0303MissingResourceAttributesAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0304EnableEventSourceSupportAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0305LegacySemanticConventionsAccessorAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0401GenAiMissingRequiredAttributesAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0402UseTokenUsageHistogramAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0403InvalidGenAiOperationNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiAttributeAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405AgentTracedCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405NonInterceptableAgentTracedAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0406DirectGenAiSdkUsageAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassMustBePartialStaticAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodMustBePartialAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0600InsecureEndpointAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0601SensitiveDataInAttributeAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0700MissingOtlpConfigurationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0701UncompressedExportAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0702BatchExportDisabledAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0703ConsiderSamplingAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/README.md
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/ReservedCatalogStubsAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/Resources.resx
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SemconvLegacyContextSuppressor.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Incubating/README.md
  • src/Qyl.OpenTelemetry.SemanticConventions.Nuke/README.md
  • src/Qyl.OpenTelemetry.SemanticConventions/README.md
💤 Files with no reviewable changes (1)
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/ReservedCatalogStubsAnalyzer.cs
📜 Review details
🧰 Additional context used
📓 Path-based instructions (3)
**/*.props

⚙️ CodeRabbit configuration file

MSBuild property files (Directory.Build.props, Directory.Packages.props, Version.props). Review for: Central Package Management correctness, version consistency, and that new packages are added with explicit version pins. Flag transitive dependency promotions that aren't justified. Verify TFM targeting is correct (.NET 10).

Files:

  • Directory.Build.props
src/**/*.cs

📄 CodeRabbit inference engine (Custom checks)

Every public async method in C# must accept and forward a CancellationToken parameter

Files:

  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0403InvalidGenAiOperationNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0013IncorrectAttributeTypeAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0304EnableEventSourceSupportAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0700MissingOtlpConfigurationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedActivitySourceNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassMustBePartialStaticAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0701UncompressedExportAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0702BatchExportDisabledAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0006MissingSchemaUrlAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0103DuplicateInstrumentationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodMustBePartialAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405NonInterceptableAgentTracedAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiAttributeAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0305LegacySemanticConventionsAccessorAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0301NonOtlpCollectorEndpointAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0406DirectGenAiSdkUsageAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0110MissingExceptionRecordingOnActivityAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0105ManualSpanRecommendedAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0402UseTokenUsageHistogramAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0100ActivityMissingSemconvAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0401GenAiMissingRequiredAttributesAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0012InvalidAttributeValueAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405AgentTracedCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0200UnregisteredMeterAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0703ConsiderSamplingAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/LiveSemconvMetadataCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0303MissingResourceAttributesAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0300IncompleteServiceDefaultsAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0201InvalidMetricNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0601SensitiveDataInAttributeAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0202HighCardinalityMetricTagAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0302MissingOTelConfigurationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0600InsecureEndpointAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SemconvLegacyContextSuppressor.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefParameterAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0104InvalidActivitySourceNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/DiagnosticDescriptors.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0101UnregisteredActivitySourceAnalyzer.cs

⚙️ CodeRabbit configuration file

src/**/*.cs: C# 14 / .NET 10 codebase. Review for: idiomatic modern C#, proper async/await (no sync-over-async, no fire-and-forget without justification), correct IDisposable/IAsyncDisposable, null safety (NRTs enabled), and adherence to existing patterns. Flag new public API surface that lacks XML doc comments. Check DI lifetime correctness (scoped vs singleton vs transient).
ARCHITECTURAL INVARIANTS — flag violations as blocking: 1. Every new injectable service must register OpenTelemetry instrumentation
(ActivitySource or Meter).
2. Every new DuckDB write path must handle backpressure (bounded channel or semaphore). 3. No hardcoded connection strings, paths, or magic strings — use IOptions or
IConfiguration.
4. No new dependencies on Sentry-specific types in core/ — Sentry is a comparison
target, not an identity.
5. CancellationToken must be threaded through all async public methods. 6. No sync-over-async (.Result, .GetAwaiter().GetResult()) outside of
well-documented infrastructure code.

Files:

  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0403InvalidGenAiOperationNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0013IncorrectAttributeTypeAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0304EnableEventSourceSupportAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0700MissingOtlpConfigurationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedActivitySourceNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassMustBePartialStaticAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0701UncompressedExportAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0702BatchExportDisabledAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0006MissingSchemaUrlAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0103DuplicateInstrumentationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodMustBePartialAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405NonInterceptableAgentTracedAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiAttributeAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0305LegacySemanticConventionsAccessorAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0301NonOtlpCollectorEndpointAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0406DirectGenAiSdkUsageAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0110MissingExceptionRecordingOnActivityAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0105ManualSpanRecommendedAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0402UseTokenUsageHistogramAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0100ActivityMissingSemconvAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0401GenAiMissingRequiredAttributesAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0012InvalidAttributeValueAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405AgentTracedCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0200UnregisteredMeterAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0703ConsiderSamplingAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/LiveSemconvMetadataCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0303MissingResourceAttributesAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0300IncompleteServiceDefaultsAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0201InvalidMetricNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0601SensitiveDataInAttributeAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0202HighCardinalityMetricTagAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0302MissingOTelConfigurationAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0600InsecureEndpointAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SemconvLegacyContextSuppressor.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefParameterAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0104InvalidActivitySourceNameAnalyzer.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedCodeFixProvider.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/DiagnosticDescriptors.cs
  • src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0101UnregisteredActivitySourceAnalyzer.cs
eng/**

⚙️ CodeRabbit configuration file

Build and deployment infrastructure (Nuke build system). Review for: correct MSBuild property usage, Nuke build target dependencies, Docker multi-stage build efficiency, and CI/CD pipeline correctness. Flag hardcoded paths, secrets, or platform-specific assumptions. Verify that new build targets integrate into the existing dependency graph.

Files:

  • eng/analyzer-renumber-plan.md
🪛 markdownlint-cli2 (0.22.1)
src/Qyl.OpenTelemetry.SemanticConventions/README.md

[warning] 1-1: First line in a file should be a top-level heading

(MD041, first-line-heading, first-line-h1)

src/Qyl.OpenTelemetry.SemanticConventions.Incubating/README.md

[warning] 1-1: First line in a file should be a top-level heading

(MD041, first-line-heading, first-line-h1)

src/Qyl.OpenTelemetry.SemanticConventions.Nuke/README.md

[warning] 1-1: First line in a file should be a top-level heading

(MD041, first-line-heading, first-line-h1)

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/README.md

[warning] 1-1: First line in a file should be a top-level heading

(MD041, first-line-heading, first-line-h1)

eng/analyzer-renumber-plan.md

[warning] 99-99: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 142-142: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (40)
Directory.Build.props (1)

10-10: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/DiagnosticDescriptors.cs (1)

11-12: LGTM!

Also applies to: 19-19, 26-26, 29-29, 36-36, 39-39, 46-46, 49-49, 56-56, 59-59, 66-66, 69-69, 76-76, 79-79, 86-86, 89-89, 96-96, 99-99, 106-106, 109-109, 116-116, 119-119, 126-126

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/LiveSemconvMetadataCodeFixProvider.cs (1)

11-13: LGTM!

Also applies to: 31-31

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0006MissingSchemaUrlAnalyzer.cs (1)

29-29: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0012InvalidAttributeValueAnalyzer.cs (1)

60-60: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0013IncorrectAttributeTypeAnalyzer.cs (1)

31-31: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0100ActivityMissingSemconvAnalyzer.cs (1)

16-16: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedCodeFixProvider.cs (1)

36-36: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefCodeFixProvider.cs (1)

36-36: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefParameterAnalyzer.cs (1)

31-31: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0110MissingExceptionRecordingOnActivityAnalyzer.cs (1)

21-21: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0200UnregisteredMeterAnalyzer.cs (1)

21-21: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0201InvalidMetricNameAnalyzer.cs (1)

30-30: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0202HighCardinalityMetricTagAnalyzer.cs (1)

58-58: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0300IncompleteServiceDefaultsAnalyzer.cs (1)

20-20: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0301NonOtlpCollectorEndpointAnalyzer.cs (1)

32-32: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0302MissingOTelConfigurationAnalyzer.cs (1)

44-44: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0303MissingResourceAttributesAnalyzer.cs (1)

26-26: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0304EnableEventSourceSupportAnalyzer.cs (1)

22-22: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0305LegacySemanticConventionsAccessorAnalyzer.cs (1)

22-22: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0401GenAiMissingRequiredAttributesAnalyzer.cs (1)

20-20: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0402UseTokenUsageHistogramAnalyzer.cs (1)

26-26: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0403InvalidGenAiOperationNameAnalyzer.cs (1)

23-23: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassCodeFixProvider.cs (1)

34-36: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodCodeFixProvider.cs (1)

34-36: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0601SensitiveDataInAttributeAnalyzer.cs (1)

94-94: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0700MissingOtlpConfigurationAnalyzer.cs (1)

32-32: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0701UncompressedExportAnalyzer.cs (1)

32-32: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0702BatchExportDisabledAnalyzer.cs (1)

25-25: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0703ConsiderSamplingAnalyzer.cs (1)

28-28: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedCodeFixProvider.cs (1)

50-50: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagCodeFixProvider.cs (1)

36-36: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceCodeFixProvider.cs (1)

36-36: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiCodeFixProvider.cs (1)

26-26: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405AgentTracedCodeFixProvider.cs (1)

30-30: LGTM!

Also applies to: 32-32

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/CodeFixResources.resx (1)

71-71: LGTM!

Also applies to: 74-74, 77-77, 80-80, 84-84, 87-87, 90-90, 93-93, 97-97, 101-101

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/AnalyzerReleases.Shipped.md (1)

4-4: LGTM!

Also applies to: 8-57

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SemconvLegacyContextSuppressor.cs (1)

49-57: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationAnalyzer.cs (1)

794-794: LGTM!

src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationCodeFixProvider.cs (1)

11-13: LGTM!

Comment thread eng/analyzer-renumber-plan.md Outdated
Comment thread src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/README.md Outdated
Comment thread src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/Resources.resx Outdated
Comment thread src/Qyl.OpenTelemetry.SemanticConventions.Incubating/README.md Outdated
Comment thread src/Qyl.OpenTelemetry.SemanticConventions.Nuke/README.md Outdated
Comment thread src/Qyl.OpenTelemetry.SemanticConventions/README.md Outdated
ANcpLua and others added 5 commits May 25, 2026 10:26
Critical:
- Resources.resx QYL0301AnalyzerMessageFormat: drop incorrect `grpc://`
  URI scheme suggestion. Per OpenTelemetry OTLP exporter spec the .NET
  exporter accepts only `http://` / `https://` even for gRPC transport;
  gRPC binds 4317, HTTP/protobuf binds 4318/v1/traces.

Minor:
- QYL0101UnregisteredActivitySourceAnalyzer.cs: align XML doc summary
  with the new diagnostic id (was still "for AL0063").
- 4 per-package READMEs: move H1 to line 1 to satisfy markdownlint MD041
  (was: badges first, H1 line 9).
- eng/analyzer-renumber-plan.md: language identifier on the dead-id list
  fenced code block.

Build still 0/0, no test changes needed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Prior commit 8f50e5d only landed the markdown code-fence-language fix —
the other 6 Edit calls failed silently because the files weren't read
first. This commit applies them:

Critical:
- Resources.resx QYL0301AnalyzerMessageFormat: drop invalid `grpc://`
  URI scheme. Per OTLP spec, the .NET exporter accepts only
  `http://` / `https://`; gRPC binds 4317, HTTP/protobuf binds
  4318/v1/traces.

Minor:
- QYL0101UnregisteredActivitySourceAnalyzer.cs: align XML doc summary
  with the renumbered diagnostic id (was "for AL0063").
- 4 per-package READMEs (SemanticConventions, .Incubating, .Analyzers,
  .Nuke): move H1 to line 1 to satisfy markdownlint MD041.

Build still 0/0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
QYL monorepo previously used Organization-UI defaults. Adding a custom
config tuned for the SemConv 5-package family:

  - 8-band QYL#### diagnostic ID enforcement at pre-merge level
  - per-package path_instructions (stable / incubating / sourcegen /
    analyzers / nuke / build host)
  - VerifyAttributesHash dogfood gate enforced via custom check
  - autofix-first finishing_touches (XML docs, missing tests, incremental-pipeline
    type discipline, AnalyzerReleases tracking, async/cancellation hygiene)
  - auto_apply_labels: false from day one (avoids the retry-loop bug seen
    on ANcpLua.Analyzers PR #174)

7 linked_repositories (sibling analyzer + Roslyn utilities + SDK + agents
+ qyl consumer + typespec source). Cross-team flag in tone instructions so
non-semconv rules get flagged for migration to ANcpLua.Analyzers and
vice-versa.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The word "donation" carries unwanted connotations for OSS upstream-merge
work. Reframed as "Upstream path" — accurate, neutral, no implied
asymmetry between the maintaining org and the upstream project.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ANcpLua ANcpLua merged commit a0d4dd5 into main May 25, 2026
3 checks passed
@ANcpLua ANcpLua deleted the feat/3.0-renumber branch May 25, 2026 11:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant