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
@@ -8,6 +8,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.AbCip.Tests;
[Trait("Category", "Unit")]
public sealed class AbCipUdtMemberTests
{
/// <summary>Verifies that UDT with declared members expands to individual member variables.</summary>
[Fact]
public async Task UDT_with_declared_members_fans_out_to_member_variables()
{
@@ -46,6 +47,7 @@ public sealed class AbCipUdtMemberTests
.ShouldBeTrue();
}
/// <summary>Verifies that UDT members can be read via synthesised full reference paths.</summary>
[Fact]
public async Task UDT_members_resolvable_for_read_via_synthesised_full_reference()
{
@@ -81,6 +83,7 @@ public sealed class AbCipUdtMemberTests
snapshots[1].StatusCode.ShouldBe(AbCipStatusMapper.Good);
}
/// <summary>Verifies that UDT member writes route through synthesised tag paths.</summary>
[Fact]
public async Task UDT_member_write_routes_through_synthesised_tagpath()
{
@@ -106,6 +109,7 @@ public sealed class AbCipUdtMemberTests
factory.Tags["Motor1.SetPoint"].Value.ShouldBe(42.5f);
}
/// <summary>Verifies that UDT member read/write operations respect the Writable flag.</summary>
[Fact]
public async Task UDT_member_read_write_honours_member_Writable_flag()
{
@@ -130,6 +134,7 @@ public sealed class AbCipUdtMemberTests
results.Single().StatusCode.ShouldBe(AbCipStatusMapper.BadNotWritable);
}
/// <summary>Verifies that structure tags without declared members appear as single variables.</summary>
[Fact]
public async Task Structure_tag_without_members_is_emitted_as_single_variable()
{
@@ -150,6 +155,7 @@ public sealed class AbCipUdtMemberTests
builder.Folders.ShouldNotContain(f => f.BrowseName == "OpaqueUdt");
}
/// <summary>Verifies that empty member lists are treated the same as null.</summary>
[Fact]
public async Task Empty_Members_list_is_treated_like_null()
{
@@ -167,6 +173,7 @@ public sealed class AbCipUdtMemberTests
builder.Variables.ShouldContain(v => v.BrowseName == "EmptyUdt");
}
/// <summary>Verifies that UDT members and flat tags can coexist in the address space.</summary>
[Fact]
public async Task UDT_members_mixed_with_flat_tags_coexist()
{
@@ -194,24 +201,48 @@ public sealed class AbCipUdtMemberTests
// ---- helpers ----
/// <summary>Recording builder for testing address space construction.</summary>
private sealed class RecordingBuilder : IAddressSpaceBuilder
{
/// <summary>Gets the collected folders.</summary>
public List<(string BrowseName, string DisplayName)> Folders { get; } = new();
/// <summary>Gets the collected variables.</summary>
public List<(string BrowseName, DriverAttributeInfo Info)> Variables { get; } = new();
/// <summary>Records a folder in the address space.</summary>
/// <param name="browseName">The browse name of the folder.</param>
/// <param name="displayName">The display name of the folder.</param>
public IAddressSpaceBuilder Folder(string browseName, string displayName)
{ Folders.Add((browseName, displayName)); return this; }
/// <summary>Records a variable in the address space.</summary>
/// <param name="browseName">The browse name of the variable.</param>
/// <param name="displayName">The display name of the variable.</param>
/// <param name="info">The driver attribute information for the variable.</param>
public IVariableHandle Variable(string browseName, string displayName, DriverAttributeInfo info)
{ Variables.Add((browseName, info)); return new Handle(info.FullName); }
/// <summary>Records a property (stub implementation for testing).</summary>
/// <param name="_">The property name (unused in this stub).</param>
/// <param name="__">The property data type (unused in this stub).</param>
/// <param name="___">The property value (unused in this stub).</param>
public void AddProperty(string _, DriverDataType __, object? ___) { }
/// <summary>Variable handle implementation for testing.</summary>
private sealed class Handle(string fullRef) : IVariableHandle
{
/// <summary>Gets the full reference path.</summary>
public string FullReference => fullRef;
/// <summary>Marks this handle as an alarm condition.</summary>
/// <param name="info">The alarm condition information.</param>
public IAlarmConditionSink MarkAsAlarmCondition(AlarmConditionInfo info) => new NullSink();
}
private sealed class NullSink : IAlarmConditionSink { public void OnTransition(AlarmEventArgs args) { } }
/// <summary>Null alarm condition sink for testing.</summary>
private sealed class NullSink : IAlarmConditionSink
{
/// <summary>Handles alarm transitions (stub).</summary>
/// <param name="args">The alarm event arguments.</param>
public void OnTransition(AlarmEventArgs args) { }
}
}
}