diff --git a/src/dotnet/Azure.ClientSdk.Analyzers/Azure.ClientSdk.Analyzers/BannedAssembliesAnalyzer.cs b/src/dotnet/Azure.ClientSdk.Analyzers/Azure.ClientSdk.Analyzers/BannedAssembliesAnalyzer.cs index 5b330ede801f..caffd6999bf0 100644 --- a/src/dotnet/Azure.ClientSdk.Analyzers/Azure.ClientSdk.Analyzers/BannedAssembliesAnalyzer.cs +++ b/src/dotnet/Azure.ClientSdk.Analyzers/Azure.ClientSdk.Analyzers/BannedAssembliesAnalyzer.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; using Microsoft.CodeAnalysis; @@ -38,7 +38,7 @@ static void CheckType(ISymbolAnalysisContext context, ITypeSymbol type, ISymbol { if (BannedAssemblies.Contains(type.ContainingAssembly.Name)) { - if (type.Name != "Utf8JsonReader" && type.Name != "Utf8JsonWriter") + if (!IsUtf8JsonReaderWriter(type)) { context.ReportDiagnostic(Diagnostic.Create(Descriptors.AZC0014, symbol.Locations.First(), BannedAssembliesMessageArgs), symbol); } @@ -89,5 +89,15 @@ static void CheckType(ISymbolAnalysisContext context, ITypeSymbol type, ISymbol break; } } + + private static bool IsUtf8JsonReaderWriter(ITypeSymbol type) + { + return (type.Name == "Utf8JsonReader" || type.Name == "Utf8JsonWriter") && GetFullNamespace(type.ContainingNamespace) == "System.Text.Json"; + } + + private static string GetFullNamespace(INamespaceSymbol type) + { + return type.ContainingNamespace.Name == "" ? type.Name : $"{GetFullNamespace(type.ContainingNamespace)}.{type.Name}"; + } } -} \ No newline at end of file +}