Skip to content

Commit 35cb948

Browse files
authored
Merge pull request #5531 from MDoerner/RedesignOfQuickFixApplication
Redesign of quickfix application mechanics.
2 parents 9dd34c5 + 4e2f8ed commit 35cb948

File tree

76 files changed

+835
-302
lines changed

Some content is hidden

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

76 files changed

+835
-302
lines changed

Rubberduck.CodeAnalysis/QuickFixes/Abstract/QuickFixBase.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,10 @@ public void RemoveInspections(params Type[] inspections)
5757
public abstract void Fix(IInspectionResult result, IRewriteSession rewriteSession);
5858
public abstract string Description(IInspectionResult result);
5959

60+
public abstract bool CanFixMultiple { get; }
6061
public abstract bool CanFixInProcedure { get; }
6162
public abstract bool CanFixInModule { get; }
6263
public abstract bool CanFixInProject { get; }
64+
public abstract bool CanFixAll { get; }
6365
}
6466
}

Rubberduck.CodeAnalysis/QuickFixes/Abstract/RefactoringQuickFixBase.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
3939

4040
protected abstract void Refactor(IInspectionResult result);
4141

42+
public override bool CanFixMultiple => false;
4243
public override bool CanFixInProcedure => false;
4344
public override bool CanFixInModule => false;
4445
public override bool CanFixInProject => false;
46+
public override bool CanFixAll => false;
4547
}
4648
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/AccessSheetUsingCodeNameQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1717
/// <inspections>
1818
/// <inspection name="SheetAccessedUsingStringInspection" />
1919
/// </inspections>
20-
/// <canfix procedure="true" module="true" project="true" />
20+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true" />
2121
/// <example>
2222
/// <before>
2323
/// <![CDATA[
@@ -111,8 +111,10 @@ public override string Description(IInspectionResult result)
111111
return Resources.Inspections.QuickFixes.AccessSheetUsingCodeNameQuickFix;
112112
}
113113

114+
public override bool CanFixMultiple => true;
114115
public override bool CanFixInProcedure => true;
115116
public override bool CanFixInModule => true;
116117
public override bool CanFixInProject => true;
118+
public override bool CanFixAll => true;
117119
}
118120
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/AddAttributeAnnotationQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1616
/// <inspection name="MissingModuleAnnotationInspection" />
1717
/// <inspection name="MissingMemberAnnotationInspection" />
1818
/// </inspections>
19-
/// <canfix procedure="true" module="true" project="true" />
19+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true"/>
2020
/// <example>
2121
/// <before>
2222
/// <![CDATA[
@@ -79,8 +79,10 @@ private static string AttributeBaseName(string attributeName, Declaration declar
7979

8080
public override string Description(IInspectionResult result) => Resources.Inspections.QuickFixes.AddAttributeAnnotationQuickFix;
8181

82+
public override bool CanFixMultiple => true;
8283
public override bool CanFixInProcedure => true;
8384
public override bool CanFixInModule => true;
8485
public override bool CanFixInProject => true;
86+
public override bool CanFixAll => true;
8587
}
8688
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/AddIdentifierToWhiteListQuickFix.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1515
/// <inspection name="HungarianNotationInspection" />
1616
/// <inspection name="UseMeaningfulNameInspection" />
1717
/// </inspections>
18-
/// <canfix procedure="false" module="false" project="false" />
18+
/// <canfix multiple="true" procedure="false" module="false" project="false" all="false"/>
1919
internal sealed class AddIdentifierToWhiteListQuickFix : QuickFixBase
2020
{
2121
private readonly IConfigurationService<CodeInspectionSettings> _settings;
@@ -38,8 +38,10 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
3838

3939
public override string Description(IInspectionResult result) => Resources.Inspections.QuickFixes.WhiteListIdentifierQuickFix;
4040

41-
public override bool CanFixInProcedure { get; } = false;
42-
public override bool CanFixInModule { get; } = false;
43-
public override bool CanFixInProject { get; } = false;
41+
public override bool CanFixMultiple => true;
42+
public override bool CanFixInProcedure => false;
43+
public override bool CanFixInModule => false;
44+
public override bool CanFixInProject => false;
45+
public override bool CanFixAll => false;
4446
}
4547
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/AddMissingAttributeQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1515
/// <inspections>
1616
/// <inspection name="MissingAttributeInspection" />
1717
/// </inspections>
18-
/// <canfix procedure="true" module="true" project="true" />
18+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true" />
1919
/// <example>
2020
/// <before>
2121
/// <![CDATA[
@@ -77,8 +77,10 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
7777

7878
public override CodeKind TargetCodeKind => CodeKind.AttributesCode;
7979

80+
public override bool CanFixMultiple => true;
8081
public override bool CanFixInProcedure => true;
8182
public override bool CanFixInModule => true;
8283
public override bool CanFixInProject => true;
84+
public override bool CanFixAll => true;
8385
}
8486
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/AddStepOneQuickFix.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1313
/// <inspections>
1414
/// <inspection name="StepIsNotSpecifiedInspection" />
1515
/// </inspections>
16-
/// <canfix procedure="true" module="true" project="true" />
16+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true" />
1717
/// <example>
1818
/// <before>
1919
/// <![CDATA[
@@ -42,11 +42,11 @@ public AddStepOneQuickFix()
4242
: base(typeof(StepIsNotSpecifiedInspection))
4343
{}
4444

45+
public override bool CanFixMultiple => true;
4546
public override bool CanFixInProcedure => true;
46-
4747
public override bool CanFixInModule => true;
48-
4948
public override bool CanFixInProject => true;
49+
public override bool CanFixAll => true;
5050

5151
public override string Description(IInspectionResult result)
5252
{

Rubberduck.CodeAnalysis/QuickFixes/Concrete/AdjustAttributeAnnotationQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1616
/// <inspections>
1717
/// <inspection name="AttributeValueOutOfSyncInspection" />
1818
/// </inspections>
19-
/// <canfix procedure="true" module="true" project="true" />
19+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true" />
2020
/// <example>
2121
/// <before>
2222
/// <![CDATA[
@@ -94,8 +94,10 @@ private static bool IsDefaultAttribute(ComponentType componentType, string attri
9494

9595
public override string Description(IInspectionResult result) => Resources.Inspections.QuickFixes.AdjustAttributeAnnotationQuickFix;
9696

97+
public override bool CanFixMultiple => true;
9798
public override bool CanFixInProcedure => true;
9899
public override bool CanFixInModule => true;
99100
public override bool CanFixInProject => true;
101+
public override bool CanFixAll => true;
100102
}
101103
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/AdjustAttributeValuesQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1717
/// <inspections>
1818
/// <inspection name="AttributeValueOutOfSyncInspection" />
1919
/// </inspections>
20-
/// <canfix procedure="true" module="true" project="true" />
20+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true" />
2121
/// <example>
2222
/// <before>
2323
/// <![CDATA[
@@ -89,8 +89,10 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
8989

9090
public override CodeKind TargetCodeKind => CodeKind.AttributesCode;
9191

92+
public override bool CanFixMultiple => true;
9293
public override bool CanFixInProcedure => true;
9394
public override bool CanFixInModule => true;
9495
public override bool CanFixInProject => true;
96+
public override bool CanFixAll => true;
9597
}
9698
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/ApplicationWorksheetFunctionQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1111
/// <inspections>
1212
/// <inspection name="ApplicationWorksheetFunctionInspection" />
1313
/// </inspections>
14-
/// <canfix procedure="true" module="true" project="true" />
14+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true" />
1515
/// <example>
1616
/// <before>
1717
/// <![CDATA[
@@ -42,8 +42,10 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
4242

4343
public override string Description(IInspectionResult result) => Resources.Inspections.QuickFixes.ApplicationWorksheetFunctionQuickFix;
4444

45+
public override bool CanFixMultiple => true;
4546
public override bool CanFixInProcedure => true;
4647
public override bool CanFixInModule => true;
4748
public override bool CanFixInProject => true;
49+
public override bool CanFixAll => true;
4850
}
4951
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/AssignedByValParameterMakeLocalCopyQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
2323
/// <inspections>
2424
/// <inspection name="AssignedByValParameterInspection" />
2525
/// </inspections>
26-
/// <canfix procedure="true" module="true" project="true" />
26+
/// <canfix multiple="false" procedure="false" module="false" project="false" all="false" />
2727
/// <example>
2828
/// <before>
2929
/// <![CDATA[
@@ -79,9 +79,11 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
7979

8080
public override string Description(IInspectionResult result) => Resources.Inspections.QuickFixes.AssignedByValParameterMakeLocalCopyQuickFix;
8181

82+
public override bool CanFixMultiple => false;
8283
public override bool CanFixInProcedure => false;
8384
public override bool CanFixInModule => false;
8485
public override bool CanFixInProject => false;
86+
public override bool CanFixAll => false;
8587

8688
private string PromptForLocalVariableName(Declaration target)
8789
{

Rubberduck.CodeAnalysis/QuickFixes/Concrete/ChangeDimToPrivateQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1212
/// <inspections>
1313
/// <inspection name="ModuleScopeDimKeywordInspection" />
1414
/// </inspections>
15-
/// <canfix procedure="false" module="true" project="true" />
15+
/// <canfix multiple="true" procedure="false" module="true" project="true" all="true" />
1616
/// <example>
1717
/// <before>
1818
/// <![CDATA[
@@ -49,8 +49,10 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
4949

5050
public override string Description(IInspectionResult result) => Resources.Inspections.QuickFixes.ChangeDimToPrivateQuickFix;
5151

52+
public override bool CanFixMultiple => true;
5253
public override bool CanFixInProcedure => false;
5354
public override bool CanFixInModule => true;
5455
public override bool CanFixInProject => true;
56+
public override bool CanFixAll => true;
5557
}
5658
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/ChangeIntegerToLongQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1919
/// <inspections>
2020
/// <inspection name="IntegerDataTypeInspection" />
2121
/// </inspections>
22-
/// <canfix procedure="true" module="true" project="true" />
22+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true" />
2323
/// <example>
2424
/// <before>
2525
/// <![CDATA[
@@ -196,9 +196,11 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
196196

197197
public override string Description(IInspectionResult result) => Resources.Inspections.QuickFixes.IntegerDataTypeQuickFix;
198198

199+
public override bool CanFixMultiple => true;
199200
public override bool CanFixInProcedure => true;
200201
public override bool CanFixInModule => true;
201202
public override bool CanFixInProject => true;
203+
public override bool CanFixAll => true;
202204

203205
private static int GetParameterIndex(VBAParser.ArgContext context)
204206
{

Rubberduck.CodeAnalysis/QuickFixes/Concrete/ChangeProcedureToFunctionQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1717
/// <inspections>
1818
/// <inspection name="ProcedureCanBeWrittenAsFunctionInspection" />
1919
/// </inspections>
20-
/// <canfix procedure="false" module="false" project="false" />
20+
/// <canfix multiple="true" procedure="false" module="false" project="false" all="false" />
2121
/// <example>
2222
/// <before>
2323
/// <![CDATA[
@@ -107,8 +107,10 @@ private void UpdateCall(IdentifierReference reference, int argIndex, IRewriteSes
107107
rewriter.InsertAfter(argListContext.Stop.TokenIndex, ")");
108108
}
109109

110+
public override bool CanFixMultiple => true;
110111
public override bool CanFixInProcedure => false;
111112
public override bool CanFixInModule => false;
112113
public override bool CanFixInProject => false;
114+
public override bool CanFixAll => false;
113115
}
114116
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/ConvertToProcedureQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1919
/// <inspection name="NonReturningFunctionInspection" />
2020
/// <inspection name="FunctionReturnValueNotUsedInspection" />
2121
/// </inspections>
22-
/// <canfix procedure="false" module="true" project="false" />
22+
/// <canfix multiple="true" procedure="false" module="true" project="false" all="false" />
2323
/// <example>
2424
/// <before>
2525
/// <![CDATA[
@@ -182,9 +182,11 @@ private static void ConvertExitPropertyStatements(VBAParser.PropertyGetStmtConte
182182

183183
public override string Description(IInspectionResult result) => Resources.Inspections.QuickFixes.ConvertFunctionToProcedureQuickFix;
184184

185+
public override bool CanFixMultiple => true;
185186
public override bool CanFixInProcedure => false;
186187
public override bool CanFixInModule => true;
187188
public override bool CanFixInProject => false;
189+
public override bool CanFixAll => false;
188190

189191
private IEnumerable<ParserRuleContext> GetReturnStatements(Declaration declaration)
190192
{

Rubberduck.CodeAnalysis/QuickFixes/Concrete/DeclareAsExplicitVariantQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
1313
/// <inspections>
1414
/// <inspection name="VariableTypeNotDeclaredInspection" />
1515
/// </inspections>
16-
/// <canfix procedure="true" module="true" project="true" />
16+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true" />
1717
/// <example>
1818
/// <before>
1919
/// <![CDATA[
@@ -53,8 +53,10 @@ result.Context is VBAParser.VariableSubStmtContext || result.Context is VBAParse
5353

5454
public override string Description(IInspectionResult result) => Resources.Inspections.QuickFixes.DeclareAsExplicitVariantQuickFix;
5555

56+
public override bool CanFixMultiple => true;
5657
public override bool CanFixInProcedure => true;
5758
public override bool CanFixInModule => true;
5859
public override bool CanFixInProject => true;
60+
public override bool CanFixAll => true;
5961
}
6062
}

Rubberduck.CodeAnalysis/QuickFixes/Concrete/ExpandBangNotationQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
2020
/// <inspection name="UseOfBangNotationInspection" />
2121
/// <inspection name="UseOfRecursiveBangNotationInspection" />
2222
/// </inspections>
23-
/// <canfix procedure="true" module="true" project="true" />
23+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true" />
2424
/// <example>
2525
/// <before>
2626
/// <![CDATA[
@@ -126,9 +126,11 @@ public override string Description(IInspectionResult result)
126126
return Resources.Inspections.QuickFixes.ExpandBangNotationQuickFix;
127127
}
128128

129+
public override bool CanFixMultiple => true;
129130
public override bool CanFixInProcedure => true;
130131
public override bool CanFixInModule => true;
131132
public override bool CanFixInProject => true;
133+
public override bool CanFixAll => true;
132134

133135
private string NonIdentifierCharacters = "[](){}\r\n\t.,'\"\\ |!@#$%^&*-+:=; ";
134136
private string AdditionalNonFirstIdentifierCharacters = "0123456789_";

Rubberduck.CodeAnalysis/QuickFixes/Concrete/ExpandDefaultMemberQuickFix.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace Rubberduck.CodeAnalysis.QuickFixes.Concrete
2424
/// <inspection name="ImplicitRecursiveDefaultMemberAccessInspection" />
2525
/// <inspection name="SuspiciousLetAssignmentInspection" />
2626
/// </inspections>
27-
/// <canfix procedure="true" module="true" project="true" />
27+
/// <canfix multiple="true" procedure="true" module="true" project="true" all="true" />
2828
/// <example>
2929
/// <before>
3030
/// <![CDATA[
@@ -170,9 +170,11 @@ public override string Description(IInspectionResult result)
170170
return Resources.Inspections.QuickFixes.ExpandDefaultMemberQuickFix;
171171
}
172172

173+
public override bool CanFixMultiple => true;
173174
public override bool CanFixInProcedure => true;
174175
public override bool CanFixInModule => true;
175176
public override bool CanFixInProject => true;
177+
public override bool CanFixAll => true;
176178

177179
private string NonIdentifierCharacters = "[](){}\r\n\t.,'\"\\ |!@#$%^&*-+:=; ";
178180
private string AdditionalNonFirstIdentifierCharacters = "0123456789_";

0 commit comments

Comments
 (0)