Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/Analyzers/Activities/FunctionNotFoundAnalyzer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ public sealed class FunctionNotFoundAnalyzer : DiagnosticAnalyzer
AnalyzersCategories.Activity,
DiagnosticSeverity.Warning,
customTags: [WellKnownDiagnosticTags.CompilationEnd],
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

static readonly DiagnosticDescriptor SubOrchestrationNotFoundRule = new(
SubOrchestrationNotFoundDiagnosticId,
Expand All @@ -48,7 +49,8 @@ public sealed class FunctionNotFoundAnalyzer : DiagnosticAnalyzer
AnalyzersCategories.Orchestration,
DiagnosticSeverity.Warning,
customTags: [WellKnownDiagnosticTags.CompilationEnd],
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [ActivityNotFoundRule, SubOrchestrationNotFoundRule];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ public class MatchingInputOutputTypeActivityAnalyzer : DiagnosticAnalyzer
AnalyzersCategories.Activity,
DiagnosticSeverity.Warning,
customTags: [WellKnownDiagnosticTags.CompilationEnd],
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

static readonly DiagnosticDescriptor OutputArgumentTypeMismatchRule = new(
OutputArgumentTypeMismatchDiagnosticId,
Expand All @@ -49,7 +50,8 @@ public class MatchingInputOutputTypeActivityAnalyzer : DiagnosticAnalyzer
AnalyzersCategories.Activity,
DiagnosticSeverity.Warning,
customTags: [WellKnownDiagnosticTags.CompilationEnd],
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [InputArgumentTypeMismatchRule, OutputArgumentTypeMismatchRule];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ public sealed class DurableClientBindingAnalyzer : MatchingAttributeBindingAnaly
MessageFormat,
AnalyzersCategories.AttributeBinding,
DiagnosticSeverity.Error,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ public sealed class EntityTriggerBindingAnalyzer : MatchingAttributeBindingAnaly
MessageFormat,
AnalyzersCategories.AttributeBinding,
DiagnosticSeverity.Error,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ public sealed class OrchestrationTriggerBindingAnalyzer : MatchingAttributeBindi
MessageFormat,
AnalyzersCategories.AttributeBinding,
DiagnosticSeverity.Error,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ public class CancellationTokenOrchestrationAnalyzer : OrchestrationAnalyzer<Canc
MessageFormat,
AnalyzersCategories.Orchestration,
DiagnosticSeverity.Warning,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ class OtherBindingsOrchestrationAnalyzer : OrchestrationAnalyzer<OtherBindingsOr
MessageFormat,
AnalyzersCategories.Orchestration,
DiagnosticSeverity.Warning,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
3 changes: 2 additions & 1 deletion src/Analyzers/Orchestration/DateTimeOrchestrationAnalyzer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ public sealed class DateTimeOrchestrationAnalyzer : OrchestrationAnalyzer<DateTi
MessageFormat,
AnalyzersCategories.Orchestration,
DiagnosticSeverity.Warning,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
3 changes: 2 additions & 1 deletion src/Analyzers/Orchestration/DelayOrchestrationAnalyzer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ public class DelayOrchestrationAnalyzer : OrchestrationAnalyzer<DelayOrchestrati
MessageFormat,
AnalyzersCategories.Orchestration,
DiagnosticSeverity.Warning,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ public sealed class EnvironmentOrchestrationAnalyzer : OrchestrationAnalyzer<Env
MessageFormat,
AnalyzersCategories.Orchestration,
DiagnosticSeverity.Warning,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
3 changes: 2 additions & 1 deletion src/Analyzers/Orchestration/GuidOrchestrationAnalyzer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ public sealed class GuidOrchestrationAnalyzer : OrchestrationAnalyzer<GuidOrches
MessageFormat,
AnalyzersCategories.Orchestration,
DiagnosticSeverity.Warning,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
3 changes: 2 additions & 1 deletion src/Analyzers/Orchestration/IOOrchestrationAnalyzer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ public sealed class IOOrchestrationAnalyzer : OrchestrationAnalyzer<IOOrchestrat
MessageFormat,
AnalyzersCategories.Orchestration,
DiagnosticSeverity.Warning,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ public sealed class ThreadTaskOrchestrationAnalyzer : OrchestrationAnalyzer<Thre
MessageFormat,
AnalyzersCategories.Orchestration,
DiagnosticSeverity.Warning,
isEnabledByDefault: true);
isEnabledByDefault: true,
helpLinkUri: "https://go.microsoft.com/fwlink/?linkid=2346202");

/// <inheritdoc/>
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [Rule];
Expand Down
50 changes: 50 additions & 0 deletions test/Analyzers.Tests/DiagnosticDescriptorTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// 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;

/// <summary>
/// Tests to validate diagnostic descriptor properties.
/// </summary>
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<Microsoft.CodeAnalysis.DiagnosticDescriptor> diagnostics = analyzer!.SupportedDiagnostics;
Assert.NotEmpty(diagnostics);

// Act & Assert
foreach (Microsoft.CodeAnalysis.DiagnosticDescriptor diagnostic in diagnostics)
{
Assert.NotNull(diagnostic.HelpLinkUri);
Assert.NotEmpty(diagnostic.HelpLinkUri);
Assert.Equal("https://go.microsoft.com/fwlink/?linkid=2346202", diagnostic.HelpLinkUri);
}
}
}
Loading