docs: backfill XML documentation across 756 files
v2-ci / build (push) Failing after 1m43s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped

Adds <summary>, <param>, <typeparam>, and <inheritdoc/> tags to public
members surfaced by commentchecker — resolves 5,847 of 5,869 issues
(99.6%) across three /fixdocs passes.
This commit is contained in:
Joseph Doherty
2026-05-28 08:10:17 -04:00
parent f9fc7dd2e1
commit 64e3fbe035
756 changed files with 9876 additions and 96 deletions
@@ -36,6 +36,9 @@ internal static class AlarmRefBuilder
/// attribute's full reference (e.g. <c>"Tank1.Level.HiHi"</c>); the convention prefixes
/// each suffix to it.
/// </summary>
/// <param name="fullReference">The full reference of the alarm-bearing attribute.</param>
/// <param name="initialSeverity">The initial alarm severity level.</param>
/// <param name="initialDescription">The initial alarm description.</param>
public static AlarmConditionInfo Build(
string fullReference,
AlarmSeverity initialSeverity = AlarmSeverity.Medium,
@@ -18,6 +18,8 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Browse;
/// </remarks>
internal static class DataTypeMap
{
/// <summary>Maps an MXAccess data type ID to a driver data type.</summary>
/// <param name="mxDataType">The MXAccess data type ID.</param>
public static DriverDataType Map(int mxDataType) => mxDataType switch
{
0 => DriverDataType.Boolean,
@@ -46,6 +46,9 @@ public sealed class DeployWatcher : IDisposable
/// <inheritdoc cref="IRediscoverable.OnRediscoveryNeeded"/>
public event EventHandler<RediscoveryEventArgs>? OnRediscoveryNeeded;
/// <summary>Initializes a new deploy watcher with default backoff parameters.</summary>
/// <param name="source">The deploy watch source to subscribe to.</param>
/// <param name="logger">Optional logger instance; defaults to null logger.</param>
public DeployWatcher(IGalaxyDeployWatchSource source, ILogger? logger = null)
: this(source, logger, DefaultInitialBackoff, DefaultMaxBackoff, jitter: null)
{
@@ -55,6 +58,11 @@ public sealed class DeployWatcher : IDisposable
/// Test-only ctor lets tests collapse the retry backoff so a fault-injection
/// scenario doesn't sit in <see cref="Task.Delay(TimeSpan, CancellationToken)"/>.
/// </summary>
/// <param name="source">The deploy watch source to subscribe to.</param>
/// <param name="logger">Optional logger instance.</param>
/// <param name="initialBackoff">Initial backoff duration for retry.</param>
/// <param name="maxBackoff">Maximum backoff duration for retry.</param>
/// <param name="jitter">Optional function to apply jitter to backoff intervals.</param>
internal DeployWatcher(
IGalaxyDeployWatchSource source,
ILogger? logger,
@@ -74,6 +82,8 @@ public sealed class DeployWatcher : IDisposable
/// has been scheduled — the loop itself runs until <see cref="StopAsync"/> or
/// the supplied <paramref name="cancellationToken"/> is signaled.
/// </summary>
/// <param name="cancellationToken">Token to signal cancellation of the watch loop.</param>
/// <returns>A task that completes when the loop has been scheduled.</returns>
public Task StartAsync(CancellationToken cancellationToken)
{
if (Interlocked.Exchange(ref _started, 1) != 0)
@@ -112,6 +122,7 @@ public sealed class DeployWatcher : IDisposable
}
}
/// <summary>Disposes the watcher and stops the background loop.</summary>
public void Dispose()
{
if (_loopTask is null) return;
@@ -26,6 +26,8 @@ public sealed class GalaxyDiscoverer
{
private readonly IGalaxyHierarchySource _source;
/// <summary>Initializes a new GalaxyDiscoverer with the specified hierarchy source.</summary>
/// <param name="source">The Galaxy hierarchy source to use for discovery.</param>
public GalaxyDiscoverer(IGalaxyHierarchySource source)
{
_source = source ?? throw new ArgumentNullException(nameof(source));
@@ -35,6 +37,8 @@ public sealed class GalaxyDiscoverer
/// Drive the supplied builder with one folder + N variables per Galaxy object the
/// gateway returns. Idempotent — caller can re-invoke after a redeploy event.
/// </summary>
/// <param name="builder">The address space builder to populate with discovery results.</param>
/// <param name="cancellationToken">The cancellation token for the operation.</param>
public async Task DiscoverAsync(IAddressSpaceBuilder builder, CancellationToken cancellationToken)
{
ArgumentNullException.ThrowIfNull(builder);
@@ -15,11 +15,17 @@ public sealed class GatewayGalaxyDeployWatchSource : IGalaxyDeployWatchSource
{
private readonly GalaxyRepositoryClient _client;
/// <summary>Initializes a new instance of the GatewayGalaxyDeployWatchSource class.</summary>
/// <param name="client">The Galaxy repository client.</param>
public GatewayGalaxyDeployWatchSource(GalaxyRepositoryClient client)
{
_client = client ?? throw new ArgumentNullException(nameof(client));
}
/// <summary>Watches for deploy events asynchronously.</summary>
/// <param name="lastSeenDeployTime">The last deploy time that was observed.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>An async enumerable of deploy events.</returns>
public IAsyncEnumerable<DeployEvent> WatchAsync(
DateTimeOffset? lastSeenDeployTime, CancellationToken cancellationToken)
=> _client.WatchDeployEventsAsync(lastSeenDeployTime, cancellationToken);
@@ -11,11 +11,19 @@ public sealed class GatewayGalaxyHierarchySource : IGalaxyHierarchySource
{
private readonly GalaxyRepositoryClient _client;
/// <summary>
/// Initializes a new instance of the <see cref="GatewayGalaxyHierarchySource"/> class.
/// </summary>
/// <param name="client">The gateway's Galaxy repository client for discovering the object hierarchy.</param>
public GatewayGalaxyHierarchySource(GalaxyRepositoryClient client)
{
_client = client ?? throw new ArgumentNullException(nameof(client));
}
/// <summary>
/// Discovers the Galaxy object hierarchy asynchronously via the gateway.
/// </summary>
/// <param name="cancellationToken">Cancellation token for the operation.</param>
public Task<IReadOnlyList<GalaxyObject>> GetHierarchyAsync(CancellationToken cancellationToken)
=> _client.DiscoverHierarchyAsync(cancellationToken);
}
@@ -19,6 +19,8 @@ public interface IGalaxyDeployWatchSource
/// <see cref="DeployWatcher"/> still suppresses the first event it observes locally
/// so a transport reconnect doesn't re-fire on identical state.
/// </summary>
/// <param name="lastSeenDeployTime">The last seen deploy time, or null to receive a bootstrap event.</param>
/// <param name="cancellationToken">The cancellation token.</param>
IAsyncEnumerable<DeployEvent> WatchAsync(
DateTimeOffset? lastSeenDeployTime, CancellationToken cancellationToken);
}
@@ -15,5 +15,6 @@ public interface IGalaxyHierarchySource
/// internally; this interface deliberately exposes only the post-paging shape so
/// callers don't reimplement paging.
/// </summary>
/// <param name="cancellationToken">Cancellation token for the operation.</param>
Task<IReadOnlyList<GalaxyObject>> GetHierarchyAsync(CancellationToken cancellationToken);
}
@@ -11,6 +11,9 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Browse;
/// </summary>
internal static class SecurityMap
{
/// <summary>Maps a Galaxy security_classification code to a SecurityClassification enum.</summary>
/// <param name="mxSec">The Galaxy security classification code.</param>
/// <returns>The corresponding SecurityClassification.</returns>
public static SecurityClassification Map(int mxSec) => mxSec switch
{
0 => SecurityClassification.FreeAccess,
@@ -11,6 +11,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Browse;
/// </summary>
internal sealed class TracedGalaxyHierarchySource(IGalaxyHierarchySource inner, string clientName) : IGalaxyHierarchySource
{
/// <inheritdoc />
public async Task<IReadOnlyList<GalaxyObject>> GetHierarchyAsync(CancellationToken cancellationToken)
{
using var activity = GalaxyTelemetry.ActivitySource.StartActivity("galaxy.get_hierarchy");