Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ public static void Emit(SourceProductionContext context, CompositionSpec? compos
var writer = new SourceWriter();
writer.PreAmble();
writer.WithOpenNamespace(composition.RootNamespace);
writer.WriteLine("public static class NServiceBusFunctionsComposition");
writer.WithGeneratedCodeAttribute();
writer.WriteLine("internal static class NServiceBusFunctionsComposition");

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made this one internal

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the fence about this one but I also don't have a good counter argument for not making it internal

writer.WriteLine("{");
writer.Indentation++;
writer.WriteLine("extension(global::Microsoft.Azure.Functions.Worker.Builder.FunctionsApplicationBuilder builder)");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public static void Emit(SourceProductionContext spc, ImmutableArray<FunctionSpec
static void EmitMethodBodies(SourceProductionContext spc, ImmutableArray<FunctionSpec> functions)
{
var writer = new SourceWriter();
writer.WriteLine("// <auto-generated/>");
writer.PreAmble();
writer.WriteLine("using Microsoft.Extensions.DependencyInjection;");

var groups = functions
Expand Down Expand Up @@ -52,6 +52,7 @@ static void EmitMethodBodies(SourceProductionContext spc, ImmutableArray<Functio

first = false;

writer.WithGeneratedCodeAttribute();
writer.WriteLine($"{func.Accessibility} partial {func.ReturnType} {func.MethodName}(");
writer.WriteLine($" {func.ParameterList})");
writer.WriteLine("{");
Expand All @@ -75,15 +76,20 @@ static void EmitMethodBodies(SourceProductionContext spc, ImmutableArray<Functio
static void EmitRegistration(SourceProductionContext spc, ImmutableArray<FunctionSpec> functions, string assemblyClassName)
{
var writer = new SourceWriter();
writer.WriteLine("// <auto-generated/>");
writer.WriteLine("namespace NServiceBus.Generated");
writer.WriteLine("{");
writer.Indentation++;
writer.PreAmble();
writer.WithOpenNamespace("NServiceBus.Generated");
writer.WriteLine("/// <summary>");
writer.WriteLine("/// Registrations for NServiceBus functions in this assembly.");
writer.WriteLine("/// </summary>");
writer.WriteLine("[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]");
writer.WriteLine("[global::NServiceBus.AutoGeneratedFunctionRegistrationsAttribute]");
writer.WithGeneratedCodeAttribute();
writer.WriteLine($"public static class {assemblyClassName}");
writer.WriteLine("{");
writer.Indentation++;
writer.WriteLine("/// <summary>");
writer.WriteLine("/// Gets function manifests for NServiceBus functions in this assembly.");
writer.WriteLine("/// </summary>");
writer.WriteLine("public static global::System.Collections.Generic.IEnumerable<global::NServiceBus.FunctionManifest>");
writer.WriteLine(" GetFunctionManifests()");
writer.WriteLine("{");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,31 @@
namespace NServiceBus.AzureFunctions.Analyzer.Utility;

using System.Reflection;

static class SourceWriterExtensions
{
extension(SourceWriter writer)
{
public SourceWriter PreAmble()
{
writer.WriteLine("// <auto-generated/>");
writer.WriteLine("#nullable enable");
writer.WriteLine();
writer.WriteLine("""
// <auto-generated/>

#nullable enable annotations
#nullable disable warnings

// Suppress warnings about [Obsolete] usage in generated code.
#pragma warning disable CS0612, CS0618

""");
return writer;
}

public SourceWriter WithGeneratedCodeAttribute() => writer.WithGeneratedCodeAttribute(typeof(SourceWriter).Assembly.GetName());

public SourceWriter WithGeneratedCodeAttribute(AssemblyName assemblyName)
{
writer.WriteLine($"""[global::System.CodeDom.Compiler.GeneratedCodeAttribute("{assemblyName.Name}", "{assemblyName.Version!.ToString(3)}")]""");
return writer;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,17 @@ public partial class Functions

// == NServiceBus.AzureFunctions.Analyzer/NServiceBus.AzureFunctions.Analyzer.FunctionCompositionGenerator/Composition.cs ==
// <auto-generated/>
#nullable enable

#nullable enable annotations
#nullable disable warnings

// Suppress warnings about [Obsolete] usage in generated code.
#pragma warning disable CS0612, CS0618

namespace My.FunctionApp
{
public static class NServiceBusFunctionsComposition
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("NService.Core.Analyzer.Tests", "1.0.0")]
internal static class NServiceBusFunctionsComposition
{
extension(global::Microsoft.Azure.Functions.Worker.Builder.FunctionsApplicationBuilder builder)
{
Expand All @@ -53,12 +59,20 @@ namespace My.FunctionApp

// == NServiceBus.AzureFunctions.Analyzer/NServiceBus.AzureFunctions.Analyzer.FunctionEndpointGenerator/FunctionMethodBodies.g.cs ==
// <auto-generated/>

#nullable enable annotations
#nullable disable warnings

// Suppress warnings about [Obsolete] usage in generated code.
#pragma warning disable CS0612, CS0618

using Microsoft.Extensions.DependencyInjection;

namespace Demo
{
public partial class Functions
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("NService.Core.Analyzer.Tests", "1.0.0")]
public partial global::System.Threading.Tasks.Task Run(
global::Azure.Messaging.ServiceBus.ServiceBusReceivedMessage message,
global::Microsoft.Azure.Functions.Worker.ServiceBusMessageActions messageActions,
Expand All @@ -74,12 +88,26 @@ namespace Demo

// == NServiceBus.AzureFunctions.Analyzer/NServiceBus.AzureFunctions.Analyzer.FunctionEndpointGenerator/FunctionRegistration.g.cs ==
// <auto-generated/>

#nullable enable annotations
#nullable disable warnings

// Suppress warnings about [Obsolete] usage in generated code.
#pragma warning disable CS0612, CS0618

namespace NServiceBus.Generated
{
/// <summary>
/// Registrations for NServiceBus functions in this assembly.
/// </summary>
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
[global::NServiceBus.AutoGeneratedFunctionRegistrationsAttribute]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("NService.Core.Analyzer.Tests", "1.0.0")]
public static class GeneratedFunctionRegistrations_GeneratesProjectComposition_4d91953014478208
{
/// <summary>
/// Gets function manifests for NServiceBus functions in this assembly.
/// </summary>
public static global::System.Collections.Generic.IEnumerable<global::NServiceBus.FunctionManifest>
GetFunctionManifests()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,20 @@ GlobalUsings.cs(6,1): hidden CS8019: Unnecessary using directive.

// == NServiceBus.AzureFunctions.Analyzers.Tests/NServiceBus.AzureFunctions.Analyzers.Tests.LenientNoMessageActionsGenerator/FunctionMethodBodies.g.cs ==
// <auto-generated/>

#nullable enable annotations
#nullable disable warnings

// Suppress warnings about [Obsolete] usage in generated code.
#pragma warning disable CS0612, CS0618

using Microsoft.Extensions.DependencyInjection;

namespace Demo.Testing
{
public partial class Functions
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("NService.Core.Analyzer.Tests", "1.0.0")]
public partial global::System.Threading.Tasks.Task Run(
string message,
global::Demo.Testing.SomeCustomParameter extraParam,
Expand All @@ -26,12 +34,26 @@ namespace Demo.Testing

// == NServiceBus.AzureFunctions.Analyzers.Tests/NServiceBus.AzureFunctions.Analyzers.Tests.LenientNoMessageActionsGenerator/FunctionRegistration.g.cs ==
// <auto-generated/>

#nullable enable annotations
#nullable disable warnings

// Suppress warnings about [Obsolete] usage in generated code.
#pragma warning disable CS0612, CS0618

namespace NServiceBus.Generated
{
/// <summary>
/// Registrations for NServiceBus functions in this assembly.
/// </summary>
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
[global::NServiceBus.AutoGeneratedFunctionRegistrationsAttribute]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("NService.Core.Analyzer.Tests", "1.0.0")]
public static class GeneratedFunctionRegistrations_GeneratesEndpointWithExtraUnrecognizedParametersWhenShapeAllowsAdditionalParameters_eb6e20d89fd29573
{
/// <summary>
/// Gets function manifests for NServiceBus functions in this assembly.
/// </summary>
public static global::System.Collections.Generic.IEnumerable<global::NServiceBus.FunctionManifest>
GetFunctionManifests()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,20 @@ GlobalUsings.cs(6,1): hidden CS8019: Unnecessary using directive.

// == NServiceBus.AzureFunctions.Analyzers.Tests/NServiceBus.AzureFunctions.Analyzers.Tests.NoMessageActionsGenerator/FunctionMethodBodies.g.cs ==
// <auto-generated/>

#nullable enable annotations
#nullable disable warnings

// Suppress warnings about [Obsolete] usage in generated code.
#pragma warning disable CS0612, CS0618

using Microsoft.Extensions.DependencyInjection;

namespace Demo.Testing
{
public partial class Functions
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("NService.Core.Analyzer.Tests", "1.0.0")]
public partial global::System.Threading.Tasks.Task Run(
string message,
global::Microsoft.Azure.Functions.Worker.FunctionContext context,
Expand All @@ -25,12 +33,26 @@ namespace Demo.Testing

// == NServiceBus.AzureFunctions.Analyzers.Tests/NServiceBus.AzureFunctions.Analyzers.Tests.NoMessageActionsGenerator/FunctionRegistration.g.cs ==
// <auto-generated/>

#nullable enable annotations
#nullable disable warnings

// Suppress warnings about [Obsolete] usage in generated code.
#pragma warning disable CS0612, CS0618

namespace NServiceBus.Generated
{
/// <summary>
/// Registrations for NServiceBus functions in this assembly.
/// </summary>
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
[global::NServiceBus.AutoGeneratedFunctionRegistrationsAttribute]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("NService.Core.Analyzer.Tests", "1.0.0")]
public static class GeneratedFunctionRegistrations_GeneratesEndpointWithoutMessageActions_18234b41cd275b7a
{
/// <summary>
/// Gets function manifests for NServiceBus functions in this assembly.
/// </summary>
public static global::System.Collections.Generic.IEnumerable<global::NServiceBus.FunctionManifest>
GetFunctionManifests()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
// == NServiceBus.AzureFunctions.Analyzer/NServiceBus.AzureFunctions.Analyzer.FunctionEndpointGenerator/FunctionMethodBodies.g.cs ==
// <auto-generated/>

#nullable enable annotations
#nullable disable warnings

// Suppress warnings about [Obsolete] usage in generated code.
#pragma warning disable CS0612, CS0618

using Microsoft.Extensions.DependencyInjection;

namespace Demo
{
public partial class Functions
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("NService.Core.Analyzer.Tests", "1.0.0")]
public partial global::System.Threading.Tasks.Task Run(
global::Azure.Messaging.ServiceBus.ServiceBusReceivedMessage message,
global::Microsoft.Azure.Functions.Worker.ServiceBusMessageActions messageActions,
Expand All @@ -21,12 +29,26 @@ namespace Demo

// == NServiceBus.AzureFunctions.Analyzer/NServiceBus.AzureFunctions.Analyzer.FunctionEndpointGenerator/FunctionRegistration.g.cs ==
// <auto-generated/>

#nullable enable annotations
#nullable disable warnings

// Suppress warnings about [Obsolete] usage in generated code.
#pragma warning disable CS0612, CS0618

namespace NServiceBus.Generated
{
/// <summary>
/// Registrations for NServiceBus functions in this assembly.
/// </summary>
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
[global::NServiceBus.AutoGeneratedFunctionRegistrationsAttribute]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("NService.Core.Analyzer.Tests", "1.0.0")]
public static class GeneratedFunctionRegistrations_GeneratesFunctionEndpoint_64aca0f8d2adde54
{
/// <summary>
/// Gets function manifests for NServiceBus functions in this assembly.
/// </summary>
public static global::System.Collections.Generic.IEnumerable<global::NServiceBus.FunctionManifest>
GetFunctionManifests()
{
Expand Down
Loading