Repository navigation
Client SDK linter ruleset(s) #4697
Copy link
Copy link
Open
Labels
featureNew feature or requestNew feature or requestlib:azure-coreIssues for @azure-tools/typespec-azure-core libraryIssues for @azure-tools/typespec-azure-core librarylinterIssues related to linter rulesIssues related to linter rulestriaged:core
Milestone
Description
Move client only rules(where the fix is a client.tsp augment) to a separate ruleset that would not apply to services that do not generate SDKs.
Proposal:
- Either have a
client-sdkor a<lang>-client-sdkper language. - tsv enforce ruleset(s) are enabled when corresponding emitter has options defined
Examples
- Service X no sdk - valid
options:
"@azure-tools/typespec-autorest":
use-read-only-status-schema: true
emitter-output-dir: "{project-root}"
output-file: "{emitter-output-dir}/{version-status}/{version}/widget.json"
arm-types-dir: "{project-root}/../../../../common-types/resource-management"
examples-dir: "{emitter-output-dir}/{version-status}/{version}/examples"
skip-example-copying: true
linter:
extends:
- "@azure-tools/typespec-azure-rulesets/resource-manager"- Service X decide want to add c#
options:
"@azure-tools/typespec-autorest":
use-read-only-status-schema: true
emitter-output-dir: "{project-root}"
output-file: "{emitter-output-dir}/{version-status}/{version}/widget.json"
arm-types-dir: "{project-root}/../../../../common-types/resource-management"
examples-dir: "{emitter-output-dir}/{version-status}/{version}/examples"
skip-example-copying: true
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/Azure.ResourceManager.Contoso"
clear-output-folder: true
model-namespace: false
namespace: "Azure.ResourceManager.Contoso"
linter:
extends:
- "@azure-tools/typespec-azure-rulesets/resource-manager"$ npx tsv specification/my-x
error specification/my-x/tspconfig.yaml - missing ruleset `csharp-client-sdk` or `client-sdk`- Fix
options:
"@azure-tools/typespec-autorest":
use-read-only-status-schema: true
emitter-output-dir: "{project-root}"
output-file: "{emitter-output-dir}/{version-status}/{version}/widget.json"
arm-types-dir: "{project-root}/../../../../common-types/resource-management"
examples-dir: "{emitter-output-dir}/{version-status}/{version}/examples"
skip-example-copying: true
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/Azure.ResourceManager.Contoso"
clear-output-folder: true
model-namespace: false
namespace: "Azure.ResourceManager.Contoso"
linter:
extends:
- "@azure-tools/typespec-azure-rulesets/resource-manager"
- "@azure-tools/typespec-azure-rulesets/csharp-client-sdk" # error if missing
- "@azure-tools/typespec-azure-rulesets/client-sdk" # oroptions:
"@azure-tools/typespec-autorest":
use-read-only-status-schema: true
emitter-output-dir: "{project-root}"
output-file: "{emitter-output-dir}/{version-status}/{version}/widget.json"
arm-types-dir: "{project-root}/../../../../common-types/resource-management"
examples-dir: "{emitter-output-dir}/{version-status}/{version}/examples"
skip-example-copying: true
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/Azure.ResourceManager.Contoso"
clear-output-folder: true
model-namespace: false
namespace: "Azure.ResourceManager.Contoso"
"@azure-tools/typespec-python":
emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-contoso"
namespace: "azure.mgmt.contoso"
generate-test: true
generate-sample: true
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-contoso"
namespace: "com.azure.resourcemanager.contoso"
service-name: "contoso"
"@azure-tools/typespec-ts":
emitter-output-dir: "{output-dir}/{service-dir}/arm-contoso"
experimental-extensible-enums: true
flavor: azure
package-details:
name: "@azure/arm-contoso"
"@azure-tools/typespec-go":
service-dir: "sdk/resourcemanager/contoso"
emitter-output-dir: "{output-dir}/{service-dir}/armcontoso"
module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armcontoso"
fix-const-stuttering: true
generate-samples: true
generate-fakes: true
head-as-boolean: true
linter:
extends:
- "@azure-tools/typespec-azure-rulesets/resource-manager"
- "@azure-tools/typespec-azure-rulesets/csharp-client-sdk" # error if missing
- "@azure-tools/typespec-azure-rulesets/csharp-python-sdk" # error if missing
- "@azure-tools/typespec-azure-rulesets/client-sdk" # orReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
featureNew feature or requestNew feature or requestlib:azure-coreIssues for @azure-tools/typespec-azure-core libraryIssues for @azure-tools/typespec-azure-core librarylinterIssues related to linter rulesIssues related to linter rulestriaged:core
Activity
markcowl commentedon Jun 29, 2026
For now:
Future: