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
@@ -22,6 +22,7 @@ public sealed class AbLegacyReadSmokeTests(AbLegacyServerFixture sim)
// filters to that profile alone so the suite matches the running container. Unset
// (the default for real-hardware runs) parameterises across every family the driver
// supports.
/// <summary>Gets the available server profiles based on compose configuration.</summary>
public static IEnumerable<object[]> Profiles
{
get
@@ -34,6 +35,8 @@ public sealed class AbLegacyReadSmokeTests(AbLegacyServerFixture sim)
}
}
/// <summary>Verifies that the driver reads seeded N file from the AB server via PCCC.</summary>
/// <param name="profile">The AB Legacy server profile describing the fixture endpoint.</param>
[AbLegacyTheory]
[MemberData(nameof(Profiles))]
public async Task Driver_reads_seeded_N_file_from_ab_server_PCCC(AbLegacyServerProfile profile)
@@ -69,6 +72,7 @@ public sealed class AbLegacyReadSmokeTests(AbLegacyServerFixture sim)
drv.GetHealth().State.ShouldBe(DriverState.Healthy);
}
/// <summary>Verifies that SLC500 write-then-read round trip succeeds on N7 scratch register.</summary>
[AbLegacyFact]
public async Task Slc500_write_then_read_round_trip_on_N7_scratch_register()
{
@@ -53,15 +53,20 @@ public sealed class AbLegacyServerFixture : IAsyncLifetime
// 10.100.0.35 = the shared Docker host (see CLAUDE.md "Docker Workflow"). Migrated
// off this VM's 127.0.0.1 on 2026-04-28 alongside the rest of the Docker-host move.
// Override via AB_LEGACY_ENDPOINT to point at a real PLC or a locally-running container.
/// <summary>Gets the server host address.</summary>
public string Host { get; } = "10.100.0.35";
/// <summary>Gets the server TCP port.</summary>
public int Port { get; } = DefaultPort;
/// <summary>CIP routing path portion of the device URI (after the <c>/</c> separator).
/// May be empty when targeting real hardware; non-empty against ab_server.</summary>
public string CipPath { get; } = DefaultCipPath;
/// <summary>Gets the skip reason if the server is unavailable, or null if available.</summary>
public string? SkipReason { get; }
/// <summary>Initializes the AB Legacy server fixture by reading environment overrides.</summary>
public AbLegacyServerFixture()
{
if (Environment.GetEnvironmentVariable(EndpointEnvVar) is { Length: > 0 } raw)
@@ -79,7 +84,10 @@ public sealed class AbLegacyServerFixture : IAsyncLifetime
SkipReason = ResolveSkipReason(Host, Port);
}
/// <summary>Initializes the fixture asynchronously.</summary>
public ValueTask InitializeAsync() => ValueTask.CompletedTask;
/// <summary>Disposes the fixture asynchronously.</summary>
public ValueTask DisposeAsync() => ValueTask.CompletedTask;
/// <summary>
@@ -155,9 +163,12 @@ public static class KnownProfiles
ComposeProfile: "plc5",
Notes: "PLC-5 family. ab_server PLC/5 mode covers N/F/B; per-family quirks on ST / timer file layouts unit-tested only.");
/// <summary>Gets all known profiles.</summary>
public static IReadOnlyList<AbLegacyServerProfile> All { get; } =
[Slc500, MicroLogix, Plc5];
/// <summary>Gets the profile for the specified PLC family.</summary>
/// <param name="family">The PLC family.</param>
public static AbLegacyServerProfile ForFamily(AbLegacyPlcFamily family) =>
All.FirstOrDefault(p => p.Family == family)
?? throw new ArgumentOutOfRangeException(nameof(family), family, "No integration profile for this family.");
@@ -175,6 +186,7 @@ public sealed class AbLegacyServerCollection : Xunit.ICollectionFixture<AbLegacy
/// </summary>
public sealed class AbLegacyFactAttribute : FactAttribute
{
/// <summary>Initializes the attribute, skipping the test if the server is unavailable.</summary>
public AbLegacyFactAttribute()
{
if (!AbLegacyServerFixture.IsServerAvailable())
@@ -189,6 +201,7 @@ public sealed class AbLegacyFactAttribute : FactAttribute
/// </summary>
public sealed class AbLegacyTheoryAttribute : TheoryAttribute
{
/// <summary>Initializes the attribute, skipping the test if the server is unavailable.</summary>
public AbLegacyTheoryAttribute()
{
if (!AbLegacyServerFixture.IsServerAvailable())