From e323d1ba2c13f186f5e139b2beb7ed8b956a463c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Dec 2025 18:27:37 +0000 Subject: [PATCH 1/3] Initial plan From cd07cd70bed21db1341fcb8c21319bb07fb0c075 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Dec 2025 18:38:33 +0000 Subject: [PATCH 2/3] Add HelpLinkUri to all Roslyn analyzer diagnostics Co-authored-by: YunchuWang <12449837+YunchuWang@users.noreply.github.com> --- .../Activities/FunctionNotFoundAnalyzer.cs | 6 ++- ...MatchingInputOutputTypeActivityAnalyzer.cs | 6 ++- .../DurableClientBindingAnalyzer.cs | 3 +- .../EntityTriggerBindingAnalyzer.cs | 3 +- .../OrchestrationTriggerBindingAnalyzer.cs | 3 +- .../CancellationTokenOrchestrationAnalyzer.cs | 3 +- .../OtherBindingsOrchestrationAnalyzer.cs | 3 +- .../DateTimeOrchestrationAnalyzer.cs | 3 +- .../DelayOrchestrationAnalyzer.cs | 3 +- .../EnvironmentOrchestrationAnalyzer.cs | 3 +- .../GuidOrchestrationAnalyzer.cs | 3 +- .../Orchestration/IOOrchestrationAnalyzer.cs | 3 +- .../ThreadTaskOrchestrationAnalyzer.cs | 3 +- .../DiagnosticDescriptorTests.cs | 51 +++++++++++++++++++ 14 files changed, 81 insertions(+), 15 deletions(-) create mode 100644 test/Analyzers.Tests/DiagnosticDescriptorTests.cs diff --git a/src/Analyzers/Activities/FunctionNotFoundAnalyzer.cs b/src/Analyzers/Activities/FunctionNotFoundAnalyzer.cs index b1222d4b..7c70215f 100644 --- a/src/Analyzers/Activities/FunctionNotFoundAnalyzer.cs +++ b/src/Analyzers/Activities/FunctionNotFoundAnalyzer.cs @@ -39,7 +39,8 @@ public sealed class FunctionNotFoundAnalyzer : DiagnosticAnalyzer AnalyzersCategories.Activity, DiagnosticSeverity.Warning, customTags: [WellKnownDiagnosticTags.CompilationEnd], - isEnabledByDefault: true); + isEnabledByDefault: true, + helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{ActivityNotFoundDiagnosticId}"); static readonly DiagnosticDescriptor SubOrchestrationNotFoundRule = new( SubOrchestrationNotFoundDiagnosticId, @@ -48,7 +49,8 @@ public sealed class FunctionNotFoundAnalyzer : DiagnosticAnalyzer AnalyzersCategories.Orchestration, DiagnosticSeverity.Warning, customTags: [WellKnownDiagnosticTags.CompilationEnd], - isEnabledByDefault: true); + isEnabledByDefault: true, + helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{SubOrchestrationNotFoundDiagnosticId}"); /// public override ImmutableArray SupportedDiagnostics => [ActivityNotFoundRule, SubOrchestrationNotFoundRule]; diff --git a/src/Analyzers/Activities/MatchingInputOutputTypeActivityAnalyzer.cs b/src/Analyzers/Activities/MatchingInputOutputTypeActivityAnalyzer.cs index ebdaac79..01b3b9f4 100644 --- a/src/Analyzers/Activities/MatchingInputOutputTypeActivityAnalyzer.cs +++ b/src/Analyzers/Activities/MatchingInputOutputTypeActivityAnalyzer.cs @@ -40,7 +40,8 @@ public class MatchingInputOutputTypeActivityAnalyzer : DiagnosticAnalyzer AnalyzersCategories.Activity, DiagnosticSeverity.Warning, customTags: [WellKnownDiagnosticTags.CompilationEnd], - isEnabledByDefault: true); + isEnabledByDefault: true, + helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{InputArgumentTypeMismatchDiagnosticId}"); static readonly DiagnosticDescriptor OutputArgumentTypeMismatchRule = new( OutputArgumentTypeMismatchDiagnosticId, @@ -49,7 +50,8 @@ public class MatchingInputOutputTypeActivityAnalyzer : DiagnosticAnalyzer AnalyzersCategories.Activity, DiagnosticSeverity.Warning, customTags: [WellKnownDiagnosticTags.CompilationEnd], - isEnabledByDefault: true); + isEnabledByDefault: true, + helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{OutputArgumentTypeMismatchDiagnosticId}"); /// public override ImmutableArray SupportedDiagnostics => [InputArgumentTypeMismatchRule, OutputArgumentTypeMismatchRule]; diff --git a/src/Analyzers/Functions/AttributeBinding/DurableClientBindingAnalyzer.cs b/src/Analyzers/Functions/AttributeBinding/DurableClientBindingAnalyzer.cs index 8089043e..e6ec120c 100644 --- a/src/Analyzers/Functions/AttributeBinding/DurableClientBindingAnalyzer.cs +++ b/src/Analyzers/Functions/AttributeBinding/DurableClientBindingAnalyzer.cs @@ -27,7 +27,8 @@ public sealed class DurableClientBindingAnalyzer : MatchingAttributeBindingAnaly MessageFormat, AnalyzersCategories.AttributeBinding, DiagnosticSeverity.Error, - isEnabledByDefault: true); + isEnabledByDefault: true, + helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{DiagnosticId}"); /// public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Functions/AttributeBinding/EntityTriggerBindingAnalyzer.cs b/src/Analyzers/Functions/AttributeBinding/EntityTriggerBindingAnalyzer.cs index 8667cb32..4b269ff5 100644 --- a/src/Analyzers/Functions/AttributeBinding/EntityTriggerBindingAnalyzer.cs +++ b/src/Analyzers/Functions/AttributeBinding/EntityTriggerBindingAnalyzer.cs @@ -27,7 +27,8 @@ public sealed class EntityTriggerBindingAnalyzer : MatchingAttributeBindingAnaly MessageFormat, AnalyzersCategories.AttributeBinding, DiagnosticSeverity.Error, - isEnabledByDefault: true); + isEnabledByDefault: true, + helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{DiagnosticId}"); /// public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Functions/AttributeBinding/OrchestrationTriggerBindingAnalyzer.cs b/src/Analyzers/Functions/AttributeBinding/OrchestrationTriggerBindingAnalyzer.cs index d6642043..ebe8bf4b 100644 --- a/src/Analyzers/Functions/AttributeBinding/OrchestrationTriggerBindingAnalyzer.cs +++ b/src/Analyzers/Functions/AttributeBinding/OrchestrationTriggerBindingAnalyzer.cs @@ -27,7 +27,8 @@ public sealed class OrchestrationTriggerBindingAnalyzer : MatchingAttributeBindi MessageFormat, AnalyzersCategories.AttributeBinding, DiagnosticSeverity.Error, - isEnabledByDefault: true); + isEnabledByDefault: true, + helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{DiagnosticId}"); /// public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Functions/Orchestration/CancellationTokenOrchestrationAnalyzer.cs b/src/Analyzers/Functions/Orchestration/CancellationTokenOrchestrationAnalyzer.cs index 738f4f7d..0780bae9 100644 --- a/src/Analyzers/Functions/Orchestration/CancellationTokenOrchestrationAnalyzer.cs +++ b/src/Analyzers/Functions/Orchestration/CancellationTokenOrchestrationAnalyzer.cs @@ -30,7 +30,8 @@ public class CancellationTokenOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Functions/Orchestration/OtherBindingsOrchestrationAnalyzer.cs b/src/Analyzers/Functions/Orchestration/OtherBindingsOrchestrationAnalyzer.cs index 6cea911d..49d0d7c0 100644 --- a/src/Analyzers/Functions/Orchestration/OtherBindingsOrchestrationAnalyzer.cs +++ b/src/Analyzers/Functions/Orchestration/OtherBindingsOrchestrationAnalyzer.cs @@ -30,7 +30,8 @@ class OtherBindingsOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/DateTimeOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/DateTimeOrchestrationAnalyzer.cs index 7eefeb67..75d29f6e 100644 --- a/src/Analyzers/Orchestration/DateTimeOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/DateTimeOrchestrationAnalyzer.cs @@ -29,7 +29,8 @@ public sealed class DateTimeOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/DelayOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/DelayOrchestrationAnalyzer.cs index 5fcef63a..ff6fc6da 100644 --- a/src/Analyzers/Orchestration/DelayOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/DelayOrchestrationAnalyzer.cs @@ -29,7 +29,8 @@ public class DelayOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/EnvironmentOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/EnvironmentOrchestrationAnalyzer.cs index 3e4fb773..256e3b8e 100644 --- a/src/Analyzers/Orchestration/EnvironmentOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/EnvironmentOrchestrationAnalyzer.cs @@ -31,7 +31,8 @@ public sealed class EnvironmentOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/GuidOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/GuidOrchestrationAnalyzer.cs index 2b0c4c71..5000a71f 100644 --- a/src/Analyzers/Orchestration/GuidOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/GuidOrchestrationAnalyzer.cs @@ -29,7 +29,8 @@ public sealed class GuidOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/IOOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/IOOrchestrationAnalyzer.cs index 6051ccc5..0be3efb2 100644 --- a/src/Analyzers/Orchestration/IOOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/IOOrchestrationAnalyzer.cs @@ -30,7 +30,8 @@ public sealed class IOOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/ThreadTaskOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/ThreadTaskOrchestrationAnalyzer.cs index 8d640ed1..4a8475a5 100644 --- a/src/Analyzers/Orchestration/ThreadTaskOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/ThreadTaskOrchestrationAnalyzer.cs @@ -29,7 +29,8 @@ public sealed class ThreadTaskOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/test/Analyzers.Tests/DiagnosticDescriptorTests.cs b/test/Analyzers.Tests/DiagnosticDescriptorTests.cs new file mode 100644 index 00000000..d576aafa --- /dev/null +++ b/test/Analyzers.Tests/DiagnosticDescriptorTests.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System.Collections.Immutable; +using System.Reflection; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.DurableTask.Analyzers.Activities; +using Microsoft.DurableTask.Analyzers.Functions.AttributeBinding; +using Microsoft.DurableTask.Analyzers.Functions.Orchestration; +using Microsoft.DurableTask.Analyzers.Orchestration; + +namespace Microsoft.DurableTask.Analyzers.Tests; + +/// +/// Tests to validate diagnostic descriptor properties. +/// +public class DiagnosticDescriptorTests +{ + [Theory] + [InlineData(typeof(DateTimeOrchestrationAnalyzer))] + [InlineData(typeof(GuidOrchestrationAnalyzer))] + [InlineData(typeof(DelayOrchestrationAnalyzer))] + [InlineData(typeof(ThreadTaskOrchestrationAnalyzer))] + [InlineData(typeof(IOOrchestrationAnalyzer))] + [InlineData(typeof(EnvironmentOrchestrationAnalyzer))] + [InlineData(typeof(CancellationTokenOrchestrationAnalyzer))] + [InlineData(typeof(OtherBindingsOrchestrationAnalyzer))] + [InlineData(typeof(OrchestrationTriggerBindingAnalyzer))] + [InlineData(typeof(DurableClientBindingAnalyzer))] + [InlineData(typeof(EntityTriggerBindingAnalyzer))] + [InlineData(typeof(MatchingInputOutputTypeActivityAnalyzer))] + [InlineData(typeof(FunctionNotFoundAnalyzer))] + public void AllDiagnosticDescriptorsHaveHelpLinkUri(Type analyzerType) + { + // Arrange + DiagnosticAnalyzer? analyzer = Activator.CreateInstance(analyzerType) as DiagnosticAnalyzer; + Assert.NotNull(analyzer); + + ImmutableArray diagnostics = analyzer!.SupportedDiagnostics; + Assert.NotEmpty(diagnostics); + + // Act & Assert + foreach (Microsoft.CodeAnalysis.DiagnosticDescriptor diagnostic in diagnostics) + { + Assert.NotNull(diagnostic.HelpLinkUri); + Assert.NotEmpty(diagnostic.HelpLinkUri); + Assert.StartsWith("https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#", diagnostic.HelpLinkUri); + Assert.EndsWith(diagnostic.Id, diagnostic.HelpLinkUri); + } + } +} From 5bcc25e3efa63428037beb306a1b6917e981dee3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Dec 2025 21:28:00 +0000 Subject: [PATCH 3/3] Update HelpLinkUri to use go.microsoft.com redirect link Co-authored-by: YunchuWang <12449837+YunchuWang@users.noreply.github.com> --- src/Analyzers/Activities/FunctionNotFoundAnalyzer.cs | 4 ++-- .../Activities/MatchingInputOutputTypeActivityAnalyzer.cs | 4 ++-- .../AttributeBinding/DurableClientBindingAnalyzer.cs | 2 +- .../AttributeBinding/EntityTriggerBindingAnalyzer.cs | 2 +- .../AttributeBinding/OrchestrationTriggerBindingAnalyzer.cs | 2 +- .../Orchestration/CancellationTokenOrchestrationAnalyzer.cs | 2 +- .../Orchestration/OtherBindingsOrchestrationAnalyzer.cs | 2 +- src/Analyzers/Orchestration/DateTimeOrchestrationAnalyzer.cs | 2 +- src/Analyzers/Orchestration/DelayOrchestrationAnalyzer.cs | 2 +- .../Orchestration/EnvironmentOrchestrationAnalyzer.cs | 2 +- src/Analyzers/Orchestration/GuidOrchestrationAnalyzer.cs | 2 +- src/Analyzers/Orchestration/IOOrchestrationAnalyzer.cs | 2 +- .../Orchestration/ThreadTaskOrchestrationAnalyzer.cs | 2 +- test/Analyzers.Tests/DiagnosticDescriptorTests.cs | 3 +-- 14 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/Analyzers/Activities/FunctionNotFoundAnalyzer.cs b/src/Analyzers/Activities/FunctionNotFoundAnalyzer.cs index 7c70215f..1bf920a4 100644 --- a/src/Analyzers/Activities/FunctionNotFoundAnalyzer.cs +++ b/src/Analyzers/Activities/FunctionNotFoundAnalyzer.cs @@ -40,7 +40,7 @@ public sealed class FunctionNotFoundAnalyzer : DiagnosticAnalyzer DiagnosticSeverity.Warning, customTags: [WellKnownDiagnosticTags.CompilationEnd], isEnabledByDefault: true, - helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{ActivityNotFoundDiagnosticId}"); + helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202"); static readonly DiagnosticDescriptor SubOrchestrationNotFoundRule = new( SubOrchestrationNotFoundDiagnosticId, @@ -50,7 +50,7 @@ public sealed class FunctionNotFoundAnalyzer : DiagnosticAnalyzer DiagnosticSeverity.Warning, customTags: [WellKnownDiagnosticTags.CompilationEnd], isEnabledByDefault: true, - helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{SubOrchestrationNotFoundDiagnosticId}"); + helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202"); /// public override ImmutableArray SupportedDiagnostics => [ActivityNotFoundRule, SubOrchestrationNotFoundRule]; diff --git a/src/Analyzers/Activities/MatchingInputOutputTypeActivityAnalyzer.cs b/src/Analyzers/Activities/MatchingInputOutputTypeActivityAnalyzer.cs index 01b3b9f4..63da59e7 100644 --- a/src/Analyzers/Activities/MatchingInputOutputTypeActivityAnalyzer.cs +++ b/src/Analyzers/Activities/MatchingInputOutputTypeActivityAnalyzer.cs @@ -41,7 +41,7 @@ public class MatchingInputOutputTypeActivityAnalyzer : DiagnosticAnalyzer DiagnosticSeverity.Warning, customTags: [WellKnownDiagnosticTags.CompilationEnd], isEnabledByDefault: true, - helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{InputArgumentTypeMismatchDiagnosticId}"); + helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202"); static readonly DiagnosticDescriptor OutputArgumentTypeMismatchRule = new( OutputArgumentTypeMismatchDiagnosticId, @@ -51,7 +51,7 @@ public class MatchingInputOutputTypeActivityAnalyzer : DiagnosticAnalyzer DiagnosticSeverity.Warning, customTags: [WellKnownDiagnosticTags.CompilationEnd], isEnabledByDefault: true, - helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{OutputArgumentTypeMismatchDiagnosticId}"); + helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202"); /// public override ImmutableArray SupportedDiagnostics => [InputArgumentTypeMismatchRule, OutputArgumentTypeMismatchRule]; diff --git a/src/Analyzers/Functions/AttributeBinding/DurableClientBindingAnalyzer.cs b/src/Analyzers/Functions/AttributeBinding/DurableClientBindingAnalyzer.cs index e6ec120c..27d96c58 100644 --- a/src/Analyzers/Functions/AttributeBinding/DurableClientBindingAnalyzer.cs +++ b/src/Analyzers/Functions/AttributeBinding/DurableClientBindingAnalyzer.cs @@ -28,7 +28,7 @@ public sealed class DurableClientBindingAnalyzer : MatchingAttributeBindingAnaly AnalyzersCategories.AttributeBinding, DiagnosticSeverity.Error, isEnabledByDefault: true, - helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{DiagnosticId}"); + helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202"); /// public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Functions/AttributeBinding/EntityTriggerBindingAnalyzer.cs b/src/Analyzers/Functions/AttributeBinding/EntityTriggerBindingAnalyzer.cs index 4b269ff5..59513a82 100644 --- a/src/Analyzers/Functions/AttributeBinding/EntityTriggerBindingAnalyzer.cs +++ b/src/Analyzers/Functions/AttributeBinding/EntityTriggerBindingAnalyzer.cs @@ -28,7 +28,7 @@ public sealed class EntityTriggerBindingAnalyzer : MatchingAttributeBindingAnaly AnalyzersCategories.AttributeBinding, DiagnosticSeverity.Error, isEnabledByDefault: true, - helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{DiagnosticId}"); + helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202"); /// public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Functions/AttributeBinding/OrchestrationTriggerBindingAnalyzer.cs b/src/Analyzers/Functions/AttributeBinding/OrchestrationTriggerBindingAnalyzer.cs index ebe8bf4b..603a92f6 100644 --- a/src/Analyzers/Functions/AttributeBinding/OrchestrationTriggerBindingAnalyzer.cs +++ b/src/Analyzers/Functions/AttributeBinding/OrchestrationTriggerBindingAnalyzer.cs @@ -28,7 +28,7 @@ public sealed class OrchestrationTriggerBindingAnalyzer : MatchingAttributeBindi AnalyzersCategories.AttributeBinding, DiagnosticSeverity.Error, isEnabledByDefault: true, - helpLinkUri: $"https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#{DiagnosticId}"); + helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202"); /// public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Functions/Orchestration/CancellationTokenOrchestrationAnalyzer.cs b/src/Analyzers/Functions/Orchestration/CancellationTokenOrchestrationAnalyzer.cs index 0780bae9..503a3005 100644 --- a/src/Analyzers/Functions/Orchestration/CancellationTokenOrchestrationAnalyzer.cs +++ b/src/Analyzers/Functions/Orchestration/CancellationTokenOrchestrationAnalyzer.cs @@ -31,7 +31,7 @@ public class CancellationTokenOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Functions/Orchestration/OtherBindingsOrchestrationAnalyzer.cs b/src/Analyzers/Functions/Orchestration/OtherBindingsOrchestrationAnalyzer.cs index 49d0d7c0..9e512af6 100644 --- a/src/Analyzers/Functions/Orchestration/OtherBindingsOrchestrationAnalyzer.cs +++ b/src/Analyzers/Functions/Orchestration/OtherBindingsOrchestrationAnalyzer.cs @@ -31,7 +31,7 @@ class OtherBindingsOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/DateTimeOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/DateTimeOrchestrationAnalyzer.cs index 9303c768..ccfc81ed 100644 --- a/src/Analyzers/Orchestration/DateTimeOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/DateTimeOrchestrationAnalyzer.cs @@ -30,7 +30,7 @@ public sealed class DateTimeOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/DelayOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/DelayOrchestrationAnalyzer.cs index ff6fc6da..5674db58 100644 --- a/src/Analyzers/Orchestration/DelayOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/DelayOrchestrationAnalyzer.cs @@ -30,7 +30,7 @@ public class DelayOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/EnvironmentOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/EnvironmentOrchestrationAnalyzer.cs index 256e3b8e..c64ea76b 100644 --- a/src/Analyzers/Orchestration/EnvironmentOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/EnvironmentOrchestrationAnalyzer.cs @@ -32,7 +32,7 @@ public sealed class EnvironmentOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/GuidOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/GuidOrchestrationAnalyzer.cs index 5000a71f..2ba936bf 100644 --- a/src/Analyzers/Orchestration/GuidOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/GuidOrchestrationAnalyzer.cs @@ -30,7 +30,7 @@ public sealed class GuidOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/IOOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/IOOrchestrationAnalyzer.cs index 0be3efb2..1f0c1e34 100644 --- a/src/Analyzers/Orchestration/IOOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/IOOrchestrationAnalyzer.cs @@ -31,7 +31,7 @@ public sealed class IOOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/src/Analyzers/Orchestration/ThreadTaskOrchestrationAnalyzer.cs b/src/Analyzers/Orchestration/ThreadTaskOrchestrationAnalyzer.cs index 4a8475a5..4fbed41b 100644 --- a/src/Analyzers/Orchestration/ThreadTaskOrchestrationAnalyzer.cs +++ b/src/Analyzers/Orchestration/ThreadTaskOrchestrationAnalyzer.cs @@ -30,7 +30,7 @@ public sealed class ThreadTaskOrchestrationAnalyzer : OrchestrationAnalyzer public override ImmutableArray SupportedDiagnostics => [Rule]; diff --git a/test/Analyzers.Tests/DiagnosticDescriptorTests.cs b/test/Analyzers.Tests/DiagnosticDescriptorTests.cs index d576aafa..0ef564ac 100644 --- a/test/Analyzers.Tests/DiagnosticDescriptorTests.cs +++ b/test/Analyzers.Tests/DiagnosticDescriptorTests.cs @@ -44,8 +44,7 @@ public void AllDiagnosticDescriptorsHaveHelpLinkUri(Type analyzerType) { Assert.NotNull(diagnostic.HelpLinkUri); Assert.NotEmpty(diagnostic.HelpLinkUri); - Assert.StartsWith("https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-code-constraints?tabs=csharp#", diagnostic.HelpLinkUri); - Assert.EndsWith(diagnostic.Id, diagnostic.HelpLinkUri); + Assert.Equal("https://go.microsoft.com/fwlink/?linkid=2346202", diagnostic.HelpLinkUri); } } }