diff --git a/.editorconfig b/.editorconfig
index 88adceb6a..5fb6a86b8 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -73,7 +73,6 @@ max_line_length = 160
end_of_line = crlf
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
-[*.cs]
csharp_using_directive_placement = outside_namespace:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_prefer_braces = true:silent
@@ -91,6 +90,18 @@ csharp_style_expression_bodied_local_functions = false:silent
csharp_indent_labels = one_less_than_current
csharp_style_prefer_primary_constructors = false:suggestion
+# CA1848: Use the LoggerMessage delegates
+dotnet_diagnostic.CA1848.severity = none
+
+# CA1727: Use PascalCase for named placeholders
+dotnet_diagnostic.CA1727.severity = suggestion
+
+# CA2254: Template should be a static expression
+dotnet_diagnostic.CA2254.severity = none
+
+# CA1822: Mark members as static
+dotnet_diagnostic.CA1822.severity = suggestion
+
[Program.cs]
dotnet_diagnostic.CA1050.severity = none
dotnet_diagnostic.S1118.severity = none
diff --git a/Altinn3.ruleset b/Altinn3.ruleset
deleted file mode 100644
index 144dabf85..000000000
--- a/Altinn3.ruleset
+++ /dev/null
@@ -1,177 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Directory.Build.props b/Directory.Build.props
index 8ccd36190..7f5799428 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -5,6 +5,10 @@
latest
+ true
+ Minimum
+ strict
+
diff --git a/Settings.StyleCop b/Settings.StyleCop
deleted file mode 100644
index fd124ef02..000000000
--- a/Settings.StyleCop
+++ /dev/null
@@ -1,237 +0,0 @@
-
-
-
- preprocessor, pre-processor
- shortlived, short-lived
-
-
- altinn
- arbeidsgiveravgift
- aspx
- BankID
- brreg
- Buypass
- Commfides
- compat
- Compat.browser
- Creuna
- css
- dequeue
- Dequeue
- deserializing
- Determinator
- enum
- en-US
- formset
- Functoid
- ID-Porten
- js
- leveranse
- linq
- msdn
- oppgave
- orid
- participant
- Porten
- psa
- referer
- reportee
- sone
- ssn
- subform
- subforms
- virksomhet
- Winnovative
- xfd
- xsd
- Guid
- Api
- OAuth
- Auth
- mpcId
- mpc
- Sdp
- Difi
- Difis
- Rijndael
- eq
- orderby
- Oppgaveregister
- Seres
- reportees
-
- 10000
-
-
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
-
- a1
- as
- at
- d
- db
- dn
- do
- dr
- ds
- dt
- e
- e2
- er
- f
- fs
- go
- id
- if
- in
- ip
- is
- js
- li
- my
- no
- ns
- on
- or
- pi
- pv
- sa
- sb
- se
- si
- so
- sp
- tc
- to
- tr
- ui
- un
- wf
- ws
- x
- y
-
-
-
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Altinn.App.Api/Altinn.App.Api.csproj b/src/Altinn.App.Api/Altinn.App.Api.csproj
index 80c867601..c3f17fbab 100644
--- a/src/Altinn.App.Api/Altinn.App.Api.csproj
+++ b/src/Altinn.App.Api/Altinn.App.Api.csproj
@@ -26,29 +26,10 @@
-
-
- all
- runtime; build; native; contentfiles; analyzers
-
-
- stylecop.json
-
-
-
-
- ..\..\Altinn3.ruleset
-
-
-
- true
- $(NoWarn);1591
-
-
diff --git a/src/Altinn.App.Api/Controllers/DataController.cs b/src/Altinn.App.Api/Controllers/DataController.cs
index 3bd87dd4b..d1931c270 100644
--- a/src/Altinn.App.Api/Controllers/DataController.cs
+++ b/src/Altinn.App.Api/Controllers/DataController.cs
@@ -586,7 +586,7 @@ [FromRoute] Guid dataGuid
}
}
- private ActionResult ExceptionResponse(Exception exception, string message)
+ private ObjectResult ExceptionResponse(Exception exception, string message)
{
_logger.LogError(exception, message);
diff --git a/src/Altinn.App.Api/Controllers/DataTagsController.cs b/src/Altinn.App.Api/Controllers/DataTagsController.cs
index 2de8025fa..49b3cabcb 100644
--- a/src/Altinn.App.Api/Controllers/DataTagsController.cs
+++ b/src/Altinn.App.Api/Controllers/DataTagsController.cs
@@ -168,9 +168,8 @@ [FromRoute] string tag
return NotFound("Unable to find data element based on the given parameters.");
}
- if (dataElement.Tags.Contains(tag))
+ if (dataElement.Tags.Remove(tag))
{
- dataElement.Tags.Remove(tag);
await _dataClient.Update(instance, dataElement);
}
diff --git a/src/Altinn.App.Api/Controllers/InstancesController.cs b/src/Altinn.App.Api/Controllers/InstancesController.cs
index 257e04eb9..a32dfa55e 100644
--- a/src/Altinn.App.Api/Controllers/InstancesController.cs
+++ b/src/Altinn.App.Api/Controllers/InstancesController.cs
@@ -194,7 +194,7 @@ [FromQuery] int? instanceOwnerPartyId
MultipartRequestReader parsedRequest = new MultipartRequestReader(Request);
await parsedRequest.Read();
- if (parsedRequest.Errors.Any())
+ if (parsedRequest.Errors.Count != 0)
{
return BadRequest($"Error when reading content: {JsonConvert.SerializeObject(parsedRequest.Errors)}");
}
@@ -793,7 +793,7 @@ int instanceOwnerPartyId
List activeInstances = await _instanceClient.GetInstances(queryParams);
- if (!activeInstances.Any())
+ if (activeInstances.Count == 0)
{
return Ok(new List());
}
diff --git a/src/Altinn.App.Api/Controllers/ProcessController.cs b/src/Altinn.App.Api/Controllers/ProcessController.cs
index 0d4828b5b..190ed80c5 100644
--- a/src/Altinn.App.Api/Controllers/ProcessController.cs
+++ b/src/Altinn.App.Api/Controllers/ProcessController.cs
@@ -631,7 +631,7 @@ private async Task ConvertAndAuthorizeActions(Instance instance
return appProcessState;
}
- private ActionResult ExceptionResponse(Exception exception, string message)
+ private ObjectResult ExceptionResponse(Exception exception, string message)
{
_logger.LogError(exception, message);
diff --git a/src/Altinn.App.Api/Helpers/RequestHandling/MultipartRequestReader.cs b/src/Altinn.App.Api/Helpers/RequestHandling/MultipartRequestReader.cs
index 224d46b1c..e9d53242a 100644
--- a/src/Altinn.App.Api/Helpers/RequestHandling/MultipartRequestReader.cs
+++ b/src/Altinn.App.Api/Helpers/RequestHandling/MultipartRequestReader.cs
@@ -30,7 +30,7 @@ public bool IsMultipart
get
{
return !string.IsNullOrEmpty(request.ContentType)
- && request.ContentType.IndexOf("multipart/", StringComparison.OrdinalIgnoreCase) >= 0;
+ && request.ContentType.Contains("multipart/", StringComparison.OrdinalIgnoreCase);
}
}
diff --git a/src/Altinn.App.Api/Infrastructure/Filters/ValidateAntiforgeryTokenIfAuthCookieAuthorizationFilter.cs b/src/Altinn.App.Api/Infrastructure/Filters/ValidateAntiforgeryTokenIfAuthCookieAuthorizationFilter.cs
index fe6023452..6f305dc93 100644
--- a/src/Altinn.App.Api/Infrastructure/Filters/ValidateAntiforgeryTokenIfAuthCookieAuthorizationFilter.cs
+++ b/src/Altinn.App.Api/Infrastructure/Filters/ValidateAntiforgeryTokenIfAuthCookieAuthorizationFilter.cs
@@ -27,10 +27,7 @@ public ValidateAntiforgeryTokenIfAuthCookieAuthorizationFilter(
IOptionsMonitor settings
)
{
- if (antiforgery == null)
- {
- throw new ArgumentNullException(nameof(antiforgery));
- }
+ ArgumentNullException.ThrowIfNull(antiforgery);
_antiforgery = antiforgery;
_settings = settings.CurrentValue;
@@ -64,10 +61,7 @@ public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
/// True if validation is needed.
protected virtual bool ShouldValidate(AuthorizationFilterContext context)
{
- if (context == null)
- {
- throw new ArgumentNullException(nameof(context));
- }
+ ArgumentNullException.ThrowIfNull(context);
string method = context.HttpContext.Request.Method;
if (
diff --git a/src/Altinn.App.Core/EFormidling/Implementation/EformidlingStatusCheckEventHandler.cs b/src/Altinn.App.Core/EFormidling/Implementation/EformidlingStatusCheckEventHandler.cs
index 00cc4b75c..6a704f3ec 100644
--- a/src/Altinn.App.Core/EFormidling/Implementation/EformidlingStatusCheckEventHandler.cs
+++ b/src/Altinn.App.Core/EFormidling/Implementation/EformidlingStatusCheckEventHandler.cs
@@ -223,8 +223,10 @@ private async Task GetStatusesForShipment(string shipmentId)
private static bool MessageDeliveredToKS(Statuses statuses)
{
- return statuses.Content.FirstOrDefault(s => s.Status.ToLower() == "levert" || s.Status.ToLower() == "lest")
- != null;
+ return statuses.Content.FirstOrDefault(s =>
+ s.Status.Equals("levert", StringComparison.OrdinalIgnoreCase)
+ || s.Status.Equals("lest", StringComparison.OrdinalIgnoreCase)
+ ) != null;
}
private static bool MessageTimedOutToKS(Statuses statuses, out string errorMessage)
@@ -244,7 +246,9 @@ private static (bool Error, string ErrorMessage) CheckErrorStatus(Statuses statu
bool isError = false;
string errorMessage = string.Empty;
- var status = statuses.Content.FirstOrDefault(s => s.Status.ToLower() == errorStatus);
+ var status = statuses.Content.FirstOrDefault(s =>
+ s.Status.Equals(errorStatus, StringComparison.OrdinalIgnoreCase)
+ );
if (status != null)
{
isError = true;
diff --git a/src/Altinn.App.Core/EFormidling/Implementation/EformidlingStatusCheckEventHandler2.cs b/src/Altinn.App.Core/EFormidling/Implementation/EformidlingStatusCheckEventHandler2.cs
index a8e88452d..b5b23f5c6 100644
--- a/src/Altinn.App.Core/EFormidling/Implementation/EformidlingStatusCheckEventHandler2.cs
+++ b/src/Altinn.App.Core/EFormidling/Implementation/EformidlingStatusCheckEventHandler2.cs
@@ -197,8 +197,10 @@ private async Task GetStatusesForShipment(string shipmentId)
private static bool MessageDeliveredToKS(Statuses statuses)
{
- return statuses.Content.FirstOrDefault(s => s.Status.ToLower() == "levert" || s.Status.ToLower() == "lest")
- != null;
+ return statuses.Content.FirstOrDefault(s =>
+ s.Status.Equals("levert", StringComparison.OrdinalIgnoreCase)
+ || s.Status.Equals("lest", StringComparison.OrdinalIgnoreCase)
+ ) != null;
}
private static bool MessageTimedOutToKS(Statuses statuses, out string errorMessage)
@@ -218,7 +220,9 @@ private static (bool Error, string ErrorMessage) CheckErrorStatus(Statuses statu
bool isError = false;
string errorMessage = string.Empty;
- var status = statuses.Content.FirstOrDefault(s => s.Status.ToLower() == errorStatus);
+ var status = statuses.Content.FirstOrDefault(s =>
+ s.Status.Equals(errorStatus, StringComparison.OrdinalIgnoreCase)
+ );
if (status != null)
{
isError = true;
diff --git a/src/Altinn.App.Core/Extensions/ConfigurationBuilderExtensions.cs b/src/Altinn.App.Core/Extensions/ConfigurationBuilderExtensions.cs
index fb6fe10a4..9d0301c85 100644
--- a/src/Altinn.App.Core/Extensions/ConfigurationBuilderExtensions.cs
+++ b/src/Altinn.App.Core/Extensions/ConfigurationBuilderExtensions.cs
@@ -34,7 +34,7 @@ public static void LoadAppConfig(this IConfigurationBuilder builder, string[]? a
// Add values from environment and command line arguments last, to override values from other sources.
builder.AddEnvironmentVariables();
- builder.AddCommandLine(args ?? new string[0]);
+ builder.AddCommandLine(args ?? []);
}
}
}
diff --git a/src/Altinn.App.Core/Features/Options/AppOptionsFactory.cs b/src/Altinn.App.Core/Features/Options/AppOptionsFactory.cs
index 84338d417..107ff7cea 100644
--- a/src/Altinn.App.Core/Features/Options/AppOptionsFactory.cs
+++ b/src/Altinn.App.Core/Features/Options/AppOptionsFactory.cs
@@ -29,7 +29,7 @@ public IAppOptionsProvider GetOptionsProvider(string optionsId)
foreach (var appOptionProvider in AppOptionsProviders)
{
- if (appOptionProvider.Id.ToLower() != optionsId.ToLower())
+ if (!appOptionProvider.Id.Equals(optionsId, StringComparison.OrdinalIgnoreCase))
{
continue;
}
diff --git a/src/Altinn.App.Core/Features/Options/InstanceAppOptionsFactory.cs b/src/Altinn.App.Core/Features/Options/InstanceAppOptionsFactory.cs
index d796ef8f1..a859f8ed0 100644
--- a/src/Altinn.App.Core/Features/Options/InstanceAppOptionsFactory.cs
+++ b/src/Altinn.App.Core/Features/Options/InstanceAppOptionsFactory.cs
@@ -25,7 +25,7 @@ public IInstanceAppOptionsProvider GetOptionsProvider(string optionsId)
{
foreach (var instanceAppOptionProvider in InstanceAppOptionsProviders)
{
- if (instanceAppOptionProvider.Id.ToLower() != optionsId.ToLower())
+ if (!instanceAppOptionProvider.Id.Equals(optionsId, StringComparison.OrdinalIgnoreCase))
{
continue;
}
diff --git a/src/Altinn.App.Core/Helpers/AppTextHelper.cs b/src/Altinn.App.Core/Helpers/AppTextHelper.cs
index f8939e862..8d8642846 100644
--- a/src/Altinn.App.Core/Helpers/AppTextHelper.cs
+++ b/src/Altinn.App.Core/Helpers/AppTextHelper.cs
@@ -21,11 +21,11 @@ string languageId
)
{
string text = key;
- if (serviceText != null && serviceText.ContainsKey(key))
+ if (serviceText != null && serviceText.TryGetValue(key, out var serviceTextMap))
{
- if (serviceText[key].ContainsKey(languageId))
+ if (serviceTextMap.TryGetValue(languageId, out var lookupText))
{
- text = serviceText[key][languageId];
+ text = lookupText;
}
if (textParams != null && textParams.Count > 0)
diff --git a/src/Altinn.App.Core/Helpers/DataHelper.cs b/src/Altinn.App.Core/Helpers/DataHelper.cs
index 20bf0314a..916e4c88a 100644
--- a/src/Altinn.App.Core/Helpers/DataHelper.cs
+++ b/src/Altinn.App.Core/Helpers/DataHelper.cs
@@ -133,7 +133,7 @@ object data
string key = entry.Key;
string? value = entry.Value;
- if (originalDictionary.ContainsKey(key) && originalDictionary[key] != value)
+ if (originalDictionary.TryGetValue(key, out string? originalValue) && originalValue != value)
{
updatedValues.Add(key, value);
}
diff --git a/src/Altinn.App.Core/Helpers/DataModel/DataModel.cs b/src/Altinn.App.Core/Helpers/DataModel/DataModel.cs
index eb01db83f..6dff9697b 100644
--- a/src/Altinn.App.Core/Helpers/DataModel/DataModel.cs
+++ b/src/Altinn.App.Core/Helpers/DataModel/DataModel.cs
@@ -98,7 +98,7 @@ public string[] GetResolvedKeys(string key)
{
if (_serviceModel is null)
{
- return new string[0];
+ return [];
}
var keyParts = key.Split('.');
@@ -144,12 +144,12 @@ private string[] GetResolvedKeysRecursive(
{
if (currentModel is null)
{
- return new string[0];
+ return [];
}
if (currentIndex == keyParts.Length)
{
- return new[] { currentKey };
+ return [currentKey];
}
var (key, groupIndex) = ParseKeyPart(keyParts[currentIndex]);
@@ -157,7 +157,7 @@ private string[] GetResolvedKeysRecursive(
var childModel = prop?.GetValue(currentModel);
if (childModel is null)
{
- return new string[0];
+ return [];
}
if (childModel is not string && childModel is System.Collections.IEnumerable childModelList)
diff --git a/src/Altinn.App.Core/Helpers/MimeTypeMap.cs b/src/Altinn.App.Core/Helpers/MimeTypeMap.cs
index 12ed19300..10f572a69 100644
--- a/src/Altinn.App.Core/Helpers/MimeTypeMap.cs
+++ b/src/Altinn.App.Core/Helpers/MimeTypeMap.cs
@@ -1,3 +1,4 @@
+using System.Collections.Frozen;
using Altinn.App.Core.Models;
namespace Altinn.App.Core.Helpers
@@ -7,11 +8,11 @@ namespace Altinn.App.Core.Helpers
///
public static class MimeTypeMap
{
- private static readonly Lazy> _mappings = new Lazy>(
- BuildMappings
- );
+ private static readonly Lazy> _mappings = new Lazy<
+ FrozenDictionary
+ >(BuildMappings);
- private static IDictionary BuildMappings()
+ private static FrozenDictionary BuildMappings()
{
var mappings = new Dictionary(StringComparer.OrdinalIgnoreCase)
{
@@ -620,7 +621,7 @@ private static IDictionary BuildMappings()
#endregion
};
- return mappings;
+ return mappings.ToFrozenDictionary();
}
///
@@ -630,12 +631,9 @@ private static IDictionary BuildMappings()
/// The mime type
public static MimeType GetMimeType(string extension)
{
- if (extension == null)
- {
- throw new ArgumentNullException(nameof(extension));
- }
+ ArgumentNullException.ThrowIfNull(extension);
- if (!extension.StartsWith("."))
+ if (!extension.StartsWith('.'))
{
extension = "." + extension;
}
diff --git a/src/Altinn.App.Core/Helpers/RemoveBomExtentions.cs b/src/Altinn.App.Core/Helpers/RemoveBomExtentions.cs
index 1f4c903a8..b2c96aafe 100644
--- a/src/Altinn.App.Core/Helpers/RemoveBomExtentions.cs
+++ b/src/Altinn.App.Core/Helpers/RemoveBomExtentions.cs
@@ -2,7 +2,7 @@ namespace Altinn.App.Core.Helpers;
internal static class RemoveBomExtentions
{
- private static readonly byte[] _utf8bom = new byte[] { 0xEF, 0xBB, 0xBF };
+ private static readonly byte[] _utf8bom = [0xEF, 0xBB, 0xBF];
internal static ReadOnlySpan RemoveBom(this byte[] bytes)
{
diff --git a/src/Altinn.App.Core/Helpers/SelfLinkHelper.cs b/src/Altinn.App.Core/Helpers/SelfLinkHelper.cs
index 396e3a4e2..2dbcde16a 100644
--- a/src/Altinn.App.Core/Helpers/SelfLinkHelper.cs
+++ b/src/Altinn.App.Core/Helpers/SelfLinkHelper.cs
@@ -24,7 +24,7 @@ public static void SetInstanceAppSelfLinks(Instance instance, HttpRequest reques
int start = selfLink.IndexOf("/instances");
if (start > 0)
{
- selfLink = selfLink.Substring(0, start) + "/instances";
+ selfLink = string.Concat(selfLink.AsSpan(0, start), "/instances");
}
selfLink += $"/{instance.Id}";
@@ -69,7 +69,7 @@ HttpRequest request
int start = selfLink.IndexOf("/instances");
if (start > 0)
{
- selfLink = selfLink.Substring(0, start) + "/instances";
+ selfLink = string.Concat(selfLink.AsSpan(0, start), "/instances");
}
selfLink += $"/{instanceOwnerPartyId}/{instanceGuid.ToString()}";
diff --git a/src/Altinn.App.Core/Implementation/PrefillSI.cs b/src/Altinn.App.Core/Implementation/PrefillSI.cs
index 6844898b8..f4e60aae9 100644
--- a/src/Altinn.App.Core/Implementation/PrefillSI.cs
+++ b/src/Altinn.App.Core/Implementation/PrefillSI.cs
@@ -110,7 +110,7 @@ public async Task PrefillDataModel(
JObject userProfileJsonObject = JObject.FromObject(userProfile);
_logger.LogInformation($"Started prefill from {USER_PROFILE_KEY}");
LoopThroughDictionaryAndAssignValuesToDataModel(
- SwapKeyValuesForPrefil(userProfileDict),
+ SwapKeyValuesForPrefill(userProfileDict),
userProfileJsonObject,
dataModel
);
@@ -138,7 +138,7 @@ public async Task PrefillDataModel(
JObject orgJsonObject = JObject.FromObject(org);
_logger.LogInformation($"Started prefill from {ER_KEY}");
LoopThroughDictionaryAndAssignValuesToDataModel(
- SwapKeyValuesForPrefil(enhetsregisterPrefill),
+ SwapKeyValuesForPrefill(enhetsregisterPrefill),
orgJsonObject,
dataModel
);
@@ -165,7 +165,7 @@ public async Task PrefillDataModel(
JObject personJsonObject = JObject.FromObject(person);
_logger.LogInformation($"Started prefill from {DSF_KEY}");
LoopThroughDictionaryAndAssignValuesToDataModel(
- SwapKeyValuesForPrefil(folkeregisterPrefill),
+ SwapKeyValuesForPrefill(folkeregisterPrefill),
personJsonObject,
dataModel
);
@@ -288,7 +288,7 @@ private void LoopThroughDictionaryAndAssignValuesToDataModel(
}
}
- private Dictionary SwapKeyValuesForPrefil(Dictionary externalPrefil)
+ private Dictionary SwapKeyValuesForPrefill(Dictionary externalPrefil)
{
return externalPrefil.ToDictionary(x => x.Value, x => x.Key);
}
diff --git a/src/Altinn.App.Core/Infrastructure/Clients/Storage/DataClient.cs b/src/Altinn.App.Core/Infrastructure/Clients/Storage/DataClient.cs
index 267655bbf..ce2679768 100644
--- a/src/Altinn.App.Core/Infrastructure/Clients/Storage/DataClient.cs
+++ b/src/Altinn.App.Core/Infrastructure/Clients/Storage/DataClient.cs
@@ -101,7 +101,7 @@ Type type
_logger.Log(
LogLevel.Error,
- "unable to save form data for instance{0} due to response {1}",
+ "unable to save form data for instance {InstanceId} due to response {StatusCode}",
instance.Id,
response.StatusCode
);
diff --git a/src/Altinn.App.Core/Internal/Events/EventHandlerResolver.cs b/src/Altinn.App.Core/Internal/Events/EventHandlerResolver.cs
index 02959f232..aaae48cee 100644
--- a/src/Altinn.App.Core/Internal/Events/EventHandlerResolver.cs
+++ b/src/Altinn.App.Core/Internal/Events/EventHandlerResolver.cs
@@ -23,7 +23,7 @@ public IEventHandler ResolveEventHandler(string eventType)
foreach (var handler in _eventHandlers)
{
- if (handler.EventType.ToLower() != eventType.ToLower())
+ if (!handler.EventType.Equals(eventType, StringComparison.OrdinalIgnoreCase))
{
continue;
}
diff --git a/src/Altinn.App.Core/Internal/Expressions/LayoutEvaluator.cs b/src/Altinn.App.Core/Internal/Expressions/LayoutEvaluator.cs
index b8a96c1bf..d40942805 100644
--- a/src/Altinn.App.Core/Internal/Expressions/LayoutEvaluator.cs
+++ b/src/Altinn.App.Core/Internal/Expressions/LayoutEvaluator.cs
@@ -77,7 +77,7 @@ context.Component is RepeatingGroupComponent repGroup
{
foreach (var index in Enumerable.Range(0, context.RowLength.Value).Reverse())
{
- var rowIndices = context.RowIndices?.Append(index).ToArray() ?? new[] { index };
+ var rowIndices = context.RowIndices?.Append(index).ToArray() ?? [index];
var indexedBinding = state.AddInidicies(repGroup.DataModelBindings["group"], rowIndices);
if (context.HiddenRows.Contains(index))
{
diff --git a/src/Altinn.App.Core/Internal/Expressions/LayoutEvaluatorState.cs b/src/Altinn.App.Core/Internal/Expressions/LayoutEvaluatorState.cs
index 5544bf19f..a249e2c4e 100644
--- a/src/Altinn.App.Core/Internal/Expressions/LayoutEvaluatorState.cs
+++ b/src/Altinn.App.Core/Internal/Expressions/LayoutEvaluatorState.cs
@@ -347,7 +347,7 @@ context.Component is RepeatingGroupComponent repGroup
var hiddenRows = new List();
foreach (var index in Enumerable.Range(0, context.RowLength.Value))
{
- var rowIndices = context.RowIndices?.Append(index).ToArray() ?? new[] { index };
+ var rowIndices = context.RowIndices?.Append(index).ToArray() ?? [index];
var childContexts = context.ChildContexts.Where(c => c.RowIndices?.Last() == index);
var rowContext = new ComponentContext(context.Component, rowIndices, null, childContexts);
var rowHidden = ExpressionEvaluator.EvaluateBooleanExpression(this, rowContext, "hiddenRow", false);
diff --git a/src/Altinn.App.Core/Internal/Pdf/PdfService.cs b/src/Altinn.App.Core/Internal/Pdf/PdfService.cs
index 187fb428e..17968c818 100644
--- a/src/Altinn.App.Core/Internal/Pdf/PdfService.cs
+++ b/src/Altinn.App.Core/Internal/Pdf/PdfService.cs
@@ -68,7 +68,7 @@ public async Task GenerateAndStorePdf(Instance instance, string taskId, Cancella
// Avoid a costly call if the language is allready overriden by the user
language = string.IsNullOrEmpty(language) ? await GetLanguage() : language;
- var pdfContent = await GeneratePdfContent(instance, taskId, ct, language);
+ var pdfContent = await GeneratePdfContent(instance, taskId, language, ct);
var appIdentifier = new AppIdentifier(instance);
@@ -84,14 +84,14 @@ public async Task GeneratePdf(Instance instance, string taskId, Cancella
// Avoid a costly call if the language is allready overriden by the user
language = string.IsNullOrEmpty(language) ? await GetLanguage() : language;
- return await GeneratePdfContent(instance, taskId, ct, language);
+ return await GeneratePdfContent(instance, taskId, language, ct);
}
private async Task GeneratePdfContent(
Instance instance,
string taskId,
- CancellationToken ct,
- string language
+ string language,
+ CancellationToken ct
)
{
var baseUrl = _generalSettings.FormattedExternalAppBaseUrl(new AppIdentifier(instance));
diff --git a/src/Altinn.App.Core/Models/AppIdentifier.cs b/src/Altinn.App.Core/Models/AppIdentifier.cs
index 7d90c74df..5bb3af0e1 100644
--- a/src/Altinn.App.Core/Models/AppIdentifier.cs
+++ b/src/Altinn.App.Core/Models/AppIdentifier.cs
@@ -117,10 +117,7 @@ public override int GetHashCode()
/// A new instance of
public static AppIdentifier CreateFromUrl(string url)
{
- if (url == null)
- {
- throw new ArgumentNullException(nameof(url));
- }
+ ArgumentNullException.ThrowIfNull(url);
if (!Uri.IsWellFormedUriString(url, UriKind.Absolute))
{
diff --git a/src/Altinn.App.Core/Models/Expressions/ComponentContext.cs b/src/Altinn.App.Core/Models/Expressions/ComponentContext.cs
index aaad82733..2cabed33f 100644
--- a/src/Altinn.App.Core/Models/Expressions/ComponentContext.cs
+++ b/src/Altinn.App.Core/Models/Expressions/ComponentContext.cs
@@ -72,7 +72,7 @@ public IEnumerable Decendants
get
{
var stack = new Stack(ChildContexts);
- while (stack.Any())
+ while (stack.Count != 0)
{
var node = stack.Pop();
yield return node;
diff --git a/src/Altinn.App.Core/Models/Layout/LayoutModel.cs b/src/Altinn.App.Core/Models/Layout/LayoutModel.cs
index 6f57631f2..3ecb38466 100644
--- a/src/Altinn.App.Core/Models/Layout/LayoutModel.cs
+++ b/src/Altinn.App.Core/Models/Layout/LayoutModel.cs
@@ -48,7 +48,7 @@ public IEnumerable GetComponents()
{
// Use a stack in order to implement a depth first search
var nodes = new Stack(Pages.Values);
- while (nodes.Any())
+ while (nodes.Count != 0)
{
var node = nodes.Pop();
yield return node;
diff --git a/stylecop.json b/stylecop.json
deleted file mode 100644
index 4eef0f17a..000000000
--- a/stylecop.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- // ACTION REQUIRED: This file was automatically added to your project, but it
- // will not take effect until additional steps are taken to enable it. See the
- // following page for additional information:
- //
- // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/EnableConfiguration.md
-
- "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
- "settings": {
- "documentationRules": {
- "companyName": "PlaceholderCompany"
- },
- "orderingRules": {
- "usingDirectivesPlacement": "outsideNamespace",
- "systemUsingDirectivesFirst": true,
- "blankLinesBetweenUsingGroups": "allow"
- },
- "namingRules": {
- "allowCommonHungarianPrefixes": true,
- "allowedHungarianPrefixes": [
- "as",
- "d",
- "db",
- "dn",
- "do",
- "dr",
- "ds",
- "dt",
- "e",
- "e2",
- "er",
- "f",
- "fs",
- "go",
- "id",
- "if",
- "in",
- "ip",
- "is",
- "js",
- "li",
- "my",
- "no",
- "ns",
- "on",
- "or",
- "pi",
- "pv",
- "sa",
- "sb",
- "se",
- "si",
- "so",
- "sp",
- "tc",
- "to",
- "tr",
- "ui",
- "un",
- "wf",
- "ws",
- "x",
- "y",
- "j",
- "js"
- ]
- }
- }
-}
diff --git a/test/Altinn.App.Api.Tests/Altinn.App.Api.Tests.csproj b/test/Altinn.App.Api.Tests/Altinn.App.Api.Tests.csproj
index c0c86e3a6..d472686d2 100644
--- a/test/Altinn.App.Api.Tests/Altinn.App.Api.Tests.csproj
+++ b/test/Altinn.App.Api.Tests/Altinn.App.Api.Tests.csproj
@@ -5,12 +5,6 @@
enable
enable
false
- $(NoWarn);CS1591;CS0618;CS7022
-
diff --git a/test/Altinn.App.Api.Tests/Controllers/ValidateControllerValidateDataTests.cs b/test/Altinn.App.Api.Tests/Controllers/ValidateControllerValidateDataTests.cs
index 6b289572a..662a971ab 100644
--- a/test/Altinn.App.Api.Tests/Controllers/ValidateControllerValidateDataTests.cs
+++ b/test/Altinn.App.Api.Tests/Controllers/ValidateControllerValidateDataTests.cs
@@ -146,7 +146,7 @@ public IEnumerator
-
-
- all
- runtime; build; native; contentfiles; analyzers
-
-
- stylecop.json
-
-
-
@@ -109,9 +99,4 @@
-
- ..\..\Altinn3.ruleset
-
-
-
diff --git a/test/Altinn.App.Core.Tests/GlobalSuppressions.cs b/test/Altinn.App.Core.Tests/GlobalSuppressions.cs
deleted file mode 100644
index f825eb5b4..000000000
--- a/test/Altinn.App.Core.Tests/GlobalSuppressions.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is used by Code Analysis to maintain SuppressMessage
-// attributes that are applied to this project.
-// Project-level suppressions either have no target or are given
-// a specific target and scoped to a namespace, type, member, etc.
-
-using System.Diagnostics.CodeAnalysis;
-
-[assembly: SuppressMessage(
- "StyleCop.CSharp.DocumentationRules",
- "SA1600:Elements should be documented",
- Justification = "Test description should be in the name of the test.",
- Scope = "module"
-)]
diff --git a/test/Altinn.App.Core.Tests/Helpers/JsonDataModel.cs b/test/Altinn.App.Core.Tests/Helpers/JsonDataModel.cs
index b3d73f877..e5f63e48f 100644
--- a/test/Altinn.App.Core.Tests/Helpers/JsonDataModel.cs
+++ b/test/Altinn.App.Core.Tests/Helpers/JsonDataModel.cs
@@ -169,7 +169,7 @@ public string[] GetResolvedKeys(string key)
{
if (_modelRoot is null)
{
- return new string[0];
+ return [];
}
var keyParts = key.Split('.');
@@ -185,12 +185,12 @@ private string[] GetResolvedKeysRecursive(
{
if (currentModel is null)
{
- return new string[0];
+ return [];
}
if (currentIndex == keyParts.Length)
{
- return new[] { currentKey };
+ return [currentKey];
}
var (key, groupIndex) = DataModel.ParseKeyPart(keyParts[currentIndex]);
@@ -199,7 +199,7 @@ currentModel is not JsonObject
|| !currentModel.AsObject().TryGetPropertyValue(key, out JsonNode? childModel)
)
{
- return new string[0];
+ return [];
}
if (childModel is JsonArray childArray)
diff --git a/test/Altinn.App.Core.Tests/Helpers/ObjectUtils_XmlSerializationTests.cs b/test/Altinn.App.Core.Tests/Helpers/ObjectUtils_XmlSerializationTests.cs
index 48a936a59..696540bf5 100644
--- a/test/Altinn.App.Core.Tests/Helpers/ObjectUtils_XmlSerializationTests.cs
+++ b/test/Altinn.App.Core.Tests/Helpers/ObjectUtils_XmlSerializationTests.cs
@@ -13,7 +13,6 @@
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
-#pragma warning disable SA1300 // Inconsistent casing on property
namespace Altinn.App.Core.Tests.Helpers;
diff --git a/test/Altinn.App.Core.Tests/Implementation/InstanceClientTests.cs b/test/Altinn.App.Core.Tests/Implementation/InstanceClientTests.cs
index 8191aa0f8..6dee3de07 100644
--- a/test/Altinn.App.Core.Tests/Implementation/InstanceClientTests.cs
+++ b/test/Altinn.App.Core.Tests/Implementation/InstanceClientTests.cs
@@ -52,7 +52,7 @@ public async Task AddCompleteConfirmation_SuccessfulCallToStorage()
Content = new StringContent(JsonConvert.SerializeObject(instance), Encoding.UTF8, "application/json"),
};
- InitializeMocks(new HttpResponseMessage[] { httpResponseMessage }, new string[] { "complete" });
+ InitializeMocks([httpResponseMessage], ["complete"]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
@@ -81,7 +81,7 @@ public async Task AddCompleteConfirmation_StorageReturnsNonSuccess_ThrowsPlatfor
Content = new StringContent("Error message", Encoding.UTF8, "application/json"),
};
- InitializeMocks(new HttpResponseMessage[] { httpResponseMessage }, new string[] { "complete" });
+ InitializeMocks([httpResponseMessage], ["complete"]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
@@ -121,7 +121,7 @@ public async Task UpdateReadStatus_StorageReturnsNonSuccess_LogsErrorAppContinue
Content = new StringContent("Error message", Encoding.UTF8, "application/json"),
};
- InitializeMocks(new HttpResponseMessage[] { httpResponseMessage }, new string[] { "read" });
+ InitializeMocks([httpResponseMessage], ["read"]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
@@ -163,7 +163,7 @@ public async Task UpdateReadStatus_StorageReturnsSuccess()
Content = new StringContent(JsonConvert.SerializeObject(expected), Encoding.UTF8, "application/json"),
};
- InitializeMocks(new HttpResponseMessage[] { httpResponseMessage }, new string[] { "read" });
+ InitializeMocks([httpResponseMessage], ["read"]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
@@ -201,7 +201,7 @@ public async Task UpdateSubtatus_StorageReturnsSuccess()
Content = new StringContent(JsonConvert.SerializeObject(expected), Encoding.UTF8, "application/json"),
};
- InitializeMocks(new HttpResponseMessage[] { httpResponseMessage }, new string[] { "substatus" });
+ InitializeMocks([httpResponseMessage], ["substatus"]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
@@ -236,7 +236,7 @@ public async Task UpdateSubtatus_StorageReturnsNonSuccess_ThrowsPlatformHttpExce
Content = new StringContent("Error message", Encoding.UTF8, "application/json"),
};
- InitializeMocks(new HttpResponseMessage[] { httpResponseMessage }, new string[] { "substatus" });
+ InitializeMocks([httpResponseMessage], ["substatus"]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
@@ -285,7 +285,7 @@ public async Task DeleteInstance_StorageReturnsSuccess()
Content = new StringContent(JsonConvert.SerializeObject(expected), Encoding.UTF8, "application/json"),
};
- InitializeMocks(new HttpResponseMessage[] { httpResponseMessage }, new string[] { "1337" });
+ InitializeMocks([httpResponseMessage], ["1337"]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
@@ -317,7 +317,7 @@ public async Task DeleteInstance_StorageReturnsNonSuccess_ThrowsPlatformHttpExce
Content = new StringContent("Error message", Encoding.UTF8, "application/json"),
};
- InitializeMocks(new HttpResponseMessage[] { httpResponseMessage }, new string[] { "1337" });
+ InitializeMocks([httpResponseMessage], ["1337"]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
@@ -359,7 +359,7 @@ public async Task UpdatePresentationTexts_StorageReturnsNonSuccess_ThrowsPlatfor
Content = new StringContent("Error message", Encoding.UTF8, "application/json"),
};
- InitializeMocks(new HttpResponseMessage[] { httpResponseMessage }, new string[] { "1337" });
+ InitializeMocks([httpResponseMessage], ["1337"]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
@@ -408,7 +408,7 @@ public async Task UpdatePresentationTexts_SuccessfulCallToStorage()
Content = new StringContent(JsonConvert.SerializeObject(expected), Encoding.UTF8, "application/json"),
};
- InitializeMocks(new HttpResponseMessage[] { httpResponseMessage }, new string[] { "presentationtexts" });
+ InitializeMocks([httpResponseMessage], ["presentationtexts"]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
@@ -472,10 +472,7 @@ public async Task QueryInstances_QueryResponseContainsNext()
),
};
- InitializeMocks(
- new HttpResponseMessage[] { httpResponseMessage1, httpResponseMessage2 },
- new string[] { urlPart1, urlPart2 }
- );
+ InitializeMocks([httpResponseMessage1, httpResponseMessage2], [urlPart1, urlPart2]);
HttpClient httpClient = new HttpClient(handlerMock.Object);
diff --git a/test/Altinn.App.Core.Tests/LayoutExpressions/FullTests/Test1/RunTest1.cs b/test/Altinn.App.Core.Tests/LayoutExpressions/FullTests/Test1/RunTest1.cs
index 046e408f9..6ccab17a2 100644
--- a/test/Altinn.App.Core.Tests/LayoutExpressions/FullTests/Test1/RunTest1.cs
+++ b/test/Altinn.App.Core.Tests/LayoutExpressions/FullTests/Test1/RunTest1.cs
@@ -47,7 +47,7 @@ public async Task RemoveData_WhenPageExpressionIsTrue()
"Test1"
);
var hidden = LayoutEvaluator.GetHiddenFieldsForRemoval(state);
- hidden.Should().BeEquivalentTo(new string[] { "some.data.binding2" });
+ hidden.Should().BeEquivalentTo(["some.data.binding2"]);
}
[Fact]
diff --git a/test/Altinn.App.Core.Tests/LayoutExpressions/TestDataModel.cs b/test/Altinn.App.Core.Tests/LayoutExpressions/TestDataModel.cs
index 6f118a3df..97a2ac37f 100644
--- a/test/Altinn.App.Core.Tests/LayoutExpressions/TestDataModel.cs
+++ b/test/Altinn.App.Core.Tests/LayoutExpressions/TestDataModel.cs
@@ -20,7 +20,7 @@ public void TestSimpleGet()
var modelHelper = new DataModel(model);
modelHelper.GetModelData("does.not.exist", default).Should().BeNull();
modelHelper.GetModelData("name.value", default).Should().Be(model.Name.Value);
- modelHelper.GetModelData("name.value", new int[] { 1, 2, 3 }).Should().Be(model.Name.Value);
+ modelHelper.GetModelData("name.value", [1, 2, 3]).Should().Be(model.Name.Value);
}
[Fact]
@@ -74,22 +74,22 @@ public void RecursiveLookup()
IDataModelAccessor modelHelper = new DataModel(model);
modelHelper.GetModelData("friends.name.value", default).Should().BeNull();
modelHelper.GetModelData("friends[0].name.value", default).Should().Be("Donald Duck");
- modelHelper.GetModelData("friends.name.value", new int[] { 0 }).Should().Be("Donald Duck");
+ modelHelper.GetModelData("friends.name.value", [0]).Should().Be("Donald Duck");
modelHelper.GetModelData("friends[0].age", default).Should().Be(123);
- modelHelper.GetModelData("friends.age", new int[] { 0 }).Should().Be(123);
+ modelHelper.GetModelData("friends.age", [0]).Should().Be(123);
modelHelper.GetModelData("friends[1].name.value", default).Should().Be("Dolly Duck");
- modelHelper.GetModelData("friends.name.value", new int[] { 1 }).Should().Be("Dolly Duck");
+ modelHelper.GetModelData("friends.name.value", [1]).Should().Be("Dolly Duck");
// Run the same tests with JsonDataModel
var doc = JsonSerializer.Deserialize(JsonSerializer.Serialize(model));
modelHelper = new JsonDataModel(doc);
modelHelper.GetModelData("friends.name.value", default).Should().BeNull();
modelHelper.GetModelData("friends[0].name.value", default).Should().Be("Donald Duck");
- modelHelper.GetModelData("friends.name.value", new int[] { 0 }).Should().Be("Donald Duck");
+ modelHelper.GetModelData("friends.name.value", [0]).Should().Be("Donald Duck");
modelHelper.GetModelData("friends[0].age", default).Should().Be(123);
- modelHelper.GetModelData("friends.age", new int[] { 0 }).Should().Be(123);
+ modelHelper.GetModelData("friends.age", [0]).Should().Be(123);
modelHelper.GetModelData("friends[1].name.value", default).Should().Be("Dolly Duck");
- modelHelper.GetModelData("friends.name.value", new int[] { 1 }).Should().Be("Dolly Duck");
+ modelHelper.GetModelData("friends.name.value", [1]).Should().Be("Dolly Duck");
}
[Fact]
@@ -134,37 +134,37 @@ public void DoubleRecursiveLookup()
IDataModelAccessor modelHelper = new DataModel(model);
modelHelper.GetModelData("friends[1].friends[0].name.value", default).Should().Be("Onkel Skrue");
- modelHelper.GetModelData("friends[1].friends.name.value", new int[] { 0, 0 }).Should().BeNull();
+ modelHelper.GetModelData("friends[1].friends.name.value", [0, 0]).Should().BeNull();
modelHelper
- .GetModelData("friends[1].friends.name.value", new int[] { 1, 0 })
+ .GetModelData("friends[1].friends.name.value", [1, 0])
.Should()
.BeNull("context indexes should not be used after literal index is used");
- modelHelper.GetModelData("friends[1].friends.name.value", new int[] { 1 }).Should().BeNull();
- modelHelper.GetModelData("friends.friends[0].name.value", new int[] { 1, 4, 5, 7 }).Should().Be("Onkel Skrue");
+ modelHelper.GetModelData("friends[1].friends.name.value", [1]).Should().BeNull();
+ modelHelper.GetModelData("friends.friends[0].name.value", [1, 4, 5, 7]).Should().Be("Onkel Skrue");
modelHelper.GetModelDataCount("friends[1].friends", Array.Empty()).Should().Be(1);
- modelHelper.GetModelDataCount("friends.friends", new int[] { 1 }).Should().Be(1);
- modelHelper.GetModelDataCount("friends[1].friends.friends", new int[] { 1, 0, 0 }).Should().BeNull();
- modelHelper.GetModelDataCount("friends[1].friends[0].friends", new int[] { 1, 0, 0 }).Should().Be(2);
- modelHelper.GetModelDataCount("friends.friends.friends", new int[] { 1, 0, 0 }).Should().Be(2);
- modelHelper.GetModelDataCount("friends.friends", new int[] { 1 }).Should().Be(1);
+ modelHelper.GetModelDataCount("friends.friends", [1]).Should().Be(1);
+ modelHelper.GetModelDataCount("friends[1].friends.friends", [1, 0, 0]).Should().BeNull();
+ modelHelper.GetModelDataCount("friends[1].friends[0].friends", [1, 0, 0]).Should().Be(2);
+ modelHelper.GetModelDataCount("friends.friends.friends", [1, 0, 0]).Should().Be(2);
+ modelHelper.GetModelDataCount("friends.friends", [1]).Should().Be(1);
// Run the same tests with JsonDataModel
var doc = JsonSerializer.Deserialize(JsonSerializer.Serialize(model));
modelHelper = new JsonDataModel(doc);
modelHelper.GetModelData("friends[1].friends[0].name.value", default).Should().Be("Onkel Skrue");
- modelHelper.GetModelData("friends[1].friends.name.value", new int[] { 0, 0 }).Should().BeNull();
+ modelHelper.GetModelData("friends[1].friends.name.value", [0, 0]).Should().BeNull();
modelHelper
- .GetModelData("friends[1].friends.name.value", new int[] { 1, 0 })
+ .GetModelData("friends[1].friends.name.value", [1, 0])
.Should()
.BeNull("context indexes should not be used after literal index is used");
- modelHelper.GetModelData("friends[1].friends.name.value", new int[] { 1 }).Should().BeNull();
- modelHelper.GetModelData("friends.friends[0].name.value", new int[] { 1, 4, 5, 7 }).Should().Be("Onkel Skrue");
+ modelHelper.GetModelData("friends[1].friends.name.value", [1]).Should().BeNull();
+ modelHelper.GetModelData("friends.friends[0].name.value", [1, 4, 5, 7]).Should().Be("Onkel Skrue");
modelHelper.GetModelDataCount("friends[1].friends", Array.Empty()).Should().Be(1);
- modelHelper.GetModelDataCount("friends.friends", new int[] { 1 }).Should().Be(1);
- modelHelper.GetModelDataCount("friends[1].friends.friends", new int[] { 1, 0, 0 }).Should().BeNull();
- modelHelper.GetModelDataCount("friends[1].friends[0].friends", new int[] { 1, 0, 0 }).Should().Be(2);
- modelHelper.GetModelDataCount("friends.friends.friends", new int[] { 1, 0, 0 }).Should().Be(2);
- modelHelper.GetModelDataCount("friends.friends", new int[] { 1 }).Should().Be(1);
+ modelHelper.GetModelDataCount("friends.friends", [1]).Should().Be(1);
+ modelHelper.GetModelDataCount("friends[1].friends.friends", [1, 0, 0]).Should().BeNull();
+ modelHelper.GetModelDataCount("friends[1].friends[0].friends", [1, 0, 0]).Should().Be(2);
+ modelHelper.GetModelDataCount("friends.friends.friends", [1, 0, 0]).Should().Be(2);
+ modelHelper.GetModelDataCount("friends.friends", [1]).Should().Be(1);
}
[Fact]
@@ -316,13 +316,13 @@ public void TestErrorCases()
modelHelper.GetModelData("friends[3]").Should().BeNull();
modelHelper
- .Invoking(m => m.AddIndicies("tull.sd", new int[] { 2 }))
+ .Invoking(m => m.AddIndicies("tull.sd", [2]))
.Should()
.Throw()
.WithMessage("Unknown model property tull in*");
modelHelper
- .Invoking(m => m.AddIndicies("id[4]", new int[] { 6 }))
+ .Invoking(m => m.AddIndicies("id[4]", [6]))
.Should()
.Throw()
.WithMessage("Index on non indexable property");
@@ -340,7 +340,7 @@ public void TestEdgeCaseWithNonGenericEnumerableForCoverage()
}
);
modelHelper
- .Invoking(m => m.AddIndicies("friends", new int[] { 0 }))
+ .Invoking(m => m.AddIndicies("friends", [0]))
.Should()
.Throw()
.WithMessage("DataModels must have generic IEnumerable<> implementation for list");
@@ -358,16 +358,16 @@ public void TestAddIndicies()
);
// Plain add indicies
- modelHelper.AddIndicies("friends.friends", new int[] { 0, 1 }).Should().Be("friends[0].friends[1]");
+ modelHelper.AddIndicies("friends.friends", [0, 1]).Should().Be("friends[0].friends[1]");
// Ignore extra indicies
- modelHelper.AddIndicies("friends.friends", new int[] { 0, 1, 4, 6 }).Should().Be("friends[0].friends[1]");
+ modelHelper.AddIndicies("friends.friends", [0, 1, 4, 6]).Should().Be("friends[0].friends[1]");
// Don't add indicies if they are specified in input
- modelHelper.AddIndicies("friends[3]", new int[] { 0 }).Should().Be("friends[3]");
+ modelHelper.AddIndicies("friends[3]", [0]).Should().Be("friends[3]");
// First index is ignored if it is explicit
- modelHelper.AddIndicies("friends[0].friends", new int[] { 2, 3 }).Should().Be("friends[0].friends[3]");
+ modelHelper.AddIndicies("friends[0].friends", [2, 3]).Should().Be("friends[0].friends[3]");
}
[Fact]
@@ -377,7 +377,7 @@ public void AddIndicies_WhenGivenIndexOnNonIndexableProperty_ThrowsError()
// Throws because id is not indexable
modelHelper
- .Invoking(m => m.AddIndicies("id[0]", new int[] { 1, 2, 3 }))
+ .Invoking(m => m.AddIndicies("id[0]", [1, 2, 3]))
.Should()
.Throw()
.WithMessage("Index on non indexable property");
diff --git a/test/Directory.Build.props b/test/Directory.Build.props
new file mode 100644
index 000000000..c4a3a4e9b
--- /dev/null
+++ b/test/Directory.Build.props
@@ -0,0 +1,15 @@
+
+
+
+
+
+ Default
+ $(NoWarn);CS1591;CS0618;CS7022;CA1707
+
+
+
+