Skip to content

docs: add Reviewer advice to linter rule documentation#4849

Open
markcowl wants to merge 3 commits into
Azure:mainfrom
markcowl:markcowl/rules-reviewer-advice
Open

docs: add Reviewer advice to linter rule documentation#4849
markcowl wants to merge 3 commits into
Azure:mainfrom
markcowl:markcowl/rules-reviewer-advice

Conversation

@markcowl

@markcowl markcowl commented Jul 7, 2026

Copy link
Copy Markdown
Member

Summary

Adds a Reviewer advice section to the linter rule documentation pages under website/src/content/docs/docs/libraries/*/rules/. Each section gives spec reviewers concise, natural-language guidance on how to evaluate a rule violation, covering:

  • Impact — the affected area(s) (API, SDK, emitters, tooling) and what a violation causes.
  • How to fix — the change that resolves the violation.
  • When to suppress — whether/when a suppression is acceptable.

This helps reviewers judge how seriously to treat each violation and whether a suppression should be accepted.

Details

73 rule docs updated across three libraries:

  • @azure-tools/typespec-azure-core (35 rules)
  • @azure-tools/typespec-azure-resource-manager (36 rules)
  • @azure-tools/typespec-client-generator-core (2 rules)

Content is derived from the impact / how-to-fix / when-to-suppress guidance for each rule, including LintDiff correspondences where applicable. Docs-only change; no code or package behavior is affected. Files verified to be unchanged by prettier.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Add a Reviewer advice section to azure-core, azure-resource-manager, and
typespec-client-generator-core rule docs, summarizing each rule's impact,
how to fix a violation, and when a suppression is acceptable.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@azure-sdk-automation

Copy link
Copy Markdown
Contributor

No changes needing a change description found.

@azure-sdk-automation

Copy link
Copy Markdown
Contributor

You can try these changes here

🛝 Playground 🌐 Website

Cover rules not present in the source tables (bad-record-type, no-order-by,
non-breaking-versioning, rpc-operation-request-body, use-standard-names,
use-standard-operations, arm-agent-base-type-child-resources,
arm-agent-base-type-lifecycle-operations, retry-after, csharp-no-url-suffix,
no-unnamed-types), with advice inferred from each rule's API/SDK impact.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

⚡ Benchmark Results

⚠️ 17 metric(s) regressed above the +5% threshold:

Metric Baseline Current Change
total 🔴 1.01s 🔴 1.07s +6.0% 🔴
loader 🟡 305.5ms 🟡 323.9ms +6.0% 🔴
resolver 🟢 40.2ms 🟢 42.5ms +5.7% 🔴
checker 🟡 364.8ms 🟡 389.6ms +6.8% 🔴
linter 🟡 215.1ms 🟡 227.3ms +5.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🔴 26.6ms 🔴 28.7ms +7.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🔴 27.8ms 🔴 29.9ms +7.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 33.2ms 🔴 34.9ms +5.1% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 32.7ms 🔴 34.5ms +5.4% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟡 19.6ms 🔴 20.8ms +6.1% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🔴 29.8ms 🔴 31.7ms +6.2% 🔴
emit 🔴 6.05s 🔴 6.40s +5.7% 🔴
 ↳ emit/@azure-tools/typespec-autorest 🟢 125.3ms 🟢 132.2ms +5.5% 🔴
 ↳ emit/@azure-tools/typespec-python 🔴 2.26s 🔴 2.38s +5.6% 🔴
 ↳ emit/@typespec/http-client-js 🔴 571.1ms 🔴 606.0ms +6.1% 🔴
 ↳ emit/@typespec/openapi3 🟢 107.8ms 🟢 114.6ms +6.3% 🔴
 ↳ emit/@typespec/openapi3/compute 🟢 93.6ms 🟢 99.5ms +6.4% 🔴
Full details – comparing 5002493 vs baseline rolling-baseline-79a95b7-5ddeb8e (rolling baseline (20 main runs))
Metric Baseline Current Change
total 🔴 1.01s 🔴 1.07s +6.0% 🔴
loader 🟡 305.5ms 🟡 323.9ms +6.0% 🔴
resolver 🟢 40.2ms 🟢 42.5ms +5.7% 🔴
checker 🟡 364.8ms 🟡 389.6ms +6.8% 🔴
validation 🟢 85.4ms 🟢 88.9ms +4.2%
 ↳ validation/@azure-tools/typespec-azure-core 🟡 12.6ms 🟡 13.6ms +7.7%
 ↳ validation/@typespec/http 🟡 15.5ms 🟡 16.4ms +5.9%
 ↳ validation/@typespec/rest 🟢 1.6ms 🟢 1.8ms +8.8%
 ↳ validation/@typespec/versioning 🔴 51.6ms 🔴 53.0ms +2.7%
 ↳ validation/compiler 🟢 3.9ms 🟢 4.1ms +6.2%
linter 🟡 215.1ms 🟡 227.3ms +5.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/auth-required 🟢 0.1ms 🟢 0.1ms +7.1%
 ↳ linter/@azure-tools/typespec-azure-core/bad-record-type 🟢 0.6ms 🟢 0.6ms +1.0%
 ↳ linter/@azure-tools/typespec-azure-core/byos 🟢 8.3ms 🟢 8.8ms +5.0%
 ↳ linter/@azure-tools/typespec-azure-core/casing-style 🟢 1.4ms 🟢 1.5ms +2.4%
 ↳ linter/@azure-tools/typespec-azure-core/composition-over-inheritance 🟢 0.2ms 🟢 0.2ms +4.6%
 ↳ linter/@azure-tools/typespec-azure-core/documentation-required 🟢 2.0ms 🟢 2.1ms +4.8%
 ↳ linter/@azure-tools/typespec-azure-core/friendly-name 🟢 1.4ms 🟢 1.5ms +5.2%
 ↳ linter/@azure-tools/typespec-azure-core/key-visibility-required 🟢 0.4ms 🟢 0.4ms +5.3%
 ↳ linter/@azure-tools/typespec-azure-core/known-encoding 🟢 0.5ms 🟢 0.5ms +6.2%
 ↳ linter/@azure-tools/typespec-azure-core/long-running-polling-operation-required 🟢 0.8ms 🟢 0.8ms +2.1%
 ↳ linter/@azure-tools/typespec-azure-core/no-case-mismatch 🟢 0.7ms 🟢 0.7ms +4.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-closed-literal-union 🟢 1.0ms 🟢 1.0ms +4.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-enum 🟢 0.2ms 🟢 0.3ms +6.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-error-status-codes 🟢 0.3ms 🟢 0.3ms +2.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops 🟢 0.2ms 🟢 0.2ms +4.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-format 🟢 0.8ms 🟢 0.8ms +3.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-generic-numeric 🟢 0.8ms 🟢 0.9ms +5.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🔴 26.6ms 🔴 28.7ms +7.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-legacy-usage 🟢 2.0ms 🟢 2.2ms +5.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-multiple-discriminator 🟢 0.2ms 🟢 0.3ms +11.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-nullable 🟢 0.4ms 🟢 0.4ms +6.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-offsetdatetime 🟢 2.0ms 🟢 2.1ms +5.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-openapi 🟢 2.3ms 🟢 2.4ms +3.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-private-usage 🟢 3.2ms 🟢 3.4ms +7.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🔴 27.8ms 🔴 29.9ms +7.6% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 33.2ms 🔴 34.9ms +5.1% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-rest-library-interfaces 🟢 0.1ms 🟢 0.1ms +4.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 7.6ms 🟢 8.2ms +6.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-rpc-path-params 🟢 0.4ms 🟢 0.4ms +5.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-string-discriminator 🟢 0.1ms 🟢 0.2ms +6.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-unknown 🟢 0.3ms 🟢 0.4ms +4.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-unnamed-union 🟢 0.8ms 🟢 0.8ms +5.1%
 ↳ linter/@azure-tools/typespec-azure-core/operation-missing-api-version 🟢 0.4ms 🟢 0.4ms +1.8%
 ↳ linter/@azure-tools/typespec-azure-core/request-body-problem 🟢 0.5ms 🟢 0.5ms +3.9%
 ↳ linter/@azure-tools/typespec-azure-core/require-versioned 🟢 0.1ms 🟢 0.1ms +4.9%
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 32.7ms 🔴 34.5ms +5.4% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/rpc-operation-request-body 🟢 0.7ms 🟢 0.7ms +5.3%
 ↳ linter/@azure-tools/typespec-azure-core/spread-discriminated-model 🟢 0.5ms 🟢 0.5ms +5.9%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-names 🟢 7.6ms 🟢 8.1ms +7.6%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-operations 🟢 0.3ms 🟢 0.3ms +3.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-child-resources 🔴 22.1ms 🔴 22.4ms +1.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-lifecycle-operations 🟢 0.3ms 🟢 0.3ms -0.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version 🟡 12.2ms 🟡 12.7ms +4.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key 🟢 0.2ms 🟢 0.2ms +8.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage 🟢 0.1ms 🟢 0.1ms +4.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes 🟢 5.1ms 🟢 4.7ms -8.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts 🟡 17.2ms 🟡 17.9ms +3.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-record 🟢 0.6ms 🟢 0.7ms +4.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes 🟢 1.4ms 🟢 1.5ms +4.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes 🟢 0.2ms 🟢 0.2ms -0.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment 🟢 0.4ms 🟢 0.5ms +5.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property 🟢 0.4ms 🟢 0.4ms +5.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator 🟢 0.1ms 🟢 0.1ms +3.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb 🟢 0.2ms 🟢 0.2ms +2.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property 🟢 0.3ms 🟢 0.3ms +14.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format 🟢 0.2ms 🟢 0.2ms -0.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars 🟢 0.5ms 🟢 0.5ms +8.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern 🟢 0.1ms 🟢 0.1ms +4.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation 🟢 0.5ms 🟢 0.6ms +4.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response 🟢 8.9ms 🟢 9.4ms +5.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-patch 🟢 0.8ms 🟢 0.8ms +0.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars 🟢 0.4ms 🟢 0.4ms +3.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state 🟢 0.4ms 🟢 0.4ms +2.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels 🟢 0.2ms 🟢 0.2ms +7.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/empty-updateable-properties 🟢 0.4ms 🟢 0.4ms +4.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation 🟢 0.1ms 🟢 0.1ms +8.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟡 19.6ms 🔴 20.8ms +6.1% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint 🟢 0.1ms 🟢 0.2ms +7.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers 🟢 1.0ms 🟢 1.0ms +1.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-empty-model 🟢 0.3ms 🟢 0.3ms +7.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-override-props 🟢 0.3ms 🟢 0.3ms +5.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation 🟢 0.5ms 🟢 0.5ms +10.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🔴 29.8ms 🔴 31.7ms +6.2% 🔴
 ↳ linter/@azure-tools/typespec-azure-resource-manager/patch-envelope 🟢 0.4ms 🟢 0.4ms +9.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/resource-name 🟢 0.4ms 🟢 0.5ms +1.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop 🟢 5.5ms 🟢 5.5ms +0.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/unsupported-type 🟢 0.7ms 🟢 0.7ms +3.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/version-progression 🟢 0.3ms 🟢 0.3ms +1.2%
 ↳ linter/@azure-tools/typespec-client-generator-core/property-name-conflict 🟢 2.3ms 🟢 2.4ms +3.8%
 ↳ linter/@azure-tools/typespec-client-generator-core/require-client-suffix 🟢 1.7ms 🟢 1.7ms +4.4%
emit 🔴 6.05s 🔴 6.40s +5.7% 🔴
 ↳ emit/@Azure-Tools 🟢 0.0ms 🟢 0.0ms +0.0%
 ↳ emit/@azure-tools/typespec-autorest 🟢 125.3ms 🟢 132.2ms +5.5% 🔴
 ↳ emit/@azure-tools/typespec-python 🔴 2.26s 🔴 2.38s +5.6% 🔴
 ↳ emit/@typespec 🟢 0.0ms 🟢 0.0ms +0.0%
 ↳ emit/@typespec/http-client-js 🔴 571.1ms 🔴 606.0ms +6.1% 🔴
 ↳ emit/@typespec/openapi3 🟢 107.8ms 🟢 114.6ms +6.3% 🔴
 ↳ emit/@typespec/openapi3/compute 🟢 93.6ms 🟢 99.5ms +6.4% 🔴
 ↳ emit/@typespec/openapi3/write 🟢 13.9ms 🟢 14.7ms +5.5%

Averaged across 3 specs (azure-arm-resource-manager, azure-core-dataplane, azure-full).
Threshold: changes > ±5% are highlighted.
🟢 Fast · 🟡 Moderate (stages >200ms, rules >10ms) · 🔴 Slow (stages >400ms, rules >20ms)

Fixes spell-check failure for the VMSS (Virtual Machine Scale Set) acronym
used in the no-explicit-routes-resource-ops reviewer advice.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

meta:website TypeSpec.io updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant