Skip to content

Commit e20d870

Browse files
committed
Resolved issue
Added MCVE tests. Corrected XMLDoc example.
1 parent d336853 commit e20d870

File tree

2 files changed

+65
-3
lines changed

2 files changed

+65
-3
lines changed

Rubberduck.CodeAnalysis/Inspections/Concrete/ProcedureNotUsedInspection.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,37 @@ namespace Rubberduck.CodeAnalysis.Inspections.Concrete
2020
/// <remarks>
2121
/// Not all unused procedures can/should be removed: ignore any inspection results for
2222
/// event handler procedures and interface members that Rubberduck isn't recognizing as such.
23+
/// Public procedures of Standard Modules are not flagged by this inspection regardless of
24+
/// the presence or absence of user code references.
2325
/// </remarks>
2426
/// <example hasResult="true">
2527
/// <module name="MyModule" type="Standard Module">
2628
/// <![CDATA[
2729
/// Option Explicit
2830
///
31+
/// 'No inspection result
2932
/// Public Sub DoSomething()
3033
/// ' macro is attached to a worksheet Shape.
3134
/// End Sub
35+
///
36+
/// 'Flagged by inspection
37+
/// Private Sub DoSomethingElse()
38+
/// ' macro is attached to a worksheet Shape.
39+
/// End Sub
3240
/// ]]>
3341
/// </module>
3442
/// </example>
3543
/// <example hasResult="false">
3644
/// <module name="MyModule" type="Standard Module">
3745
/// <![CDATA[
3846
/// Option Explicit
47+
///
48+
/// Public Sub DoSomething()
49+
/// ' macro is attached to a worksheet Shape.
50+
/// End Sub
3951
///
4052
/// '@Ignore ProcedureNotUsed
41-
/// Public Sub DoSomething()
53+
/// Private Sub DoSomethingElse()
4254
/// ' macro is attached to a worksheet Shape.
4355
/// End Sub
4456
/// ]]>
@@ -78,8 +90,7 @@ public ProcedureNotUsedInspection(IDeclarationFinderProvider declarationFinderPr
7890
protected override bool IsResultDeclaration(Declaration declaration, DeclarationFinder finder)
7991
{
8092
return !declaration.References
81-
.Any(reference => !reference.IsAssignment
82-
&& !reference.ParentScoping.Equals(declaration)) // recursive calls don't count
93+
.Any(reference => !reference.ParentScoping.Equals(declaration)) // recursive calls don't count
8394
&& !finder.FindEventHandlers().Contains(declaration)
8495
&& !IsPublicModuleMember(declaration)
8596
&& !IsClassLifeCycleHandler(declaration)

RubberduckTests/Inspections/ProcedureNotUsedInspectionTests.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,57 @@ Private Sub Foo()
182182
Assert.AreEqual(0, InspectionResultsForStandardModule(inputCode).Count());
183183
}
184184

185+
//https://github.com/rubberduck-vba/Rubberduck/issues/5490
186+
[TestCase(@"Name = ""Bizz""", 0)]
187+
[TestCase(@"mName = ""Bizz""", 1)]
188+
[Category("Inspections")]
189+
public void PropertyLet(string assignmentCode, int expectedResults)
190+
{
191+
var inputCode =
192+
$@"
193+
Private mName As String
194+
195+
Private Sub Class_Initialize()
196+
{assignmentCode}
197+
End Sub
198+
199+
Private Property Let Name(ByVal value As String)
200+
mName = value
201+
End Property
202+
";
203+
204+
var modules = new(string, string, ComponentType)[]
205+
{
206+
(MockVbeBuilder.TestModuleName, inputCode, ComponentType.ClassModule),
207+
};
208+
209+
Assert.AreEqual(expectedResults, InspectionResultsForModules(modules).Count(result => result.Target.DeclarationType.HasFlag(DeclarationType.Procedure)));
210+
}
211+
212+
[Test]
213+
[Category("Inspections")]
214+
public void RecursiveReferenceOnly_ReturnsResult()
215+
{
216+
var inputCode =
217+
$@"
218+
Private mName As String
219+
220+
Private Property Let Name(ByVal value As String)
221+
mName = value
222+
If Len(mName) > 10 Then
223+
Name = Left(mName, 8)
224+
End If
225+
End Property
226+
";
227+
228+
var modules = new(string, string, ComponentType)[]
229+
{
230+
(MockVbeBuilder.TestModuleName, inputCode, ComponentType.ClassModule),
231+
};
232+
233+
Assert.AreEqual(1, InspectionResultsForModules(modules).Count(result => result.Target.DeclarationType.HasFlag(DeclarationType.Procedure)));
234+
}
235+
185236
[Test]
186237
[Category("Inspections")]
187238
public void InspectionName()

0 commit comments

Comments
 (0)