docs: complete XML doc comments via fixdocs (2757 to 131 findings)

Add missing <returns>/<param>/<summary>/<typeparam> tags and clean up
misused inheritdoc across 481 files so the documented API surface is
complete. Documentation-only (zero code lines changed). The 131 remaining
findings are inheritdoc-style warnings deliberately left to preserve
hand-written implementation rationale (plan-decision notes, race-condition
explanations).
This commit is contained in:
Joseph Doherty
2026-06-03 12:34:34 -04:00
parent c6d9b20d9f
commit bd6c0b4d3d
481 changed files with 2550 additions and 1668 deletions
@@ -10,6 +10,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.AbCip.Tests;
public sealed class AbCipDriverDiscoveryTests
{
/// <summary>Verifies that pre-declared tags emit as variables under device folder.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task PreDeclared_tags_emit_as_variables_under_device_folder()
{
@@ -35,6 +36,7 @@ public sealed class AbCipDriverDiscoveryTests
}
/// <summary>Verifies that device folder display name falls back to host address when not provided.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task Device_folder_displayname_falls_back_to_host_address()
{
@@ -52,6 +54,7 @@ public sealed class AbCipDriverDiscoveryTests
}
/// <summary>Verifies that pre-declared system tags are filtered out.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task PreDeclared_system_tags_are_filtered_out()
{
@@ -74,6 +77,7 @@ public sealed class AbCipDriverDiscoveryTests
}
/// <summary>Verifies that tags for mismatched devices are ignored.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task Tags_for_mismatched_device_are_ignored()
{
@@ -91,6 +95,7 @@ public sealed class AbCipDriverDiscoveryTests
}
/// <summary>Verifies that controller enumeration adds tags under Discovered folder.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task Controller_enumeration_adds_tags_under_Discovered_folder()
{
@@ -114,6 +119,7 @@ public sealed class AbCipDriverDiscoveryTests
}
/// <summary>Verifies that controller enumeration honours system tag hint and filter.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task Controller_enumeration_honours_system_tag_hint_and_filter()
{
@@ -136,6 +142,7 @@ public sealed class AbCipDriverDiscoveryTests
}
/// <summary>Verifies that controller enumeration ReadOnly flag surfaces ViewOnly classification.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task Controller_enumeration_ReadOnly_surfaces_ViewOnly_classification()
{
@@ -156,6 +163,7 @@ public sealed class AbCipDriverDiscoveryTests
}
/// <summary>Verifies that controller enumeration receives correct device parameters.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task Controller_enumeration_receives_correct_device_params()
{
@@ -236,6 +244,7 @@ public sealed class AbCipDriverDiscoveryTests
}
/// <summary>Verifies that FlushOptionalCachesAsync clears the template cache.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task FlushOptionalCachesAsync_clears_template_cache()
{
@@ -257,39 +266,29 @@ public sealed class AbCipDriverDiscoveryTests
/// <summary>Gets the list of recorded variables.</summary>
public List<(string BrowseName, DriverAttributeInfo Info)> Variables { get; } = new();
/// <summary>Records a folder node.</summary>
/// <param name="browseName">The browse name of the folder.</param>
/// <param name="displayName">The display name of the folder.</param>
/// <inheritdoc />
public IAddressSpaceBuilder Folder(string browseName, string displayName)
{ Folders.Add((browseName, displayName)); return this; }
/// <summary>Records a variable node.</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 attribute information for the variable.</param>
/// <inheritdoc />
public IVariableHandle Variable(string browseName, string displayName, DriverAttributeInfo info)
{ Variables.Add((browseName, info)); return new Handle(info.FullName); }
/// <summary>Adds a property (no-op in test).</summary>
/// <param name="_">Property name (unused in test).</param>
/// <param name="__">Property data type (unused in test).</param>
/// <param name="___">Property value (unused in test).</param>
/// <inheritdoc />
public void AddProperty(string _, DriverDataType __, object? ___) { }
/// <summary>Test variable handle.</summary>
private sealed class Handle(string fullRef) : IVariableHandle
{
/// <summary>Gets the full reference of the variable.</summary>
/// <inheritdoc />
public string FullReference => fullRef;
/// <summary>Marks the variable as an alarm condition.</summary>
/// <param name="info">The alarm condition information.</param>
/// <inheritdoc />
public IAlarmConditionSink MarkAsAlarmCondition(AlarmConditionInfo info) => new NullSink();
}
/// <summary>Null sink for alarm conditions.</summary>
private sealed class NullSink : IAlarmConditionSink
{
/// <summary>Handles alarm transition (no-op).</summary>
/// <param name="args">The alarm event arguments.</param>
/// <inheritdoc />
public void OnTransition(AlarmEventArgs args) { }
}
}
@@ -303,15 +302,13 @@ public sealed class AbCipDriverDiscoveryTests
/// <summary>Initializes a new instance of the FakeEnumeratorFactory.</summary>
/// <param name="tags">The tags to enumerate.</param>
public FakeEnumeratorFactory(params AbCipDiscoveredTag[] tags) => _tags = tags;
/// <summary>Creates a new fake enumerator.</summary>
/// <inheritdoc />
public IAbCipTagEnumerator Create() => new FakeEnumerator(this);
/// <summary>Fake tag enumerator for testing.</summary>
private sealed class FakeEnumerator(FakeEnumeratorFactory outer) : IAbCipTagEnumerator
{
/// <summary>Enumerates discovered tags asynchronously.</summary>
/// <param name="deviceParams">The device parameters for enumeration.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <inheritdoc />
public async IAsyncEnumerable<AbCipDiscoveredTag> EnumerateAsync(
AbCipTagCreateParams deviceParams,
[EnumeratorCancellation] CancellationToken cancellationToken)