Skip to content

Commit 64df47d

Browse files
d1820claude
andcommitted
Fix public-only guard bug and add missing test coverage for new member types
Bug fix: BuildDestructorComments, BuildOperatorComments, BuildConversionOperatorComments were missing IsEnabledForPublicMembersOnly checks, causing private members to be documented even when the setting was enabled. Added IsPrivateMember overloads for Destructor, Operator, and ConversionOperator in PrivateMemberVerifier. New tests: explicit conversion operator, indexer with setter, delegate with parameters and non-void return type. Fixed ExplicitEvent and Struct fix files to match actual code output structure. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 858f83c commit 64df47d

16 files changed

Lines changed: 174 additions & 7 deletions

File tree

CodeDocumentor.Common/Helper/PrivateMemberVerifier.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,5 +179,40 @@ public static bool IsPrivateMember(IndexerDeclarationSyntax node)
179179
}
180180
return node.Parent is InterfaceDeclarationSyntax ids ? IsPrivateMember(ids) : false;
181181
}
182+
183+
public static bool IsPrivateMember(DestructorDeclarationSyntax node)
184+
{
185+
if (node.Parent is ClassDeclarationSyntax cds)
186+
{
187+
return IsPrivateMember(cds);
188+
}
189+
return false;
190+
}
191+
192+
public static bool IsPrivateMember(OperatorDeclarationSyntax node)
193+
{
194+
if (!node.Modifiers.Any(SyntaxKind.PublicKeyword))
195+
{
196+
return true;
197+
}
198+
if (node.Parent is ClassDeclarationSyntax cds)
199+
{
200+
return IsPrivateMember(cds);
201+
}
202+
return false;
203+
}
204+
205+
public static bool IsPrivateMember(ConversionOperatorDeclarationSyntax node)
206+
{
207+
if (!node.Modifiers.Any(SyntaxKind.PublicKeyword))
208+
{
209+
return true;
210+
}
211+
if (node.Parent is ClassDeclarationSyntax cds)
212+
{
213+
return IsPrivateMember(cds);
214+
}
215+
return false;
216+
}
182217
}
183218
}

CodeDocumentor.Common/Services/CommentBuilderService.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,10 @@ public int BuildDestructorComments(IBaseSettings settings, string diagnosticId,
799799
{
800800
continue;
801801
}
802+
if (settings.IsEnabledForPublicMembersOnly && PrivateMemberVerifier.IsPrivateMember(declarationSyntax))
803+
{
804+
continue;
805+
}
802806
var newDeclaration = BuildNewDeclaration(settings, declarationSyntax);
803807
nodesToReplace.TryAdd(declarationSyntax, newDeclaration);
804808
neededCommentCount++;
@@ -840,6 +844,10 @@ public int BuildOperatorComments(IBaseSettings settings, string diagnosticId, Sy
840844
{
841845
continue;
842846
}
847+
if (settings.IsEnabledForPublicMembersOnly && PrivateMemberVerifier.IsPrivateMember(declarationSyntax))
848+
{
849+
continue;
850+
}
843851
var newDeclaration = BuildNewDeclaration(settings, declarationSyntax);
844852
nodesToReplace.TryAdd(declarationSyntax, newDeclaration);
845853
neededCommentCount++;
@@ -887,6 +895,10 @@ public int BuildConversionOperatorComments(IBaseSettings settings, string diagno
887895
{
888896
continue;
889897
}
898+
if (settings.IsEnabledForPublicMembersOnly && PrivateMemberVerifier.IsPrivateMember(declarationSyntax))
899+
{
900+
continue;
901+
}
890902
var newDeclaration = BuildNewDeclaration(settings, declarationSyntax);
891903
nodesToReplace.TryAdd(declarationSyntax, newDeclaration);
892904
neededCommentCount++;

CodeDocumentor.Test/CodeDocumentor.Test.csproj

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,12 @@
143143
<Compile Remove="Operators\TestFiles\TestFixCode.cs" />
144144
<Compile Remove="ConversionOperators\TestFiles\TestCode.cs" />
145145
<Compile Remove="ConversionOperators\TestFiles\TestFixCode.cs" />
146+
<Compile Remove="ConversionOperators\TestFiles\ExplicitTestCode.cs" />
147+
<Compile Remove="ConversionOperators\TestFiles\ExplicitTestFixCode.cs" />
148+
<Compile Remove="Indexers\TestFiles\WithSetterTestCode.cs" />
149+
<Compile Remove="Indexers\TestFiles\WithSetterTestFixCode.cs" />
150+
<Compile Remove="Delegates\TestFiles\WithParamsTestCode.cs" />
151+
<Compile Remove="Delegates\TestFiles\WithParamsTestFixCode.cs" />
146152
</ItemGroup>
147153

148154
<ItemGroup>
@@ -548,6 +554,24 @@
548554
<None Include="ConversionOperators\TestFiles\TestFixCode.cs">
549555
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
550556
</None>
557+
<None Include="ConversionOperators\TestFiles\ExplicitTestCode.cs">
558+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
559+
</None>
560+
<None Include="ConversionOperators\TestFiles\ExplicitTestFixCode.cs">
561+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
562+
</None>
563+
<None Include="Indexers\TestFiles\WithSetterTestCode.cs">
564+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
565+
</None>
566+
<None Include="Indexers\TestFiles\WithSetterTestFixCode.cs">
567+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
568+
</None>
569+
<None Include="Delegates\TestFiles\WithParamsTestCode.cs">
570+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
571+
</None>
572+
<None Include="Delegates\TestFiles\WithParamsTestFixCode.cs">
573+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
574+
</None>
551575
</ItemGroup>
552576

553577
<ItemGroup>

CodeDocumentor.Test/ConversionOperators/ConversionOperatorUnitTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public async Task NoDiagnosticsShow(string testCode)
2828

2929
[Theory]
3030
[InlineData("TestCode.cs", "TestFixCode.cs", 9, 23)]
31+
[InlineData("ExplicitTestCode.cs", "ExplicitTestFixCode.cs", 9, 23)]
3132
public async Task ShowDiagnosticAndFix(string testCode, string fixCode, int line, int column)
3233
{
3334
var fix = _fixture.LoadTestFile($"./ConversionOperators/TestFiles/{fixCode}");
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace Test
6+
{
7+
public class ConversionTester
8+
{
9+
public static explicit operator int(ConversionTester value)
10+
{
11+
return 0;
12+
}
13+
}
14+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace Test
6+
{
7+
public class ConversionTester
8+
{
9+
/// <summary>
10+
/// Performs an explicit conversion to <see cref="int"/>.
11+
/// </summary>
12+
/// <param name="value">The value.</param>
13+
public static explicit operator int(ConversionTester value)
14+
{
15+
return 0;
16+
}
17+
}
18+
}

CodeDocumentor.Test/ConversionOperators/TestFiles/TestFixCode.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ public class ConversionTester
1010
/// Performs an implicit conversion to <see cref="int"/>.
1111
/// </summary>
1212
/// <param name="value">The value.</param>
13-
public static implicit operator int(ConversionTester value) => 0;
13+
public static implicit operator int(ConversionTester value)
14+
{
15+
return 0;
16+
}
1417
}
1518
}

CodeDocumentor.Test/Delegates/DelegateUnitTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public async Task NoDiagnosticsShow(string testCode)
2828

2929
[Theory]
3030
[InlineData("TestCode.cs", "TestFixCode.cs", 7, 26)]
31+
[InlineData("WithParamsTestCode.cs", "WithParamsTestFixCode.cs", 7, 28)]
3132
public async Task ShowDiagnosticAndFix(string testCode, string fixCode, int line, int column)
3233
{
3334
var fix = _fixture.LoadTestFile($"./Delegates/TestFiles/{fixCode}");
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace Test
6+
{
7+
public delegate string TransformHandler(string input, int count);
8+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace Test
6+
{
7+
/// <summary>
8+
/// The transform handler.
9+
/// </summary>
10+
/// <param name="input">The input.</param>
11+
/// <param name="count">The count.</param>
12+
/// <returns>A string</returns>
13+
public delegate string TransformHandler(string input, int count);
14+
}

0 commit comments

Comments
 (0)