Skip to content

Commit 693b349

Browse files
authored
Merge pull request #2575 from retailcoder/next
use meaningful names tweaks
2 parents c8e45f6 + c9dd5fc commit 693b349

File tree

7 files changed

+39
-563
lines changed

7 files changed

+39
-563
lines changed

RetailCoder.VBE/Inspections/UseMeaningfulNameInspection.cs

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using Rubberduck.Common;
45
using Rubberduck.Inspections.Abstract;
56
using Rubberduck.Inspections.Resources;
67
using Rubberduck.Inspections.Results;
@@ -27,22 +28,47 @@ public UseMeaningfulNameInspection(IMessageBox messageBox, RubberduckParserState
2728
public override string Description { get { return InspectionsUI.UseMeaningfulNameInspectionName; } }
2829
public override CodeInspectionType InspectionType { get { return CodeInspectionType.MaintainabilityAndReadabilityIssues; } }
2930

31+
private static readonly DeclarationType[] IgnoreDeclarationTypes =
32+
{
33+
DeclarationType.ModuleOption,
34+
DeclarationType.BracketedExpression,
35+
DeclarationType.LibraryFunction,
36+
DeclarationType.LibraryProcedure,
37+
};
38+
3039
public override IEnumerable<InspectionResultBase> GetInspectionResults()
3140
{
3241
var settings = _settings.Load(new CodeInspectionSettings()) ?? new CodeInspectionSettings();
33-
var whitelistedNames = settings.WhitelistedIdentifiers.Select(s => s.Identifier).ToList();
42+
var whitelistedNames = settings.WhitelistedIdentifiers.Select(s => s.Identifier).ToArray();
43+
44+
var handlers = Declarations.FindBuiltInEventHandlers();
3445

3546
var issues = UserDeclarations
36-
.Where(declaration => declaration.DeclarationType != DeclarationType.ModuleOption &&
37-
!whitelistedNames.Contains(declaration.IdentifierName) &&
38-
(declaration.IdentifierName.Length < 3 ||
39-
char.IsDigit(declaration.IdentifierName.Last()) ||
40-
!declaration.IdentifierName.Any(c =>
41-
"aeiouy".Any(a => string.Compare(a.ToString(), c.ToString(), StringComparison.OrdinalIgnoreCase) == 0))))
47+
.Where(declaration =>
48+
!IgnoreDeclarationTypes.Contains(declaration.DeclarationType) &&
49+
(declaration.ParentDeclaration == null ||
50+
!IgnoreDeclarationTypes.Contains(declaration.ParentDeclaration.DeclarationType) &&
51+
!handlers.Contains(declaration.ParentDeclaration)) &&
52+
!whitelistedNames.Contains(declaration.IdentifierName) &&
53+
IsBadIdentifier(declaration.IdentifierName))
4254
.Select(issue => new IdentifierNameInspectionResult(this, issue, State, _messageBox, _settings))
4355
.ToList();
4456

4557
return issues;
4658
}
59+
60+
private static bool IsBadIdentifier(string identifier)
61+
{
62+
return identifier.Length < 3 ||
63+
char.IsDigit(identifier.Last()) ||
64+
!HasVowels(identifier);
65+
}
66+
67+
private static bool HasVowels(string identifier)
68+
{
69+
const string vowels = "aeiouyàâäéèêëïîöôùûü";
70+
return identifier.Any(character => vowels.Any(vowel =>
71+
string.Compare(vowel.ToString(), character.ToString(), StringComparison.OrdinalIgnoreCase) == 0));
72+
}
4773
}
4874
}

Rubberduck.Parsing/Symbols/DeclarationSymbolsListener.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public DeclarationSymbolsListener(
6969
{
7070
try
7171
{
72-
if (coclass.Key.Count != _qualifiedName.Component.Properties.Count)
72+
if (_qualifiedName.Component == null || coclass.Key.Count != _qualifiedName.Component.Properties.Count)
7373
{
7474
continue;
7575
}

RubberduckTests/Inspections/ImplicitActiveSheetReferenceInspectionTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ End Sub
5353
}
5454

5555
[TestMethod]
56+
[DeploymentItem(@"TestFiles\")]
5657
[TestCategory("Inspections")]
5758
public void ImplicitActiveSheetReference_Ignored_DoesNotReportRange()
5859
{
@@ -87,8 +88,8 @@ End Sub
8788
Assert.AreEqual(0, inspectionResults.Count());
8889
}
8990

90-
[DeploymentItem(@"TestFiles\")]
9191
[TestMethod]
92+
[DeploymentItem(@"TestFiles\")]
9293
public void ImplicitActiveSheetReference_IgnoreQuickFixWorks()
9394
{
9495
const string inputCode =

RubberduckTests/Inspections/ImplicitActiveWorkbookReferenceInspectionTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ namespace RubberduckTests.Inspections
1717
public class ImplicitActiveWorkbookReferenceInspectionTests
1818
{
1919
[TestMethod]
20+
[DeploymentItem(@"TestFiles\")]
2021
[TestCategory("Inspections")]
2122
public void ImplicitActiveWorkbookReference_ReportsWorksheets()
2223
{
@@ -51,6 +52,7 @@ Dim sheet As Worksheet
5152
}
5253

5354
[TestMethod]
55+
[DeploymentItem(@"TestFiles\")]
5456
[TestCategory("Inspections")]
5557
public void ImplicitActiveWorkbookReference_Ignored_DoesNotReportRange()
5658
{
@@ -75,6 +77,7 @@ Dim sheet As Worksheet
7577
mockHost.SetupAllProperties();
7678

7779
var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock<ISinks>().Object));
80+
parser.State.AddTestLibrary("Excel.1.8.xml");
7881

7982
parser.Parse(new CancellationTokenSource());
8083
if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }

RubberduckTests/RubberduckTests.csproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,6 @@
185185
<Compile Include="Settings\InspectionSettingsTests.cs" />
186186
<Compile Include="Settings\GeneralSettingsTests.cs" />
187187
<Compile Include="Settings\IndenterSettingsTests.cs" />
188-
<Compile Include="Settings\SettingsControlTests.cs" />
189188
<Compile Include="Settings\TodoSettingsTests.cs" />
190189
<Compile Include="Settings\UnitTestSettingsTests.cs" />
191190
<Compile Include="SmartIndenter\EndOfLineCommentTests.cs" />
@@ -197,7 +196,6 @@
197196
<Compile Include="SourceControl\BranchesViewModelTests.cs" />
198197
<Compile Include="SourceControl\ChangesViewModelTests.cs" />
199198
<Compile Include="SourceControl\SettingsViewModelTests.cs" />
200-
<Compile Include="SourceControl\SourceControlTests.cs" />
201199
<Compile Include="SourceControl\SourceControlViewModelTests.cs" />
202200
<Compile Include="SourceControl\UnsyncedCommitsViewModelTests.cs" />
203201
<Compile Include="StringExtensionsTests.cs" />

0 commit comments

Comments
 (0)