feat(analyzers): renumber to 8 domain bands, 3.0.0 break#2
Conversation
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>
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (1)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
WalkthroughThis 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. ChangesDiagnostic ID renumbering for version 3.0.0
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Suggested labelsarea:infra, breaking 🚥 Pre-merge checks | ✅ 8✅ Passed checks (8 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
There was a problem hiding this comment.
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 winAlign 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 winUse the security category for
QYL0600.
QYL0600was 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 winRefresh stale diagnostic ID text in XML docs.
The documentation still references
QYL0083; it should be updated toQYL0600to 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 winUpdate XML docs to the new diagnostic ID.
The file-level and constant-level comments still reference
AL0124even though the analyzer now emitsQYL0405.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 winUpdate 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 winCorrect stale ID text in analyzer documentation.
Comments still reference
AL0071while the rule ID isQYL0500.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 winFix stale analyzer ID references in XML docs.
The XML comments still mention
AL0074while the diagnostic ID is nowQYL0404; 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
⛔ Files ignored due to path filters (10)
release-artifacts/Qyl.OpenTelemetry.SemanticConventions.3.0.0.nupkgis excluded by none and included by nonerelease-artifacts/Qyl.OpenTelemetry.SemanticConventions.3.0.0.snupkgis excluded by none and included by nonerelease-artifacts/Qyl.OpenTelemetry.SemanticConventions.Analyzers.3.0.0.nupkgis excluded by none and included by nonerelease-artifacts/Qyl.OpenTelemetry.SemanticConventions.Incubating.3.0.0.nupkgis excluded by none and included by nonerelease-artifacts/Qyl.OpenTelemetry.SemanticConventions.Incubating.3.0.0.snupkgis excluded by none and included by nonerelease-artifacts/Qyl.OpenTelemetry.SemanticConventions.Nuke.3.0.0.nupkgis excluded by none and included by nonerelease-artifacts/Qyl.OpenTelemetry.SemanticConventions.Nuke.3.0.0.snupkgis excluded by none and included by nonerelease-artifacts/Qyl.OpenTelemetry.SemanticConventions.SourceGeneration.3.0.0.nupkgis excluded by none and included by nonesrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/CodeFixResources.Designer.csis excluded by!**/*.Designer.csand included bysrc/**src/Qyl.OpenTelemetry.SemanticConventions.Analyzers/Resources.Designer.csis excluded by!**/*.Designer.csand included bysrc/**
📒 Files selected for processing (61)
Directory.Build.propseng/analyzer-renumber-plan.mdsrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/AnalyzerReleases.Shipped.mdsrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/CodeFixResources.resxsrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/DiagnosticDescriptors.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/LiveSemconvMetadataCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0006MissingSchemaUrlAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0012InvalidAttributeValueAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0013IncorrectAttributeTypeAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0100ActivityMissingSemconvAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0101UnregisteredActivitySourceAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedActivitySourceNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0103DuplicateInstrumentationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0104InvalidActivitySourceNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0105ManualSpanRecommendedAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefParameterAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0110MissingExceptionRecordingOnActivityAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0200UnregisteredMeterAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0201InvalidMetricNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0202HighCardinalityMetricTagAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0300IncompleteServiceDefaultsAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0301NonOtlpCollectorEndpointAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0302MissingOTelConfigurationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0303MissingResourceAttributesAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0304EnableEventSourceSupportAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0305LegacySemanticConventionsAccessorAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0401GenAiMissingRequiredAttributesAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0402UseTokenUsageHistogramAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0403InvalidGenAiOperationNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiAttributeAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405AgentTracedCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405NonInterceptableAgentTracedAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0406DirectGenAiSdkUsageAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassMustBePartialStaticAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodMustBePartialAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0600InsecureEndpointAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0601SensitiveDataInAttributeAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0700MissingOtlpConfigurationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0701UncompressedExportAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0702BatchExportDisabledAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0703ConsiderSamplingAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/README.mdsrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/ReservedCatalogStubsAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/Resources.resxsrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SemconvLegacyContextSuppressor.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Incubating/README.mdsrc/Qyl.OpenTelemetry.SemanticConventions.Nuke/README.mdsrc/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.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0403InvalidGenAiOperationNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0013IncorrectAttributeTypeAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0304EnableEventSourceSupportAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0700MissingOtlpConfigurationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedActivitySourceNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassMustBePartialStaticAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0701UncompressedExportAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0702BatchExportDisabledAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0006MissingSchemaUrlAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0103DuplicateInstrumentationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodMustBePartialAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405NonInterceptableAgentTracedAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiAttributeAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0305LegacySemanticConventionsAccessorAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0301NonOtlpCollectorEndpointAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0406DirectGenAiSdkUsageAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0110MissingExceptionRecordingOnActivityAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0105ManualSpanRecommendedAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0402UseTokenUsageHistogramAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0100ActivityMissingSemconvAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0401GenAiMissingRequiredAttributesAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0012InvalidAttributeValueAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405AgentTracedCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0200UnregisteredMeterAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0703ConsiderSamplingAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/LiveSemconvMetadataCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0303MissingResourceAttributesAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0300IncompleteServiceDefaultsAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0201InvalidMetricNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0601SensitiveDataInAttributeAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0202HighCardinalityMetricTagAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0302MissingOTelConfigurationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0600InsecureEndpointAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SemconvLegacyContextSuppressor.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefParameterAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0104InvalidActivitySourceNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/DiagnosticDescriptors.cssrc/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.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0403InvalidGenAiOperationNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0013IncorrectAttributeTypeAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0304EnableEventSourceSupportAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0700MissingOtlpConfigurationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedActivitySourceNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0106OrphanedTracedTagAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0500MeterClassMustBePartialStaticAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0701UncompressedExportAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0702BatchExportDisabledAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0006MissingSchemaUrlAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0103DuplicateInstrumentationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodMustBePartialAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405NonInterceptableAgentTracedAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0404DeprecatedGenAiAttributeAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0305LegacySemanticConventionsAccessorAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0107RedundantNoTraceAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0301NonOtlpCollectorEndpointAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0406DirectGenAiSdkUsageAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0110MissingExceptionRecordingOnActivityAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0501MetricMethodCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0105ManualSpanRecommendedAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0402UseTokenUsageHistogramAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0100ActivityMissingSemconvAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0401GenAiMissingRequiredAttributesAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0012InvalidAttributeValueAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0405AgentTracedCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0200UnregisteredMeterAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0703ConsiderSamplingAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/LiveSemconvMetadataCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0303MissingResourceAttributesAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0300IncompleteServiceDefaultsAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0201InvalidMetricNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0601SensitiveDataInAttributeAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SupplementalSemconvMigrationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0202HighCardinalityMetricTagAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0302MissingOTelConfigurationAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0600InsecureEndpointAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0102TracedCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/SemconvLegacyContextSuppressor.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0109TracedTagOnOutRefParameterAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0104InvalidActivitySourceNameAnalyzer.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/QYL0108NonInterceptableTracedCodeFixProvider.cssrc/Qyl.OpenTelemetry.SemanticConventions.Analyzers/DiagnosticDescriptors.cssrc/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!
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>
…irst)" This reverts commit b27600b.
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>
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.QYL0001..0013QYL0100..0110QYL0200..0202QYL0300..0305QYL0400..0406QYL0500..0501QYL0600..0601QYL0700..0703Each band leaves ~80 free slots for growth — no future re-renumber required. Reserved
QYL0800..0999for future bands (logs/events, AOT/trim).QYL9####runtime-derived suppressor IDs unchanged.Side-effect: pre-existing resx prefix bug fixed
AlAnalyzer.CreateRuleinterpolates$"{id}AnalyzerTitle"for resx lookup, but every resx key used the legacyAL####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
ReservedCatalogStubsAnalyzerplaceholders deleted (the supplemental migration analyzer always reports through 3 real IDs, never through the reserved stubs)SemconvLegacyContextSuppressorID table, twoFixableDiagnosticIdsarrays, one switch arm inSupplementalSemconvMigrationAnalyzerPlan + per-package READMEs
eng/analyzer-renumber-plan.mdTest plan
dotnet buildslnx: 0/0tests/Pipeline.Tests: 11/11 passtests/SourceGeneration.Tests: 60/60 pass./build.sh VerifyAttributesHash(dogfood): green, attribute manifest unchangeddotnet packslnx: 5 nupkg + 3 snupkg @ 3.0.0After merge
dotnet nuget push5 packages @ 3.0.0.Analyzers(had legacy IDs; other 4 packages keep 2.0.1 listed as a stable intermediate)🤖 Generated with Claude Code