[.NET APIView] .NET Parser incorrectly generates duplicate line ID
- Dominant language
- C#
- Stars
- 135
- Forks
- 260
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 144
Description
For the .NET ApiView Parser, this issue is occurring consistently. The main implication is that it causes failures when running Generate copilot review, and ApiView does not accept submissions with duplicate line IDs.
We plan to enforce a policy to prevent this, and an active effort is underway: https://github.com/Azure/azure-sdk-tools/issues/11591.
This can be observed in: [System.ClientModel](https://spa.apiviewstagingtest.com/review/1b123e7a51d44ebe945f0212ee039c65?activeApiRevisionId=979b77a978bf4633a2c46a72547a9f12) with the line ids: ` System.ClientModel.Primitives.PipelineRequestHeaders.GetEnumerator()`
This is a longer list of duplicate line ids examples:
```json
{
"$id": "5",
"language": "C#",
"packageName": "Azure.ResourceManager.IotFirmwareDefense",
"reviewId": "6f264944a85a4834b3b7e40a23d7f885",
"revisionId": "442f9e8b6e7c4312b16e0a2c0dc767b1",
"duplicateLineIds": "Azure.ResourceManager.IotFirmwareDefense.FirmwareAnalysisSummaryCollection.GetEnumerator(), Azure.ResourceManager.IotFirmwareDefense.FirmwareAnalysisWorkspaceCollection.GetEnumerator(), Azure.ResourceManager.IotFirmwareDefense.IotFirmwareCollection.GetEnumerator(), Azure.ResourceManager.IotFirmwareDefense.UsageMetricCollection.GetEnumerator()"
},
{
"$id": "6",
"language": "C#",
"packageName": "Azure.ResourceManager.Marketplace",
"reviewId": "e0b5892fc2aa4ec39813946cb9c183a3",
"revisionId": "30f4d926ece541f7afb6229c6e0b027e",
"duplicateLineIds": "Azure.ResourceManager.Marketplace.MarketplaceAdminApprovalRequestCollection.GetEnumerator(), Azure.ResourceManager.Marketplace.MarketplaceApprovalRequestCollection.GetEnumerator(), Azure.ResourceManager.Marketplace.PrivateStoreCollection.GetEnumerator(), Azure.ResourceManager.Marketplace.PrivateStoreCollectionInfoCollection.GetEnumerator(), Azure.ResourceManager.Marketplace.PrivateStoreOfferCollection.GetEnumerator()"
},
{
"$id": "7",
"language": "C#",
"packageName": "Azure.ResourceManager.Sphere",
"reviewId": "90512d98a631458e9b891a6a98da888e",
"revisionId": "7065a506579a4dc9912277138a104aa9",
"duplicateLineIds": "Azure.ResourceManager.Sphere.SphereCatalogCollection.GetEnumerator(), Azure.ResourceManager.Sphere.SphereCertificateCollection.GetEnumerator(), Azure.ResourceManager.Sphere.SphereDeploymentCollection.GetEnumerator(), Azure.ResourceManager.Sphere.SphereDeviceCollection.GetEnumerator(), Azure.ResourceManager.Sphere.SphereDeviceGroupCollection.GetEnumerator(), Azure.ResourceManager.Sphere.SphereImageCollection.GetEnumerator(), Azure.ResourceManager.Sphere.SphereProductCollection.GetEnumerator()"
},
{
"$id": "8",
"language": "C#",
"packageName": "Azure.ResourceManager.KeyVault",
"reviewId": "d8314e8843874af79d02de87269e9607",
"revisionId": "c72f78d4e3a0436b8add1700b0ec92d6",
"duplicateLineIds": "Azure.ResourceManager.KeyVault.KeyVaultCollection.GetEnumerator(), Azure.ResourceManager.KeyVault.KeyVaultPrivateEndpointConnectionCollection.GetEnumerator(), Azure.ResourceManager.KeyVault.KeyVaultSecretCollection.GetEnumerator(), Azure.ResourceManager.KeyVault.ManagedHsmCollection.GetEnumerator(), Azure.ResourceManager.KeyVault.ManagedHsmPrivateEndpointConnectionCollection.GetEnumerator()"
},
{
"$id": "9",
"language": "C#",
"packageName": "Azure.ResourceManager.Attestation",
"reviewId": "805be9494e0b45afba6e0c0aa14d424a",
"revisionId": "6e9446f9c12343c29d61280427ed0674",
"duplicateLineIds": "Azure.ResourceManager.Attestation.AttestationPrivateEndpointConnectionCollection.GetEnumerator(), Azure.ResourceManager.Attestation.AttestationProviderCollection.GetEnumerator()"
},
{
"$id": "10",
"language": "C#",
"packageName": "Azure.ResourceManager.Migrate",
"reviewId": "b36357a5f2da4aa9a39cc5fa5fce5cd5",
"revisionId": "817cd15a443d4747a2551d7f8f447748",
"duplicateLineIds": "Azure.ResourceManager.Migrate.HeterogeneousAssessmentCollection.GetEnumerator(), Azure.ResourceManager.Migrate.HeterogeneousAssessmentSummaryCollection.GetEnumerator()"
},
{
"$id": "11",
"language": "C#",
"packageName": "Azure.ResourceManager.ApiManagement",
"reviewId": "441201e06d7e48a895102a33026828c0",
"revisionId": "58e3c37356fe47edbaeecf2c8c68b3fd",
"duplicateLineIds": "Azure.ResourceManager.ApiManagement.ApiCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiDiagnosticCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiGatewayCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiGatewayConfigConnectionCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiIssueAttachmentCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiIssueCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiIssueCommentCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementAuthorizationServerCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementBackendCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementCacheCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementCertificateCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementDiagnosticCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementEmailTemplateCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementGatewayCertificateAuthorityCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementGatewayCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementGatewayHostnameConfigurationCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementGlobalSchemaCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementGroupCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementIdentityProviderCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementIssueCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementLoggerCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementNamedValueCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementNotificationCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementOpenIdConnectProviderCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementPolicyCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementPortalRevisionCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementPrivateEndpointConnectionCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementPrivateLinkResourceCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementProductCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementProductPolicyCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementProductTagCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementServiceCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementSubscriptionCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementTagCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementTenantSettingCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementUserCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementUserSubscriptionCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiManagementWorkspaceLinksCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiOperationCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiOperationPolicyCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiOperationTagCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiPolicyCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiReleaseCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiSchemaCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiTagCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiTagDescriptionCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ApiVersionSetCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.AuthorizationContractCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.AuthorizationProviderContractCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.DocumentationContractCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.PolicyFragmentContractCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.PolicyRestrictionContractCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.PortalConfigContractCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ResolverContractCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceApiResolverPolicyCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceProductApiLinkCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceProductGroupLinkCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceTagApiLinkCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceTagOperationLinkCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceTagProductLinkCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceApiCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceApiDiagnosticCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceApiOperationCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceApiOperationPolicyCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceApiPolicyCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceApiReleaseCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceApiSchemaCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceApiVersionSetCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceBackendCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceCertificateCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceDiagnosticCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceGroupCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceLoggerCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceNamedValueCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceNotificationCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspacePolicyCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspacePolicyFragmentCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceProductApiLinkCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceProductCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceProductGroupLinkCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceProductPolicyCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceSchemaCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceSubscriptionCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceTagApiLinkCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceTagCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceTagOperationLinkCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.ServiceWorkspaceTagProductLinkCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.TenantAccessInfoCollection.GetEnumerator(), Azure.ResourceManager.ApiManagement.WorkspaceContractCollection.GetEnumerator()"
},
{
"$id": "12",
"language": "C#",
"packageName": "Azure.ResourceManager.Advisor",
"reviewId": "d71844aea8af4a1480e7360f165b6b16",
"revisionId": "aa4fb607fbe24366905ea531c159df6b",
"duplicateLineIds": "Azure.ResourceManager.Advisor.MetadataEntityCollection.GetEnumerator(), Azure.ResourceManager.Advisor.ResourceRecommendationBaseCollection.GetEnumerator()"
},
{
"$id": "13",
"language": "C#",
"packageName": "System.ClientModel",
"reviewId": "1b123e7a51d44ebe945f0212ee039c65",
"revisionId": "979b77a978bf4633a2c46a72547a9f12",
"duplicateLineIds": "System.ClientModel.CollectionResult\u003CT\u003E.GetEnumerator(), System.ClientModel.Primitives.PipelineRequestHeaders.GetEnumerator(), System.ClientModel.Primitives.PipelineResponseHeaders.GetEnumerator()"
},
{
"$id": "14",
"language": "C#",
"packageName": "Azure.Core.Experimental",
"reviewId": "060b1daa520a4874a7b18120cc3cafb5",
"revisionId": "b7eaf8ee68dd4f29a6e67e64ab140d6c",
"duplicateLineIds": "Azure.Core"
},
{
"$id": "15",
"language": "C#",
"packageName": "Azure.Core",
"reviewId": "ba87b735158144eea6cabe21a2c58dde",
"revisionId": "8f2f2c058a8740418904d4f4362c017c",
"duplicateLineIds": "Azure.Pageable\u003CT\u003E.GetEnumerator(), System.ClientModel.Primitives.ModelReaderWriterBuildableAttribute.Azure.Core.AzureCoreContext, Azure.Core.RehydrationToken.Create(System.Text.Json.Utf8JsonReader, System.ClientModel.Primitives.ModelReaderWriterOptions), Azure.Core.RehydrationToken.Write(System.Text.Json.Utf8JsonWriter, System.ClientModel.Primitives.ModelReaderWriterOptions), Azure.Core.RehydrationToken.Create(System.BinaryData, System.ClientModel.Primitives.ModelReaderWriterOptions), Azure.Core.RehydrationToken.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions), Azure.Core.RehydrationToken.Write(System.ClientModel.Primitives.ModelReaderWriterOptions), Azure.Core.RequestHeaders.GetEnumerator(), Azure.Core.ResponseHeaders.GetEnumerator(), Azure.Core.GeoJson.GeoArray\u003CT\u003E.Enumerator.Current, Azure.Core.GeoJson.GeoArray\u003CT\u003E.GetEnumerator(), Azure.Core.GeoJson.GeoCollection.GetEnumerator(), Azure.Core.GeoJson.GeoLineStringCollection.GetEnumerator(), Azure.Core.GeoJson.GeoPointCollection.GetEnumerator(), Azure.Core.GeoJson.GeoPolygonCollection.GetEnumerator()"
},
```
Contributor guide
Assessment
This issue has not been assessed yet.