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);
}
}
}