Skip to content

Commit cd6d4d2

Browse files
authored
Merge pull request #2115 from comintern/next
Remove IEnumerable<IInspection> dependency from CodeInspectionSettings
2 parents b017124 + f9cbca9 commit cd6d4d2

File tree

6 files changed

+63
-49
lines changed

6 files changed

+63
-49
lines changed
Lines changed: 47 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,35 @@
11
using System.Collections.Generic;
2-
using System.Linq;
32
using Rubberduck.Inspections;
43
using Rubberduck.SettingsProvider;
54

65
namespace Rubberduck.Settings
76
{
87
public interface ICodeInspectionConfigProvider
98
{
10-
CodeInspectionSettings Create(IEnumerable<IInspection> inspections);
9+
CodeInspectionSettings Create();
1110
CodeInspectionSettings CreateDefaults();
1211
void Save(CodeInspectionSettings settings);
1312
}
1413

1514
public class CodeInspectionConfigProvider : ICodeInspectionConfigProvider
1615
{
1716
private readonly IPersistanceService<CodeInspectionSettings> _persister;
18-
private IEnumerable<IInspection> _inspections;
1917

2018
public CodeInspectionConfigProvider(IPersistanceService<CodeInspectionSettings> persister)
2119
{
2220
_persister = persister;
2321
}
2422

25-
public CodeInspectionSettings Create(IEnumerable<IInspection> inspections)
23+
public CodeInspectionSettings Create()
2624
{
27-
if (inspections == null) return null;
28-
29-
_inspections = inspections;
30-
var prototype = new CodeInspectionSettings(GetDefaultCodeInspections(), new WhitelistedIdentifierSetting[] {});
31-
return _persister.Load(prototype) ?? prototype;
25+
var prototype = new CodeInspectionSettings(GetDefaultCodeInspections(), new WhitelistedIdentifierSetting[] { });
26+
return _persister.Load(prototype) ?? prototype;
3227
}
3328

3429
public CodeInspectionSettings CreateDefaults()
3530
{
36-
//This sucks.
37-
return _inspections != null
38-
? new CodeInspectionSettings(GetDefaultCodeInspections(), new WhitelistedIdentifierSetting[] {})
39-
: null;
31+
//This no longer sucks.
32+
return new CodeInspectionSettings(GetDefaultCodeInspections(), new WhitelistedIdentifierSetting[] {});
4033
}
4134

4235
public void Save(CodeInspectionSettings settings)
@@ -46,9 +39,47 @@ public void Save(CodeInspectionSettings settings)
4639

4740
public HashSet<CodeInspectionSetting> GetDefaultCodeInspections()
4841
{
49-
return new HashSet<CodeInspectionSetting>(_inspections.Select(x =>
50-
new CodeInspectionSetting(x.Name, x.Description, x.InspectionType, x.DefaultSeverity,
51-
x.DefaultSeverity)));
42+
//*This* sucks now.
43+
return new HashSet<CodeInspectionSetting>
44+
{
45+
new CodeInspectionSetting("ObjectVariableNotSetInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
46+
new CodeInspectionSetting("FunctionReturnValueNotUsedInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
47+
new CodeInspectionSetting("SelfAssignedDeclarationInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Hint, CodeInspectionSeverity.Hint),
48+
new CodeInspectionSetting("MoveFieldCloserToUsageInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
49+
new CodeInspectionSetting("EncapsulatePublicFieldInspection", string.Empty, CodeInspectionType.MaintainabilityAndReadabilityIssues, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
50+
new CodeInspectionSetting("EmptyStringLiteralInspection", string.Empty, CodeInspectionType.LanguageOpportunities, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
51+
new CodeInspectionSetting("ImplicitActiveSheetReferenceInspection", string.Empty, CodeInspectionType.MaintainabilityAndReadabilityIssues, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
52+
new CodeInspectionSetting("ImplicitActiveWorkbookReferenceInspection", string.Empty, CodeInspectionType.MaintainabilityAndReadabilityIssues, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
53+
new CodeInspectionSetting("MultipleFolderAnnotationsInspection", string.Empty, CodeInspectionType.MaintainabilityAndReadabilityIssues, CodeInspectionSeverity.Error, CodeInspectionSeverity.Error),
54+
new CodeInspectionSetting("ProcedureCanBeWrittenAsFunctionInspection", string.Empty, CodeInspectionType.LanguageOpportunities, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
55+
new CodeInspectionSetting("UseMeaningfulNameInspection", string.Empty, CodeInspectionType.MaintainabilityAndReadabilityIssues, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
56+
new CodeInspectionSetting("WriteOnlyPropertyInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
57+
new CodeInspectionSetting("UntypedFunctionUsageInspection", string.Empty, CodeInspectionType.LanguageOpportunities, CodeInspectionSeverity.Hint, CodeInspectionSeverity.Hint),
58+
new CodeInspectionSetting("AssignedByValParameterInspection", string.Empty, CodeInspectionType.LanguageOpportunities, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
59+
new CodeInspectionSetting("ConstantNotUsedInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
60+
new CodeInspectionSetting("DefaultProjectNameInspection", string.Empty, CodeInspectionType.MaintainabilityAndReadabilityIssues, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
61+
new CodeInspectionSetting("ImplicitPublicMemberInspection", string.Empty, CodeInspectionType.MaintainabilityAndReadabilityIssues, CodeInspectionSeverity.Hint, CodeInspectionSeverity.Hint),
62+
new CodeInspectionSetting("MultilineParameterInspection", string.Empty, CodeInspectionType.MaintainabilityAndReadabilityIssues, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
63+
new CodeInspectionSetting("NonReturningFunctionInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Error, CodeInspectionSeverity.Error),
64+
new CodeInspectionSetting("ObsoleteCallStatementInspection", string.Empty, CodeInspectionType.LanguageOpportunities, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
65+
new CodeInspectionSetting("ObsoleteGlobalInspection", string.Empty, CodeInspectionType.LanguageOpportunities, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
66+
new CodeInspectionSetting("ObsoleteLetStatementInspection", string.Empty, CodeInspectionType.LanguageOpportunities, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
67+
new CodeInspectionSetting("ObsoleteTypeHintInspection", string.Empty, CodeInspectionType.LanguageOpportunities, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
68+
new CodeInspectionSetting("OptionBaseInspection", string.Empty, CodeInspectionType.MaintainabilityAndReadabilityIssues, CodeInspectionSeverity.Hint, CodeInspectionSeverity.Hint),
69+
new CodeInspectionSetting("ParameterCanBeByValInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
70+
new CodeInspectionSetting("ParameterNotUsedInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
71+
new CodeInspectionSetting("ProcedureNotUsedInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
72+
new CodeInspectionSetting("UnassignedVariableUsageInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Error, CodeInspectionSeverity.Error),
73+
new CodeInspectionSetting("VariableNotUsedInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
74+
new CodeInspectionSetting("VariableNotAssignedInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
75+
new CodeInspectionSetting("ImplicitByRefParameterInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Hint, CodeInspectionSeverity.Hint),
76+
new CodeInspectionSetting("ImplicitVariantReturnTypeInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Hint, CodeInspectionSeverity.Hint),
77+
new CodeInspectionSetting("MultipleDeclarationsInspection", string.Empty, CodeInspectionType.MaintainabilityAndReadabilityIssues, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
78+
new CodeInspectionSetting("ObsoleteCommentSyntaxInspection", string.Empty, CodeInspectionType.LanguageOpportunities, CodeInspectionSeverity.Suggestion, CodeInspectionSeverity.Suggestion),
79+
new CodeInspectionSetting("OptionExplicitInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Error, CodeInspectionSeverity.Error),
80+
new CodeInspectionSetting("VariableTypeNotDeclaredInspection", string.Empty, CodeInspectionType.LanguageOpportunities, CodeInspectionSeverity.Warning, CodeInspectionSeverity.Warning),
81+
new CodeInspectionSetting("MalformedAnnotationInspection", string.Empty, CodeInspectionType.CodeQualityIssues, CodeInspectionSeverity.Error, CodeInspectionSeverity.Error)
82+
};
5283
}
5384
}
5485
}

RetailCoder.VBE/Settings/ConfigurationLoader.cs

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.Linq;
4-
using Rubberduck.Inspections;
53
using Rubberduck.SmartIndenter;
64

75
namespace Rubberduck.Settings
@@ -32,19 +30,15 @@ public class ConfigurationLoader : IGeneralConfigService
3230
private readonly IUnitTestConfigProvider _unitTestProvider;
3331
private readonly IIndenterConfigProvider _indenterProvider;
3432

35-
private readonly IEnumerable<IInspection> _inspections;
36-
3733
public ConfigurationLoader(IGeneralConfigProvider generalProvider, IHotkeyConfigProvider hotkeyProvider, IToDoListConfigProvider todoProvider,
38-
ICodeInspectionConfigProvider inspectionProvider, IUnitTestConfigProvider unitTestProvider, IIndenterConfigProvider indenterProvider,
39-
IEnumerable<IInspection> inspections)
34+
ICodeInspectionConfigProvider inspectionProvider, IUnitTestConfigProvider unitTestProvider, IIndenterConfigProvider indenterProvider)
4035
{
4136
_generalProvider = generalProvider;
4237
_hotkeyProvider = hotkeyProvider;
4338
_todoProvider = todoProvider;
4439
_inspectionProvider = inspectionProvider;
4540
_unitTestProvider = unitTestProvider;
4641
_indenterProvider = indenterProvider;
47-
_inspections = inspections;
4842
}
4943

5044
/// <summary>
@@ -59,32 +53,14 @@ public virtual Configuration LoadConfiguration()
5953
_generalProvider.Create(),
6054
_hotkeyProvider.Create(),
6155
_todoProvider.Create(),
62-
_inspectionProvider.Create(_inspections),
56+
_inspectionProvider.Create(),
6357
_unitTestProvider.Create(),
6458
_indenterProvider.Create()
6559
)
66-
};
67-
MergeImplementedInspectionsNotInConfig(config.UserSettings.CodeInspectionSettings);
60+
};
6861
return config;
6962
}
7063

71-
private void MergeImplementedInspectionsNotInConfig(ICodeInspectionSettings config)
72-
{
73-
foreach (var implementedInspection in _inspections)
74-
{
75-
var inspection = config.CodeInspections.SingleOrDefault(i => i.Name.Equals(implementedInspection.Name));
76-
if (inspection == null)
77-
{
78-
config.CodeInspections.Add(new CodeInspectionSetting(implementedInspection));
79-
}
80-
else
81-
{
82-
// description isn't serialized
83-
inspection.Description = implementedInspection.Description;
84-
}
85-
}
86-
}
87-
8864
public Configuration GetDefaultConfiguration()
8965
{
9066
return new Configuration
@@ -104,7 +80,7 @@ public Configuration GetDefaultConfiguration()
10480
public void SaveConfiguration(Configuration toSerialize)
10581
{
10682
var langChanged = _generalProvider.Create().Language.Code != toSerialize.UserSettings.GeneralSettings.Language.Code;
107-
var oldInspectionSettings = _inspectionProvider.Create(_inspections).CodeInspections.Select(s => Tuple.Create(s.Name, s.Severity));
83+
var oldInspectionSettings = _inspectionProvider.Create().CodeInspections.Select(s => Tuple.Create(s.Name, s.Severity));
10884
var newInspectionSettings = toSerialize.UserSettings.CodeInspectionSettings.CodeInspections.Select(s => Tuple.Create(s.Name, s.Severity));
10985

11086
_generalProvider.Save(toSerialize.UserSettings.GeneralSettings);

RetailCoder.VBE/UI/Command/FindSymbolCommand.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,17 @@ protected override void ExecuteImpl(object parameter)
3737
var viewModel = new FindSymbolViewModel(_state.AllDeclarations.Where(item => !item.IsBuiltIn), _iconCache);
3838
using (var view = new FindSymbolDialog(viewModel))
3939
{
40-
viewModel.Navigate += (sender, e) => { _navigateCommand.Execute(e); view.Hide(); };
40+
viewModel.Navigate += (sender, e) => { view.Hide(); };
41+
viewModel.Navigate += OnDialogNavigate;
4142
view.ShowDialog();
43+
_navigateCommand.Execute(_selected);
4244
}
4345
}
46+
47+
private NavigateCodeEventArgs _selected;
48+
private void OnDialogNavigate(object sender, NavigateCodeEventArgs e)
49+
{
50+
_selected = e;
51+
}
4452
}
4553
}

RetailCoder.VBE/UI/Settings/InspectionSettingsViewModel.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System.Collections.Generic;
22
using System.Collections.ObjectModel;
3-
using System.Globalization;
43
using System.Linq;
54
using System.Windows.Data;
65
using NLog;

RubberduckTests/CodeExplorer/CodeExplorerTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public void AddTestModule()
122122
var mockHost = new Mock<IHostApplication>();
123123
mockHost.SetupAllProperties();
124124

125-
var configLoader = new Mock<ConfigurationLoader>(null, null, null, null, null, null, null);
125+
var configLoader = new Mock<ConfigurationLoader>(null, null, null, null, null, null);
126126
configLoader.Setup(c => c.LoadConfiguration()).Returns(GetDefaultUnitTestConfig());
127127

128128
var state = new RubberduckParserState(new Mock<ISinks>().Object);
@@ -1385,7 +1385,7 @@ private IIndenterSettings GetDefaultIndenterSettings()
13851385

13861386
private ConfigurationLoader GetDelimiterConfigLoader()
13871387
{
1388-
var configLoader = new Mock<ConfigurationLoader>(null, null, null, null, null, null, null);
1388+
var configLoader = new Mock<ConfigurationLoader>(null, null, null, null, null, null);
13891389
configLoader.Setup(c => c.LoadConfiguration()).Returns(GetDelimiterConfig());
13901390

13911391
return configLoader.Object;

RubberduckTests/Inspections/ProcedureShouldBeFunctionInspectionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ public void ProcedureShouldBeFunction_DoesNotReturnsResult_MultipleByRefParams()
187187
End Sub";
188188

189189
//Arrange
190-
var settings = new Mock<ConfigurationLoader>(null, null, null, null, null, null, null);
190+
var settings = new Mock<ConfigurationLoader>(null, null, null, null, null, null);
191191
var config = GetTestConfig();
192192
settings.Setup(x => x.LoadConfiguration()).Returns(config);
193193

0 commit comments

Comments
 (0)