Skip to content

Commit 09222c6

Browse files
Aggregate exceptions in ParseSettingValueStringOrStrings(object, string) by adding IList<Exception> parameter
1 parent f43dc67 commit 09222c6

File tree

1 file changed

+41
-17
lines changed

1 file changed

+41
-17
lines changed

Engine/Settings.cs

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -252,13 +252,14 @@ private bool IsStringOrStringArray(object val)
252252
return val == null ? false : valArr.All(x => x is string);
253253
}
254254

255-
private List<string> ParseSettingValueStringOrStrings(object value, string settingName)
255+
private List<string> ParseSettingValueStringOrStrings(object value, string settingName, IList<Exception> exceptions)
256256
{
257257
if (value == null)
258258
{
259-
throw new InvalidDataException(string.Format(
259+
exceptions.Add(new InvalidDataException(string.Format(
260260
Strings.SettingValueIsNull,
261-
settingName));
261+
settingName)));
262+
return null;
262263
}
263264

264265
if (value is string)
@@ -268,9 +269,10 @@ private List<string> ParseSettingValueStringOrStrings(object value, string setti
268269

269270
if (!(value is ICollection))
270271
{
271-
throw new InvalidDataException(string.Format(
272+
exceptions.Add(new InvalidDataException(string.Format(
272273
Strings.SettingValueIsNotStringOrStringsType,
273-
settingName));
274+
settingName)));
275+
return null;
274276
}
275277
var values = value as ICollection;
276278

@@ -280,19 +282,21 @@ private List<string> ParseSettingValueStringOrStrings(object value, string setti
280282
{
281283
if (element is null)
282284
{
283-
throw new InvalidDataException(string.Format(
285+
exceptions.Add(new InvalidDataException(string.Format(
284286
Strings.SettingValueElementIsNull,
285287
settingName,
286-
elementIndex));
288+
elementIndex)));
289+
continue;
287290
}
288291

289292
if (!(element is string))
290293
{
291-
throw new InvalidDataException(string.Format(
294+
exceptions.Add(new InvalidDataException(string.Format(
292295
Strings.SettingValueElementIsNotStringType,
293296
settingName,
294297
elementIndex,
295-
element));
298+
element)));
299+
continue;
296300
}
297301
strings.Add(element as string);
298302

@@ -368,23 +372,43 @@ private void ParseSettingsHashtable(Hashtable settings)
368372
switch (settingName.ToLowerInvariant())
369373
{
370374
case "severity":
371-
// TODO Aggregate exceptions.
372-
this.severities = ParseSettingValueStringOrStrings(setting.Value, settingName);
375+
var maybeSeverity = ParseSettingValueStringOrStrings(setting.Value, settingName, exceptions);
376+
if (maybeSeverity is null)
377+
{
378+
continue;
379+
}
380+
381+
this.severities = maybeSeverity;
373382
break;
374383

375384
case "includerules":
376-
// TODO Aggregate exceptions.
377-
this.includeRules = ParseSettingValueStringOrStrings(setting.Value, settingName);
385+
var maybeIncludeRules = ParseSettingValueStringOrStrings(setting.Value, settingName, exceptions);
386+
if (maybeIncludeRules is null)
387+
{
388+
continue;
389+
}
390+
391+
this.includeRules = maybeIncludeRules;
378392
break;
379393

380394
case "excluderules":
381-
// TODO Aggregate exceptions.
382-
this.excludeRules = ParseSettingValueStringOrStrings(setting.Value, settingName);
395+
var maybeExcludeRules = ParseSettingValueStringOrStrings(setting.Value, settingName, exceptions);
396+
if (maybeExcludeRules is null)
397+
{
398+
continue;
399+
}
400+
401+
this.excludeRules = maybeExcludeRules;
383402
break;
384403

385404
case "customrulepath":
386-
// TODO Aggregate exceptions.
387-
this.customRulePath = ParseSettingValueStringOrStrings(setting.Value, settingName);
405+
var maybeCustomRulePath = ParseSettingValueStringOrStrings(setting.Value, settingName, exceptions);
406+
if (maybeCustomRulePath is null)
407+
{
408+
continue;
409+
}
410+
411+
this.customRulePath = maybeCustomRulePath;
388412
break;
389413

390414
case "includedefaultrules":

0 commit comments

Comments
 (0)