Skip to content

Commit 093f4f4

Browse files
JaJaJaJa
authored andcommitted
fix: HostFactory 參數封裝外部化、SonarCloud 程式碼品質修復、靜態方法優化
1. HostFactory 參數封裝外部化 - HostFactory.cs:CreateHost 方法簽章簡化,改為接收單一 HostConfigBundle 參數(原本在方法內部建立) - HostFactory.cs:HostConfigBundle record 從 private 改為 internal,允許外部建立 - Program.cs:在呼叫 HostFactory.CreateHost 前建立 HostConfigBundle 實例,提升配置組合的靈活性 2. SonarCloud 程式碼品質修復 - ExtensionManager.cs:processCleanupManager?.Dispose() 加入 #pragma warning disable/restore S2589 抑制「Boolean expressions should not be gratuitous」警告(條件式 Dispose 為防禦性程式碼) 3. 靜態方法優化 - ExtensionSessionBridge.cs:CreateMetadata 方法改為 static(不使用實例成員,符合 CA1822 建議)
1 parent db47b4f commit 093f4f4

File tree

4 files changed

+11
-25
lines changed

4 files changed

+11
-25
lines changed

Core/Extension/ExtensionManager.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,9 @@ public ExtensionManager(
170170
{
171171
fileTransport?.Dispose();
172172
mmapTransport?.Dispose();
173+
#pragma warning disable S2589 // Boolean expressions should not be gratuitous
173174
processCleanupManager?.Dispose();
175+
#pragma warning restore S2589
174176
throw;
175177
}
176178
}

Core/Extension/ExtensionSessionBridge.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1374,7 +1374,7 @@ private void EnsureCacheCapacity()
13741374
/// <param name="session">The document session.</param>
13751375
/// <param name="outputFormat">The output format captured at the time of conversion.</param>
13761376
/// <returns>A new <see cref="ExtensionMetadata" /> instance.</returns>
1377-
private ExtensionMetadata CreateMetadata(DocumentSession session, string outputFormat)
1377+
private static ExtensionMetadata CreateMetadata(DocumentSession session, string outputFormat)
13781378
{
13791379
return new ExtensionMetadata
13801380
{

Core/HostFactory.cs

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,34 +39,17 @@ internal static class HostFactory
3939
/// Creates an appropriate host based on the transport configuration.
4040
/// </summary>
4141
/// <param name="args">Command line arguments.</param>
42-
/// <param name="config">Server configuration.</param>
43-
/// <param name="transportConfig">Transport configuration.</param>
44-
/// <param name="sessionConfig">Session configuration.</param>
45-
/// <param name="authConfig">Authentication configuration.</param>
46-
/// <param name="trackingConfig">Tracking configuration.</param>
47-
/// <param name="originConfig">Origin validation configuration.</param>
48-
/// <param name="extensionConfig">Extension configuration.</param>
42+
/// <param name="bundle">Configuration bundle containing all host settings.</param>
4943
/// <returns>The configured host instance.</returns>
5044
/// <exception cref="ArgumentException">Thrown when transport mode is unknown.</exception>
51-
public static IHost CreateHost(
52-
string[] args,
53-
ServerConfig config,
54-
TransportConfig transportConfig,
55-
SessionConfig sessionConfig,
56-
AuthConfig authConfig,
57-
TrackingConfig trackingConfig,
58-
OriginValidationConfig originConfig,
59-
ExtensionConfig extensionConfig)
45+
public static IHost CreateHost(string[] args, HostConfigBundle bundle)
6046
{
61-
var bundle = new HostConfigBundle(config, transportConfig, sessionConfig, authConfig,
62-
trackingConfig, originConfig, extensionConfig);
63-
64-
return transportConfig.Mode switch
47+
return bundle.TransportConfig.Mode switch
6548
{
6649
TransportMode.Stdio => CreateStdioHost(args, bundle),
6750
TransportMode.Http => CreateHttpHost(args, bundle),
6851
TransportMode.WebSocket => CreateWebSocketHost(args, bundle),
69-
_ => throw new ArgumentException($"Unknown transport mode: {transportConfig.Mode}")
52+
_ => throw new ArgumentException($"Unknown transport mode: {bundle.TransportConfig.Mode}")
7053
};
7154
}
7255

@@ -425,7 +408,7 @@ private static void ConfigureServerOptions(McpServerOptions options)
425408
/// <param name="TrackingConfig">Tracking configuration.</param>
426409
/// <param name="OriginConfig">Origin validation configuration.</param>
427410
/// <param name="ExtensionConfig">Extension configuration.</param>
428-
private sealed record HostConfigBundle(
411+
internal sealed record HostConfigBundle(
429412
ServerConfig ServerConfig,
430413
TransportConfig TransportConfig,
431414
SessionConfig SessionConfig,

Program.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@
5252

5353
try
5454
{
55-
var host = HostFactory.CreateHost(args, config, transportConfig, sessionConfig, authConfig, trackingConfig,
56-
originConfig, extensionConfig);
55+
var bundle = new HostFactory.HostConfigBundle(config, transportConfig, sessionConfig, authConfig,
56+
trackingConfig, originConfig, extensionConfig);
57+
var host = HostFactory.CreateHost(args, bundle);
5758
await host.RunAsync();
5859
}
5960
catch (Exception ex)

0 commit comments

Comments
 (0)