Skip to content

Commit 9ea89cc

Browse files
committed
Add a bunch of ignoreonce's to inspection quick fixes
1 parent 675c07c commit 9ea89cc

12 files changed

+83
-18
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: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
using System.Collections.Generic;
22
using System.Linq;
33
using Antlr4.Runtime;
4+
using Microsoft.Vbe.Interop;
45
using Rubberduck.Parsing;
6+
using Rubberduck.Parsing.Annotations;
57
using Rubberduck.Parsing.VBA;
68
using Rubberduck.Parsing.Grammar;
79

@@ -26,11 +28,34 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
2628
{
2729
return new InspectionResultBase[] { };
2830
}
29-
return ParseTreeResults.EmptyStringLiterals.Select(
30-
context => new EmptyStringLiteralInspectionResult(this,
31+
return ParseTreeResults.EmptyStringLiterals
32+
.Where(s => !HasIgnoreEmptyStringLiteralAnnotations(s.ModuleName.Component, s.Context.Start.Line))
33+
.Select(context => new EmptyStringLiteralInspectionResult(this,
3134
new QualifiedContext<ParserRuleContext>(context.ModuleName, context.Context)));
3235
}
3336

37+
private bool HasIgnoreEmptyStringLiteralAnnotations(VBComponent component, int line)
38+
{
39+
var annotations = State.GetModuleAnnotations(component).ToList();
40+
41+
if (State.GetModuleAnnotations(component) == null)
42+
{
43+
return false;
44+
}
45+
46+
// VBE 1-based indexing
47+
for (var i = line - 1; i >= 1; i--)
48+
{
49+
var annotation = annotations.SingleOrDefault(a => a.QualifiedSelection.Selection.StartLine == i) as IgnoreAnnotation;
50+
if (annotation != null && annotation.InspectionNames.Contains(AnnotationName))
51+
{
52+
return true;
53+
}
54+
}
55+
56+
return false;
57+
}
58+
3459
public class EmptyStringLiteralListener : VBAParserBaseListener
3560
{
3661
private readonly IList<VBAParser.LiteralExpressionContext> _contexts = new List<VBAParser.LiteralExpressionContext>();

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/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(Context, QualifiedSelection, Inspection.AnnotationName)
1819
};
1920
}
2021

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/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

0 commit comments

Comments
 (0)