Skip to content

Commit db43d7c

Browse files
authored
Merge pull request #2 from retailcoder/regextool
Regextool
2 parents 04dd638 + 2a9d380 commit db43d7c

File tree

73 files changed

+2853
-323
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+2853
-323
lines changed

RetailCoder.VBE/Inspections/AssignedByValParameterInspectionResult.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ public class AssignedByValParameterInspectionResult : InspectionResultBase
1313
public AssignedByValParameterInspectionResult(IInspection inspection, Declaration target)
1414
: base(inspection, target)
1515
{
16-
_quickFixes = new[]
16+
_quickFixes = new CodeInspectionQuickFix[]
1717
{
1818
new PassParameterByReferenceQuickFix(target.Context, QualifiedSelection),
19+
new IgnoreOnceQuickFix(Context, QualifiedSelection, inspection.AnnotationName)
1920
};
2021
}
2122

RetailCoder.VBE/Inspections/EmptyStringLiteralInspection.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
2626
{
2727
return new InspectionResultBase[] { };
2828
}
29-
return ParseTreeResults.EmptyStringLiterals.Select(
30-
context => new EmptyStringLiteralInspectionResult(this,
29+
return ParseTreeResults.EmptyStringLiterals
30+
.Where(s => !IsInspectionDisabled(s.ModuleName.Component, s.Context.Start.Line))
31+
.Select(context => new EmptyStringLiteralInspectionResult(this,
3132
new QualifiedContext<ParserRuleContext>(context.ModuleName, context.Context)));
3233
}
3334

RetailCoder.VBE/Inspections/EmptyStringLiteralInspectionResult.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ public class EmptyStringLiteralInspectionResult : InspectionResultBase
1313
public EmptyStringLiteralInspectionResult(IInspection inspection, QualifiedContext<ParserRuleContext> qualifiedContext)
1414
: base(inspection, qualifiedContext.ModuleName, qualifiedContext.Context)
1515
{
16-
_quickFixes = new[]
16+
_quickFixes = new CodeInspectionQuickFix[]
1717
{
18-
new RepaceEmptyStringLiteralStatementQuickFix(Context, QualifiedSelection),
18+
new RepaceEmptyStringLiteralStatementQuickFix(Context, QualifiedSelection),
19+
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
1920
};
2021
}
2122

RetailCoder.VBE/Inspections/EncapsulatePublicFieldInspectionResult.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ public class EncapsulatePublicFieldInspectionResult : InspectionResultBase
1616
public EncapsulatePublicFieldInspectionResult(IInspection inspection, Declaration target, RubberduckParserState state)
1717
: base(inspection, target)
1818
{
19-
_quickFixes = new[]
19+
_quickFixes = new CodeInspectionQuickFix[]
2020
{
2121
new EncapsulateFieldQuickFix(target.Context, target.QualifiedSelection, target, state),
22+
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
2223
};
2324
}
2425

RetailCoder.VBE/Inspections/FunctionReturnValueNotUsedInspectionResult.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ public FunctionReturnValueNotUsedInspectionResult(
3434
var root = new ConvertToProcedureQuickFix(context, QualifiedSelection, returnStatements);
3535
var compositeFix = new CompositeCodeInspectionFix(root);
3636
children.ToList().ForEach(child => compositeFix.AddChild(new ConvertToProcedureQuickFix(child.Item1, child.Item2, child.Item3)));
37-
_quickFixes = new[]
37+
_quickFixes = new CodeInspectionQuickFix[]
3838
{
39-
compositeFix
39+
compositeFix,
40+
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
4041
};
4142
}
4243

RetailCoder.VBE/Inspections/ImplicitByRefParameterInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
2626

2727
var issues = (from item in UserDeclarations
2828
where
29-
!item.IsInspectionDisabled(AnnotationName)
29+
!IsInspectionDisabled(item, AnnotationName)
3030
&& item.DeclarationType == DeclarationType.Parameter
3131
// ParamArray parameters do not allow an explicit "ByRef" parameter mechanism.
3232
&& !((ParameterDeclaration)item).IsParamArray

RetailCoder.VBE/Inspections/ImplicitPublicMemberInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public ImplicitPublicMemberInspection(RubberduckParserState state)
3030
public override IEnumerable<InspectionResultBase> GetInspectionResults()
3131
{
3232
var issues = from item in UserDeclarations
33-
where !item.IsInspectionDisabled(AnnotationName)
33+
where !IsInspectionDisabled(item, AnnotationName)
3434
&& ProcedureTypes.Contains(item.DeclarationType)
3535
&& item.Accessibility == Accessibility.Implicit
3636
let context = new QualifiedContext<ParserRuleContext>(item.QualifiedName, item.Context)

RetailCoder.VBE/Inspections/ImplicitVariantReturnTypeInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public ImplicitVariantReturnTypeInspection(RubberduckParserState state)
2828
public override IEnumerable<InspectionResultBase> GetInspectionResults()
2929
{
3030
var issues = from item in UserDeclarations
31-
where !item.IsInspectionDisabled(AnnotationName)
31+
where !IsInspectionDisabled(item, AnnotationName)
3232
&& ProcedureTypes.Contains(item.DeclarationType)
3333
&& !item.IsTypeSpecified
3434
let issue = new {Declaration = item, QualifiedContext = new QualifiedContext<ParserRuleContext>(item.QualifiedName, item.Context)}

RetailCoder.VBE/Inspections/InspectionBase.cs

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using Microsoft.Vbe.Interop;
5+
using Rubberduck.Parsing.Annotations;
46
using Rubberduck.Parsing.Symbols;
57
using Rubberduck.Parsing.VBA;
68

@@ -73,20 +75,56 @@ protected InspectionBase(RubberduckParserState state, CodeInspectionSeverity def
7375
/// </summary>
7476
protected virtual IEnumerable<Declaration> Declarations
7577
{
76-
get { return State.AllDeclarations.Where(declaration => !declaration.IsInspectionDisabled(AnnotationName)); }
78+
get { return State.AllDeclarations.Where(declaration => !IsInspectionDisabled(declaration, AnnotationName)); }
79+
}
80+
81+
/// <summary>
82+
/// Gets all user declarations in the parser state without an @Ignore annotation for this inspection.
83+
/// </summary>
84+
protected virtual IEnumerable<Declaration> UserDeclarations
85+
{
86+
get { return State.AllUserDeclarations.Where(declaration => !IsInspectionDisabled(declaration, AnnotationName)); }
7787
}
7888

7989
protected virtual IEnumerable<Declaration> BuiltInDeclarations
8090
{
8191
get { return State.AllDeclarations.Where(declaration => declaration.IsBuiltIn); }
8292
}
8393

84-
/// <summary>
85-
/// Gets all user declarations in the parser state without an @Ignore annotation for this inspection.
86-
/// </summary>
87-
protected virtual IEnumerable<Declaration> UserDeclarations
94+
protected bool IsInspectionDisabled(VBComponent component, int line)
8895
{
89-
get { return State.AllUserDeclarations.Where(declaration => !declaration.IsInspectionDisabled(AnnotationName)); }
96+
var annotations = State.GetModuleAnnotations(component).ToList();
97+
98+
if (State.GetModuleAnnotations(component) == null)
99+
{
100+
return false;
101+
}
102+
103+
// VBE 1-based indexing
104+
for (var i = line - 1; i >= 1; i--)
105+
{
106+
var annotation = annotations.SingleOrDefault(a => a.QualifiedSelection.Selection.StartLine == i) as IgnoreAnnotation;
107+
if (annotation != null && annotation.InspectionNames.Contains(AnnotationName))
108+
{
109+
return true;
110+
}
111+
}
112+
113+
return false;
114+
}
115+
116+
protected bool IsInspectionDisabled(Declaration declaration, string inspectionName)
117+
{
118+
if (declaration.DeclarationType == DeclarationType.Parameter)
119+
{
120+
return declaration.ParentDeclaration.Annotations.Any(annotation =>
121+
annotation.AnnotationType == AnnotationType.Ignore
122+
&& ((IgnoreAnnotation)annotation).IsIgnored(inspectionName));
123+
}
124+
125+
return declaration.Annotations.Any(annotation =>
126+
annotation.AnnotationType == AnnotationType.Ignore
127+
&& ((IgnoreAnnotation)annotation).IsIgnored(inspectionName));
90128
}
91129

92130
public int CompareTo(IInspection other)

RetailCoder.VBE/Inspections/MoveFieldCloserToUsageInspectionResult.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ public class MoveFieldCloserToUsageInspectionResult : InspectionResultBase
1515
public MoveFieldCloserToUsageInspectionResult(IInspection inspection, Declaration target, RubberduckParserState state, IMessageBox messageBox)
1616
: base(inspection, target)
1717
{
18-
_quickFixes = new[]
18+
_quickFixes = new CodeInspectionQuickFix[]
1919
{
2020
new MoveFieldCloserToUsageQuickFix(target.Context, target.QualifiedSelection, target, state, messageBox),
21+
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
2122
};
2223
}
2324

RetailCoder.VBE/Inspections/MultilineParameterInspectionResult.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ public class MultilineParameterInspectionResult : InspectionResultBase
1212
public MultilineParameterInspectionResult(IInspection inspection, Declaration target)
1313
: base(inspection, target)
1414
{
15-
_quickFixes = new[]
15+
_quickFixes = new CodeInspectionQuickFix[]
1616
{
17-
new MakeSingleLineParameterQuickFix(Context, QualifiedSelection),
17+
new MakeSingleLineParameterQuickFix(Context, QualifiedSelection),
18+
new IgnoreOnceQuickFix(Target.ParentDeclaration.Context, Target.ParentDeclaration.QualifiedSelection, Inspection.AnnotationName)
1819
};
1920
}
2021

RetailCoder.VBE/Inspections/MultipleDeclarationsInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public MultipleDeclarationsInspection(RubberduckParserState state)
2121
public override IEnumerable<InspectionResultBase> GetInspectionResults()
2222
{
2323
var issues = UserDeclarations
24-
.Where(item => !item.IsInspectionDisabled(AnnotationName))
24+
.Where(item => !IsInspectionDisabled(item, AnnotationName))
2525
.Where(item => item.DeclarationType == DeclarationType.Variable
2626
|| item.DeclarationType == DeclarationType.Constant)
2727
.GroupBy(variable => variable.Context.Parent as ParserRuleContext)

RetailCoder.VBE/Inspections/ObsoleteCallStatementInspection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using System.Linq;
23
using Rubberduck.Parsing;
34
using Rubberduck.Parsing.Grammar;
45
using Rubberduck.Parsing.VBA;
@@ -26,7 +27,7 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
2627

2728
var results = new List<ObsoleteCallStatementUsageInspectionResult>();
2829

29-
foreach (var context in ParseTreeResults.ObsoleteCallContexts)
30+
foreach (var context in ParseTreeResults.ObsoleteCallContexts.Where(o => !IsInspectionDisabled(o.ModuleName.Component, o.Context.Start.Line)))
3031
{
3132
var lines = context.ModuleName.Component.CodeModule.Lines[
3233
context.Context.Start.Line, context.Context.Stop.Line - context.Context.Start.Line + 1];

RetailCoder.VBE/Inspections/ObsoleteCommentSyntaxInspection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ public ObsoleteCommentSyntaxInspection(RubberduckParserState state)
2121

2222
public override IEnumerable<InspectionResultBase> GetInspectionResults()
2323
{
24-
return State.AllComments.Where(comment => comment.Marker == Tokens.Rem)
24+
return State.AllComments.Where(comment => comment.Marker == Tokens.Rem &&
25+
!IsInspectionDisabled(comment.QualifiedSelection.QualifiedName.Component, comment.QualifiedSelection.Selection.StartLine))
2526
.Select(comment => new ObsoleteCommentSyntaxInspectionResult(this, comment));
2627
}
2728
}

RetailCoder.VBE/Inspections/ObsoleteLetStatementInspection.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
2525
{
2626
return new InspectionResultBase[] { };
2727
}
28-
return ParseTreeResults.ObsoleteLetContexts.Select(context =>
29-
new ObsoleteLetStatementUsageInspectionResult(this, new QualifiedContext<ParserRuleContext>(context.ModuleName, context.Context)));
28+
return ParseTreeResults.ObsoleteLetContexts
29+
.Where(o => !IsInspectionDisabled(o.ModuleName.Component, o.Context.Start.Line))
30+
.Select(context => new ObsoleteLetStatementUsageInspectionResult(this, new QualifiedContext<ParserRuleContext>(context.ModuleName, context.Context)));
3031
}
3132

3233
public class ObsoleteLetStatementListener : VBAParserBaseListener

RetailCoder.VBE/Inspections/OptionBaseInspectionResult.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Collections.Generic;
12
using Rubberduck.Parsing.Grammar;
23
using Rubberduck.Parsing.Symbols;
34
using Rubberduck.VBEditor;
@@ -11,6 +12,17 @@ public OptionBaseInspectionResult(IInspection inspection, QualifiedModuleName qu
1112
{
1213
}
1314

15+
public override IEnumerable<CodeInspectionQuickFix> QuickFixes
16+
{
17+
get
18+
{
19+
return new CodeInspectionQuickFix[]
20+
{
21+
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
22+
};
23+
}
24+
}
25+
1426
public override string Description
1527
{
1628
get { return string.Format(Inspection.Description, QualifiedName.ComponentName); }

RetailCoder.VBE/Inspections/ParameterCanBeByValInspectionResult.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ public class ParameterCanBeByValInspectionResult : InspectionResultBase
1313
public ParameterCanBeByValInspectionResult(IInspection inspection, Declaration target, ParserRuleContext context, QualifiedMemberName qualifiedName)
1414
: base(inspection, qualifiedName.QualifiedModuleName, context, target)
1515
{
16-
_quickFixes = new[]
16+
_quickFixes = new CodeInspectionQuickFix[]
1717
{
18-
new PassParameterByValueQuickFix(Context, QualifiedSelection),
18+
new PassParameterByValueQuickFix(Context, QualifiedSelection),
19+
new IgnoreOnceQuickFix(Context, QualifiedSelection, inspection.AnnotationName)
1920
};
2021
}
2122

RetailCoder.VBE/Inspections/ProcedureNotUsedInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
4646

4747
var items = declarations
4848
.Where(item => !IsIgnoredDeclaration(declarations, item, handlers, classes, modules)
49-
&& !item.IsInspectionDisabled(AnnotationName)).ToList();
49+
&& !IsInspectionDisabled(item, AnnotationName)).ToList();
5050
var issues = items.Select(issue => new IdentifierNotUsedInspectionResult(this, issue, issue.Context, issue.QualifiedName.QualifiedModuleName));
5151

5252
issues = DocumentNames.DocumentEventHandlerPrefixes.Aggregate(issues, (current, item) => current.Where(issue => !issue.Description.Contains("'" + item)));

RetailCoder.VBE/Inspections/ProcedureShouldBeFunctionInspectionResult.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ public ProcedureShouldBeFunctionInspectionResult(IInspection inspection, Rubberd
2222
declaration.DeclarationType == DeclarationType.Procedure
2323
&& declaration.Context == subStmtQualifiedContext.Context);
2424

25-
_quickFixes = new[]
25+
_quickFixes = new CodeInspectionQuickFix[]
2626
{
27-
new ChangeProcedureToFunction(state, argListQualifiedContext, subStmtQualifiedContext, QualifiedSelection),
27+
new ChangeProcedureToFunction(state, argListQualifiedContext, subStmtQualifiedContext, QualifiedSelection),
28+
new IgnoreOnceQuickFix(Context, QualifiedSelection, inspection.AnnotationName)
2829
};
2930
}
3031

RetailCoder.VBE/Inspections/SelfAssignedDeclarationInspectionResult.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Rubberduck.Parsing.Symbols;
1+
using System.Collections.Generic;
2+
using Rubberduck.Parsing.Symbols;
23

34
namespace Rubberduck.Inspections
45
{
@@ -9,6 +10,17 @@ public SelfAssignedDeclarationInspectionResult(IInspection inspection, Declarati
910
{
1011
}
1112

13+
public override IEnumerable<CodeInspectionQuickFix> QuickFixes
14+
{
15+
get
16+
{
17+
return new CodeInspectionQuickFix[]
18+
{
19+
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
20+
};
21+
}
22+
}
23+
1224
public override string Description
1325
{
1426
get

RetailCoder.VBE/Inspections/UntypedFunctionUsageInspection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
4848
item.Scope.StartsWith("VBE7.DLL;"));
4949

5050
return declarations.SelectMany(declaration => declaration.References
51-
.Where(item => _tokens.Contains(item.IdentifierName))
51+
.Where(item => _tokens.Contains(item.IdentifierName) &&
52+
!IsInspectionDisabled(item.QualifiedModuleName.Component, item.Selection.StartLine))
5253
.Select(item => new UntypedFunctionUsageInspectionResult(this, item)));
5354
}
5455
}

RetailCoder.VBE/Inspections/WriteOnlyPropertyInspection.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,15 @@ public override string Description
4848
get { return string.Format(InspectionsUI.WriteOnlyPropertyInspectionResultFormat, Target.IdentifierName); }
4949
}
5050

51-
// todo: override quickfixes
52-
//public override IEnumerable<CodeInspectionQuickFix> QuickFixes { get; private set; }
51+
public override IEnumerable<CodeInspectionQuickFix> QuickFixes
52+
{
53+
get
54+
{
55+
return new CodeInspectionQuickFix[]
56+
{
57+
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
58+
};
59+
}
60+
}
5361
}
5462
}

RetailCoder.VBE/UI/Command/MenuItems/RegexAssistantCommand.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
using NLog;
1+
using System.Runtime.InteropServices;
2+
using NLog;
23
using Rubberduck.UI.RegexAssistant;
3-
using System.Runtime.InteropServices;
44

5-
namespace Rubberduck.UI.Command
5+
namespace Rubberduck.UI.Command.MenuItems
66
{
77
/// <summary>
88
/// A command that displays the RegexAssistantDialog

0 commit comments

Comments
 (0)