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:
@@ -120,6 +120,7 @@ public sealed class DeployWatcherTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that bootstrap deploy events are suppressed.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task BootstrapEventIsSuppressed()
|
||||
{
|
||||
@@ -143,6 +144,7 @@ public sealed class DeployWatcherTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that a deployment time change fires a rediscovery event.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task DeployTimeChangeFiresRediscover()
|
||||
{
|
||||
@@ -171,6 +173,7 @@ public sealed class DeployWatcherTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that the same deployment time does not fire a rediscovery event.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task SameDeployTimeDoesNotFire()
|
||||
{
|
||||
@@ -195,6 +198,7 @@ public sealed class DeployWatcherTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that a deployment time presence flip fires a rediscovery event.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task TimeOfLastDeployPresentFlipFiresRediscover()
|
||||
{
|
||||
@@ -222,6 +226,7 @@ public sealed class DeployWatcherTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that stop cancels the watcher loop cleanly.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task StopCancelsLoopCleanly()
|
||||
{
|
||||
@@ -243,6 +248,7 @@ public sealed class DeployWatcherTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that disposing stops a running watcher.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task DisposeStopsRunningWatcher()
|
||||
{
|
||||
@@ -262,6 +268,7 @@ public sealed class DeployWatcherTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that a source exception triggers retry with backoff.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task SourceExceptionTriggersRetryWithBackoff()
|
||||
{
|
||||
|
||||
+20
-35
@@ -16,9 +16,7 @@ public sealed class GalaxyDiscovererTests
|
||||
{
|
||||
private sealed class FakeHierarchySource(IReadOnlyList<GalaxyObject> objects) : IGalaxyHierarchySource
|
||||
{
|
||||
/// <summary>Gets the hierarchy asynchronously from the fake source.</summary>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>A task that returns the pre-built Galaxy object list.</returns>
|
||||
/// <inheritdoc />
|
||||
public Task<IReadOnlyList<GalaxyObject>> GetHierarchyAsync(CancellationToken cancellationToken)
|
||||
=> Task.FromResult(objects);
|
||||
}
|
||||
@@ -41,10 +39,7 @@ public sealed class GalaxyDiscovererTests
|
||||
public FakeBuilder() : this(null) { }
|
||||
private FakeBuilder(string? folder) { _currentFolder = folder; }
|
||||
|
||||
/// <summary>Adds a folder call to the recorded list.</summary>
|
||||
/// <param name="browseName">The browse name for the folder.</param>
|
||||
/// <param name="displayName">The display name for the folder.</param>
|
||||
/// <returns>An IAddressSpaceBuilder scoped to the new folder.</returns>
|
||||
/// <inheritdoc />
|
||||
public IAddressSpaceBuilder Folder(string browseName, string displayName)
|
||||
{
|
||||
Folders.Add(new FolderCall(browseName, displayName));
|
||||
@@ -52,11 +47,7 @@ public sealed class GalaxyDiscovererTests
|
||||
return new ChildBuilder(this, browseName);
|
||||
}
|
||||
|
||||
/// <summary>Adds a variable call to the recorded list.</summary>
|
||||
/// <param name="browseName">The browse name for the variable.</param>
|
||||
/// <param name="displayName">The display name for the variable.</param>
|
||||
/// <param name="attributeInfo">The attribute metadata for the variable.</param>
|
||||
/// <returns>An IVariableHandle for further configuration.</returns>
|
||||
/// <inheritdoc />
|
||||
public IVariableHandle Variable(string browseName, string displayName, DriverAttributeInfo attributeInfo)
|
||||
{
|
||||
var folder = _currentFolder ?? "<root>";
|
||||
@@ -64,51 +55,36 @@ public sealed class GalaxyDiscovererTests
|
||||
return new FakeVariableHandle(this, attributeInfo.FullName);
|
||||
}
|
||||
|
||||
/// <summary>Adds a property call to the builder (not recorded in this fake).</summary>
|
||||
/// <param name="browseName">The browse name for the property.</param>
|
||||
/// <param name="dataType">The driver data type of the property.</param>
|
||||
/// <param name="value">The property value.</param>
|
||||
/// <inheritdoc />
|
||||
public void AddProperty(string browseName, DriverDataType dataType, object? value) { }
|
||||
|
||||
/// <summary>Child folder routes Variable calls back to the parent's lists with its own scope.</summary>
|
||||
private sealed class ChildBuilder(FakeBuilder parent, string folderBrowseName) : IAddressSpaceBuilder
|
||||
{
|
||||
/// <summary>Adds a child folder call to the parent builder's recorded list.</summary>
|
||||
/// <param name="browseName">The browse name for the folder.</param>
|
||||
/// <param name="displayName">The display name for the folder.</param>
|
||||
/// <returns>An IAddressSpaceBuilder scoped to the new child folder.</returns>
|
||||
/// <inheritdoc />
|
||||
public IAddressSpaceBuilder Folder(string browseName, string displayName)
|
||||
{
|
||||
parent.Folders.Add(new FolderCall(browseName, displayName));
|
||||
return new ChildBuilder(parent, browseName);
|
||||
}
|
||||
|
||||
/// <summary>Adds a variable call to the parent builder's recorded list, scoped to this folder.</summary>
|
||||
/// <param name="browseName">The browse name for the variable.</param>
|
||||
/// <param name="displayName">The display name for the variable.</param>
|
||||
/// <param name="attributeInfo">The attribute metadata for the variable.</param>
|
||||
/// <returns>An IVariableHandle for further configuration.</returns>
|
||||
/// <inheritdoc />
|
||||
public IVariableHandle Variable(string browseName, string displayName, DriverAttributeInfo attributeInfo)
|
||||
{
|
||||
parent.Variables.Add(new VariableCall(folderBrowseName, browseName, attributeInfo));
|
||||
return new FakeVariableHandle(parent, attributeInfo.FullName);
|
||||
}
|
||||
|
||||
/// <summary>Adds a property call to the builder (not recorded in this fake).</summary>
|
||||
/// <param name="browseName">The browse name for the property.</param>
|
||||
/// <param name="dataType">The driver data type of the property.</param>
|
||||
/// <param name="value">The property value.</param>
|
||||
/// <inheritdoc />
|
||||
public void AddProperty(string browseName, DriverDataType dataType, object? value) { }
|
||||
}
|
||||
|
||||
private sealed class FakeVariableHandle(FakeBuilder owner, string fullRef) : IVariableHandle
|
||||
{
|
||||
/// <summary>Gets the full reference for this variable.</summary>
|
||||
/// <inheritdoc />
|
||||
public string FullReference { get; } = fullRef;
|
||||
|
||||
/// <summary>Marks this variable as an alarm condition and records it.</summary>
|
||||
/// <param name="info">The alarm condition metadata.</param>
|
||||
/// <returns>An IAlarmConditionSink for further alarm configuration.</returns>
|
||||
/// <inheritdoc />
|
||||
public IAlarmConditionSink MarkAsAlarmCondition(AlarmConditionInfo info)
|
||||
{
|
||||
owner.AlarmDeclarations[FullReference] = info;
|
||||
@@ -118,8 +94,7 @@ public sealed class GalaxyDiscovererTests
|
||||
|
||||
private sealed class NoopSink : IAlarmConditionSink
|
||||
{
|
||||
/// <summary>Records an alarm transition event (no-op in this fake).</summary>
|
||||
/// <param name="args">The alarm event arguments.</param>
|
||||
/// <inheritdoc />
|
||||
public void OnTransition(AlarmEventArgs args) { }
|
||||
}
|
||||
}
|
||||
@@ -156,6 +131,7 @@ public sealed class GalaxyDiscovererTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that discovery creates one folder per object and one variable per attribute.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DiscoverAsync_BuildsOneFolderPerObject_AndOneVariablePerAttribute()
|
||||
{
|
||||
@@ -178,6 +154,7 @@ public sealed class GalaxyDiscovererTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that full reference defaults to tag.attribute format when not explicitly supplied.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DiscoverAsync_FullReference_DefaultsToTagDotAttribute()
|
||||
{
|
||||
@@ -193,6 +170,7 @@ public sealed class GalaxyDiscovererTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that full reference uses gateway-supplied value when provided.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DiscoverAsync_FullReference_PrefersGwSuppliedFullTagReference()
|
||||
{
|
||||
@@ -208,6 +186,7 @@ public sealed class GalaxyDiscovererTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that browse name falls back to tag name when contained name is empty.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DiscoverAsync_BrowseName_FallsBackToTagName_WhenContainedEmpty()
|
||||
{
|
||||
@@ -223,6 +202,7 @@ public sealed class GalaxyDiscovererTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that attribute metadata fields are all propagated to the discovered variable.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DiscoverAsync_AttributeMetadata_PropagatesEveryField()
|
||||
{
|
||||
@@ -248,6 +228,7 @@ public sealed class GalaxyDiscovererTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that alarm attributes populate all five sub-attribute references.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DiscoverAsync_AlarmAttribute_PopulatesAllFiveSubAttributeRefs()
|
||||
{
|
||||
@@ -270,6 +251,7 @@ public sealed class GalaxyDiscovererTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that non-alarm attributes are not marked as alarm conditions.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DiscoverAsync_NonAlarmAttribute_DoesNotMarkCondition()
|
||||
{
|
||||
@@ -287,6 +269,7 @@ public sealed class GalaxyDiscovererTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that objects with empty identity are skipped during discovery.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DiscoverAsync_SkipsObjectsWithEmptyIdentity()
|
||||
{
|
||||
@@ -304,6 +287,7 @@ public sealed class GalaxyDiscovererTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that attributes with empty names are skipped during discovery.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DiscoverAsync_SkipsAttributesWithEmptyName()
|
||||
{
|
||||
@@ -320,6 +304,7 @@ public sealed class GalaxyDiscovererTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that driver discovery routes through the injected hierarchy source.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DriverDiscoverAsync_RoutesThroughInjectedSource()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user