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
@@ -25,6 +25,7 @@ public sealed class AbCipPlcFamilyTests
}
/// <summary>Verifies that a ControlLogix device initializes with the correct profile.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task ControlLogix_device_initialises_with_correct_profile()
{
@@ -54,6 +55,7 @@ public sealed class AbCipPlcFamilyTests
}
/// <summary>Verifies that a CompactLogix device initializes with a narrow connection size.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task CompactLogix_device_initialises_with_narrow_ConnectionSize()
{
@@ -85,6 +87,7 @@ public sealed class AbCipPlcFamilyTests
}
/// <summary>Verifies that a Micro800 device with an empty CIP path parses correctly.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task Micro800_device_with_empty_cip_path_parses_correctly()
{
@@ -102,6 +105,7 @@ public sealed class AbCipPlcFamilyTests
}
/// <summary>Verifies that Micro800 read operations forward the empty path to tag creation parameters.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task Micro800_read_forwards_empty_path_to_tag_create_params()
{
@@ -134,6 +138,7 @@ public sealed class AbCipPlcFamilyTests
}
/// <summary>Verifies that GuardLogix safety tags surface as ViewOnly in discovery.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task GuardLogix_safety_tag_surfaces_as_ViewOnly_in_discovery()
{
@@ -160,6 +165,7 @@ public sealed class AbCipPlcFamilyTests
}
/// <summary>Verifies that GuardLogix safety tag writes are rejected even when the tag is marked Writable.</summary>
/// <returns>A task that represents the asynchronous test operation.</returns>
[Fact]
public async Task GuardLogix_safety_tag_writes_rejected_even_when_Writable_is_true()
{
@@ -206,37 +212,27 @@ public sealed class AbCipPlcFamilyTests
/// <summary>Gets the list of variables recorded by this builder.</summary>
public List<(string BrowseName, DriverAttributeInfo Info)> Variables { get; } = new();
/// <summary>Adds a folder to the recorded list and returns this builder for chaining.</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>Adds a variable to the recorded list and returns a handle.</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.</param>
/// <inheritdoc />
public IVariableHandle Variable(string browseName, string displayName, DriverAttributeInfo info)
{ Variables.Add((browseName, info)); return new Handle(info.FullName); }
/// <summary>No-op property adding operation for test compatibility.</summary>
/// <param name="_">The property name.</param>
/// <param name="__">The property data type.</param>
/// <param name="___">The property value.</param>
/// <inheritdoc />
public void AddProperty(string _, DriverDataType __, object? ___) { }
private sealed class Handle(string fullRef) : IVariableHandle
{
/// <summary>Gets the full reference for this variable handle.</summary>
/// <inheritdoc />
public string FullReference => fullRef;
/// <summary>Marks this variable as an alarm condition and returns a null sink.</summary>
/// <param name="info">The alarm condition information.</param>
/// <inheritdoc />
public IAlarmConditionSink MarkAsAlarmCondition(AlarmConditionInfo info) => new NullSink();
}
private sealed class NullSink : IAlarmConditionSink
{
/// <summary>Called when an alarm state transitions.</summary>
/// <param name="args">The alarm event arguments.</param>
/// <inheritdoc />
public void OnTransition(AlarmEventArgs args) { }
}
}