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
@@ -92,6 +92,7 @@ public sealed class OpcUaApplicationHostImpersonationTests
}
/// <summary>Verifies NullOpcUaUserAuthenticator always returns denial result.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task NullOpcUaUserAuthenticator_always_denies()
{
@@ -91,6 +91,7 @@ public sealed class OpcUaApplicationHostSecurityTests : IDisposable
/// <summary>
/// Verifies that StartAsync populates ServerConfiguration with all enabled security profiles.
/// </summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task StartAsync_populates_ServerConfiguration_with_all_enabled_profiles()
{
@@ -129,6 +130,7 @@ public sealed class OpcUaApplicationHostSecurityTests : IDisposable
/// <summary>
/// Verifies that StartAsync with only SignAndEncrypt omits the None endpoint.
/// </summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task StartAsync_with_only_signandencrypt_omits_None_endpoint()
{
@@ -20,6 +20,7 @@ public sealed class OpcUaApplicationHostServerArrayTests
/// <summary>
/// Verifies that ServerArray contains local URI and configured peer URIs after start.
/// </summary>
/// <returns>A task that represents the asynchronous test.</returns>
[Fact]
public async Task ServerArray_contains_local_uri_and_configured_peers_after_start()
{
@@ -19,6 +19,7 @@ public sealed class OpcUaApplicationHostTests : IDisposable
$"otopcua-pki-{Guid.NewGuid():N}");
/// <summary>Verifies StartAsync creates a self-signed certificate in the PKI own store.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task StartAsync_creates_application_certificate_in_pki_own()
{
@@ -41,6 +42,7 @@ public sealed class OpcUaApplicationHostTests : IDisposable
}
/// <summary>Verifies StartAsync reuses an existing certificate on the second boot.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task StartAsync_reuses_existing_certificate_on_second_boot()
{
@@ -67,6 +67,7 @@ public sealed class Phase7ApplierHierarchyTests : IDisposable
}
/// <summary>Verifies that MaterialiseHierarchy creates folder nodes in a real SDK node manager.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task MaterialiseHierarchy_against_real_SDK_node_manager_creates_folder_nodes()
{
@@ -135,31 +136,16 @@ public sealed class Phase7ApplierHierarchyTests : IDisposable
/// <summary>Gets the list of EnsureFolder calls recorded by this sink.</summary>
public List<(string NodeId, string? Parent, string DisplayName)> Calls => _calls.ToList();
/// <summary>Records a value write (stub implementation for testing).</summary>
/// <param name="nodeId">The node ID of the variable.</param>
/// <param name="value">The value to write.</param>
/// <param name="quality">The OPC UA quality value.</param>
/// <param name="sourceTimestampUtc">The source timestamp in UTC.</param>
/// <inheritdoc />
public void WriteValue(string nodeId, object? value, OpcUaQuality quality, DateTime sourceTimestampUtc) { }
/// <summary>Records an alarm state write (stub implementation for testing).</summary>
/// <param name="alarmNodeId">The node ID of the alarm condition.</param>
/// <param name="active">Whether the alarm is active.</param>
/// <param name="acknowledged">Whether the alarm has been acknowledged.</param>
/// <param name="sourceTimestampUtc">The source timestamp in UTC.</param>
/// <inheritdoc />
public void WriteAlarmState(string alarmNodeId, bool active, bool acknowledged, DateTime sourceTimestampUtc) { }
/// <summary>Records a folder creation request.</summary>
/// <param name="folderNodeId">The node ID of the folder.</param>
/// <param name="parentNodeId">The node ID of the parent folder, or null for root.</param>
/// <param name="displayName">The display name of the folder.</param>
/// <inheritdoc />
public void EnsureFolder(string folderNodeId, string? parentNodeId, string displayName)
=> _calls.Enqueue((folderNodeId, parentNodeId, displayName));
/// <summary>Ensures a variable exists (stub implementation for testing).</summary>
/// <param name="variableNodeId">The node ID of the variable.</param>
/// <param name="parentFolderNodeId">The node ID of the parent folder, or null for root.</param>
/// <param name="displayName">The display name of the variable.</param>
/// <param name="dataType">The OPC UA built-in type name.</param>
/// <inheritdoc />
public void EnsureVariable(string variableNodeId, string? parentFolderNodeId, string displayName, string dataType) { }
/// <summary>Rebuilds the address space (stub implementation for testing).</summary>
/// <inheritdoc />
public void RebuildAddressSpace() { }
}
}
@@ -246,33 +246,18 @@ public sealed class Phase7ApplierTests
/// <summary>Gets the list of recorded variable creation calls.</summary>
public List<(string NodeId, string? Parent, string DisplayName, string DataType)> VariableCalls => VariableQueue.ToList();
/// <summary>Records a value write (no-op in this recording sink).</summary>
/// <param name="nodeId">The node ID.</param>
/// <param name="value">The value to write.</param>
/// <param name="quality">The OPC UA quality.</param>
/// <param name="sourceTimestampUtc">The source timestamp in UTC.</param>
/// <inheritdoc />
public void WriteValue(string nodeId, object? value, OpcUaQuality quality, DateTime sourceTimestampUtc) { }
/// <summary>Records an alarm state write call.</summary>
/// <param name="alarmNodeId">The alarm node ID.</param>
/// <param name="active">Whether the alarm is active.</param>
/// <param name="acknowledged">Whether the alarm is acknowledged.</param>
/// <param name="sourceTimestampUtc">The source timestamp in UTC.</param>
/// <inheritdoc />
public void WriteAlarmState(string alarmNodeId, bool active, bool acknowledged, DateTime sourceTimestampUtc)
=> AlarmQueue.Enqueue((alarmNodeId, active, acknowledged));
/// <summary>Records a folder creation call.</summary>
/// <param name="folderNodeId">The folder node ID.</param>
/// <param name="parentNodeId">The parent folder node ID, if any.</param>
/// <param name="displayName">The display name for the folder.</param>
/// <inheritdoc />
public void EnsureFolder(string folderNodeId, string? parentNodeId, string displayName)
=> FolderQueue.Enqueue((folderNodeId, parentNodeId, displayName));
/// <summary>Records a variable creation call.</summary>
/// <param name="variableNodeId">The variable node ID.</param>
/// <param name="parentFolderNodeId">The parent folder node ID, if any.</param>
/// <param name="displayName">The display name for the variable.</param>
/// <param name="dataType">The OPC UA built-in type name.</param>
/// <inheritdoc />
public void EnsureVariable(string variableNodeId, string? parentFolderNodeId, string displayName, string dataType)
=> VariableQueue.Enqueue((variableNodeId, parentFolderNodeId, displayName, dataType));
/// <summary>Records a rebuild address space call.</summary>
/// <inheritdoc />
public void RebuildAddressSpace() => Interlocked.Increment(ref RebuildCalls);
}
@@ -283,34 +268,18 @@ public sealed class Phase7ApplierTests
/// <param name="throwOnAlarmWrite">Whether to throw on alarm state writes.</param>
public ThrowingSink(bool throwOnAlarmWrite) { _throwOnAlarmWrite = throwOnAlarmWrite; }
/// <summary>Records a value write (no-op in this sink).</summary>
/// <param name="nodeId">The node ID.</param>
/// <param name="value">The value to write.</param>
/// <param name="quality">The OPC UA quality.</param>
/// <param name="sourceTimestampUtc">The source timestamp in UTC.</param>
/// <inheritdoc />
public void WriteValue(string nodeId, object? value, OpcUaQuality quality, DateTime sourceTimestampUtc) { }
/// <summary>Throws an exception if configured to do so.</summary>
/// <param name="alarmNodeId">The alarm node ID.</param>
/// <param name="active">Whether the alarm is active.</param>
/// <param name="acknowledged">Whether the alarm is acknowledged.</param>
/// <param name="sourceTimestampUtc">The source timestamp in UTC.</param>
/// <exception cref="InvalidOperationException">Thrown when configured to throw on alarm write.</exception>
/// <inheritdoc />
public void WriteAlarmState(string alarmNodeId, bool active, bool acknowledged, DateTime sourceTimestampUtc)
{
if (_throwOnAlarmWrite) throw new InvalidOperationException("simulated sink fault");
}
/// <summary>No-op folder creation call.</summary>
/// <param name="folderNodeId">The folder node ID.</param>
/// <param name="parentNodeId">The parent folder node ID, if any.</param>
/// <param name="displayName">The display name for the folder.</param>
/// <inheritdoc />
public void EnsureFolder(string folderNodeId, string? parentNodeId, string displayName) { }
/// <summary>No-op variable creation call.</summary>
/// <param name="variableNodeId">The variable node ID.</param>
/// <param name="parentFolderNodeId">The parent folder node ID, if any.</param>
/// <param name="displayName">The display name for the variable.</param>
/// <param name="dataType">The OPC UA built-in type name.</param>
/// <inheritdoc />
public void EnsureVariable(string variableNodeId, string? parentFolderNodeId, string displayName, string dataType) { }
/// <summary>No-op rebuild address space call.</summary>
/// <inheritdoc />
public void RebuildAddressSpace() { }
}
}
@@ -20,6 +20,7 @@ public sealed class SdkAddressSpaceSinkTests : IDisposable
$"otopcua-sink-{Guid.NewGuid():N}");
/// <summary>Verifies that WriteValue creates and updates variables in the OPC UA node manager.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task WriteValue_creates_and_updates_variable_in_node_manager()
{
@@ -36,6 +37,7 @@ public sealed class SdkAddressSpaceSinkTests : IDisposable
}
/// <summary>Verifies that WriteAlarmState creates a dedicated node distinct from value writes.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task WriteAlarmState_creates_dedicated_node_distinct_from_value_writes()
{
@@ -51,6 +53,7 @@ public sealed class SdkAddressSpaceSinkTests : IDisposable
}
/// <summary>Verifies that RebuildAddressSpace clears all registered variables.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task RebuildAddressSpace_clears_all_registered_variables()
{
@@ -73,6 +76,7 @@ public sealed class SdkAddressSpaceSinkTests : IDisposable
}
/// <summary>Verifies that NullOpcUaAddressSpaceSink does not crash on any call.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task NullOpcUaAddressSpaceSink_does_not_crash_on_any_call()
{
@@ -20,6 +20,7 @@ public sealed class SdkServiceLevelPublisherTests : IDisposable
$"otopcua-pki-{Guid.NewGuid():N}");
/// <summary>Verifies that the publisher writes values to the standard Server.ServiceLevel variable.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task Publish_writes_value_to_Server_ServiceLevel_variable()
{
@@ -49,6 +50,7 @@ public sealed class SdkServiceLevelPublisherTests : IDisposable
}
/// <summary>Verifies that publishing service level values is idempotent when called multiple times.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task Publish_is_idempotent_when_called_multiple_times()
{