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:
@@ -24,15 +24,11 @@ public sealed class ModbusDriverTests
|
||||
/// <summary>Gets or sets a value indicating whether connect operations should fail.</summary>
|
||||
public bool ForceConnectFail { get; set; }
|
||||
|
||||
/// <summary>Initiates a connection to the Modbus server.</summary>
|
||||
/// <param name="ct">Cancellation token.</param>
|
||||
/// <inheritdoc />
|
||||
public Task ConnectAsync(CancellationToken ct)
|
||||
=> ForceConnectFail ? Task.FromException(new InvalidOperationException("connect refused")) : Task.CompletedTask;
|
||||
|
||||
/// <summary>Sends a Modbus PDU and receives the response.</summary>
|
||||
/// <param name="unitId">Modbus unit ID.</param>
|
||||
/// <param name="pdu">Protocol data unit bytes to send.</param>
|
||||
/// <param name="ct">Cancellation token.</param>
|
||||
/// <inheritdoc />
|
||||
public Task<byte[]> SendAsync(byte unitId, byte[] pdu, CancellationToken ct)
|
||||
{
|
||||
var fc = pdu[0];
|
||||
@@ -112,6 +108,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Disposes the transport asynchronously.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
public ValueTask DisposeAsync() => ValueTask.CompletedTask;
|
||||
}
|
||||
|
||||
@@ -124,6 +121,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that Initialize connects and populates the tag map.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Initialize_connects_and_populates_tag_map()
|
||||
{
|
||||
@@ -135,6 +133,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that reading Int16 holding registers returns big-endian values correctly.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Read_Int16_holding_register_returns_BigEndian_value()
|
||||
{
|
||||
@@ -148,6 +147,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that reading Float32 values spans two registers in big-endian format.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Read_Float32_spans_two_registers_BigEndian()
|
||||
{
|
||||
@@ -165,6 +165,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that reading coils returns boolean values.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Read_Coil_returns_boolean()
|
||||
{
|
||||
@@ -177,6 +178,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that reading unknown tags returns BadNodeIdUnknown status instead of throwing.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Unknown_tag_returns_BadNodeIdUnknown_not_an_exception()
|
||||
{
|
||||
@@ -188,6 +190,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that writing UInt16 holding registers round-trips correctly.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Write_UInt16_holding_register_roundtrips()
|
||||
{
|
||||
@@ -200,6 +203,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that writing Float32 values uses function code 16 (WriteMultipleRegisters).</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Write_Float32_uses_FC16_WriteMultipleRegisters()
|
||||
{
|
||||
@@ -218,6 +222,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that writing to input registers returns BadNotWritable status.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Write_to_InputRegister_returns_BadNotWritable()
|
||||
{
|
||||
@@ -229,6 +234,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that Discover streams one folder per driver with a variable per tag.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Discover_streams_one_folder_per_driver_with_a_variable_per_tag()
|
||||
{
|
||||
@@ -250,6 +256,7 @@ public sealed class ModbusDriverTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that Discover propagates WriteIdempotent from tag to attribute info.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Discover_propagates_WriteIdempotent_from_tag_to_attribute_info()
|
||||
{
|
||||
@@ -278,41 +285,31 @@ public sealed class ModbusDriverTests
|
||||
/// <summary>Gets the list of discovered variables.</summary>
|
||||
public List<(string BrowseName, DriverAttributeInfo Info)> Variables { get; } = new();
|
||||
|
||||
/// <summary>Records a folder in the address space.</summary>
|
||||
/// <param name="browseName">Folder browse name.</param>
|
||||
/// <param name="displayName">Folder display name.</param>
|
||||
/// <inheritdoc />
|
||||
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">Variable browse name.</param>
|
||||
/// <param name="displayName">Variable display name.</param>
|
||||
/// <param name="info">Driver attribute information.</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 for recording).</summary>
|
||||
/// <param name="_">Property name (unused).</param>
|
||||
/// <param name="__">Property data type (unused).</param>
|
||||
/// <param name="___">Property value (unused).</param>
|
||||
/// <inheritdoc />
|
||||
public void AddProperty(string _, DriverDataType __, object? ___) { }
|
||||
|
||||
/// <summary>Handle to a discovered variable.</summary>
|
||||
private sealed class Handle(string fullRef) : IVariableHandle
|
||||
{
|
||||
/// <summary>Gets the full reference name.</summary>
|
||||
/// <inheritdoc />
|
||||
public string FullReference => fullRef;
|
||||
|
||||
/// <summary>Marks this variable as an alarm condition.</summary>
|
||||
/// <param name="info">Alarm condition information.</param>
|
||||
/// <inheritdoc />
|
||||
public IAlarmConditionSink MarkAsAlarmCondition(AlarmConditionInfo info) => new NullSink();
|
||||
}
|
||||
|
||||
/// <summary>No-op alarm condition sink for testing.</summary>
|
||||
private sealed class NullSink : IAlarmConditionSink
|
||||
{
|
||||
/// <summary>Handles alarm transitions (no-op).</summary>
|
||||
/// <param name="args">Alarm event arguments.</param>
|
||||
/// <inheritdoc />
|
||||
public void OnTransition(AlarmEventArgs args) { }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user