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
@@ -9,6 +9,8 @@ public sealed class MelsecAddressTests
// --- X / Y hex vs octal family trap ---
/// <summary>Verifies that Q-series and iQR family X inputs parse as hexadecimal.</summary>
/// <param name="x">The X input address string to parse.</param>
/// <param name="expected">The expected discrete coil address after parsing.</param>
[Theory]
[InlineData("X0", (ushort)0)]
[InlineData("X9", (ushort)9)]
@@ -22,6 +24,8 @@ public sealed class MelsecAddressTests
=> MelsecAddress.XInputToDiscrete(x, MelsecFamily.Q_L_iQR).ShouldBe(expected);
/// <summary>Verifies that F-series and iQF family X inputs parse as octal.</summary>
/// <param name="x">The X input address string to parse.</param>
/// <param name="expected">The expected discrete coil address after parsing.</param>
[Theory]
[InlineData("X0", (ushort)0)]
[InlineData("X7", (ushort)7)]
@@ -32,6 +36,8 @@ public sealed class MelsecAddressTests
=> MelsecAddress.XInputToDiscrete(x, MelsecFamily.F_iQF).ShouldBe(expected);
/// <summary>Verifies that Q-series and iQR family Y outputs parse as hexadecimal.</summary>
/// <param name="y">The Y output address string to parse.</param>
/// <param name="expected">The expected coil address after parsing.</param>
[Theory]
[InlineData("Y0", (ushort)0)]
[InlineData("Y1F", (ushort)31)]
@@ -39,6 +45,8 @@ public sealed class MelsecAddressTests
=> MelsecAddress.YOutputToCoil(y, MelsecFamily.Q_L_iQR).ShouldBe(expected);
/// <summary>Verifies that F-series and iQF family Y outputs parse as octal.</summary>
/// <param name="y">The Y output address string to parse.</param>
/// <param name="expected">The expected coil address after parsing.</param>
[Theory]
[InlineData("Y0", (ushort)0)]
[InlineData("Y17", (ushort)15)]
@@ -58,6 +66,7 @@ public sealed class MelsecAddressTests
}
/// <summary>Verifies that non-octal X input addresses are rejected for F-series and iQF families.</summary>
/// <param name="bad">An invalid X input address string that should be rejected.</param>
[Theory]
[InlineData("X8")] // 8 is non-octal
[InlineData("X12G")] // G is non-hex
@@ -65,6 +74,7 @@ public sealed class MelsecAddressTests
=> Should.Throw<ArgumentException>(() => MelsecAddress.XInputToDiscrete(bad, MelsecFamily.F_iQF));
/// <summary>Verifies that non-hexadecimal X input addresses are rejected for Q-series and iQR families.</summary>
/// <param name="bad">An invalid X input address string that should be rejected.</param>
[Theory]
[InlineData("X12G")]
public void XInputToDiscrete_QLiQR_rejects_non_hex(string bad)
@@ -84,6 +94,8 @@ public sealed class MelsecAddressTests
// --- M-relay (decimal, both families) ---
/// <summary>Verifies that M relay addresses parse as decimal.</summary>
/// <param name="m">The M relay address string to parse.</param>
/// <param name="expected">The expected coil address after parsing.</param>
[Theory]
[InlineData("M0", (ushort)0)]
[InlineData("M10", (ushort)10)] // M addresses are DECIMAL, not hex or octal
@@ -109,6 +121,8 @@ public sealed class MelsecAddressTests
// --- D-register (decimal, both families) ---
/// <summary>Verifies that D register addresses parse as decimal.</summary>
/// <param name="d">The D register address string to parse.</param>
/// <param name="expected">The expected holding register address after parsing.</param>
[Theory]
[InlineData("D0", (ushort)0)]
[InlineData("D100", (ushort)100)]