diff --git a/.editorconfig b/.editorconfig index c9cc464d93..7294066eec 100644 --- a/.editorconfig +++ b/.editorconfig @@ -150,6 +150,9 @@ dotnet_diagnostic.IDE1006.severity = warning # Avoid unnecessary zero-length array allocations. dotnet_diagnostic.CA1825.severity = warning +# Use string.Contains(char) instead of string.Contains(string) with single characters. +dotnet_diagnostic.CA1847.severity = warning + ; 4-column tab indentation [*.yaml] indent_style = tab diff --git a/OpenRA.Game/FileSystem/FileSystem.cs b/OpenRA.Game/FileSystem/FileSystem.cs index 3d17b9cc98..e10a48d43d 100644 --- a/OpenRA.Game/FileSystem/FileSystem.cs +++ b/OpenRA.Game/FileSystem/FileSystem.cs @@ -63,7 +63,7 @@ namespace OpenRA.FileSystem { // Raw directories are the easiest and one of the most common cases, so try these first var resolvedPath = Platform.ResolvePath(filename); - if (!resolvedPath.Contains("|") && Directory.Exists(resolvedPath)) + if (!resolvedPath.Contains('|') && Directory.Exists(resolvedPath)) return new Folder(resolvedPath); // Children of another package require special handling diff --git a/OpenRA.Game/Map/Map.cs b/OpenRA.Game/Map/Map.cs index 6a61deec2e..201f7fb49a 100644 --- a/OpenRA.Game/Map/Map.cs +++ b/OpenRA.Game/Map/Map.cs @@ -1324,7 +1324,7 @@ namespace OpenRA public Stream Open(string filename) { // Explicit package paths never refer to a map - if (!filename.Contains("|") && Package.Contains(filename)) + if (!filename.Contains('|') && Package.Contains(filename)) return Package.GetStream(filename); return modData.DefaultFileSystem.Open(filename); @@ -1339,7 +1339,7 @@ namespace OpenRA public bool TryOpen(string filename, out Stream s) { // Explicit package paths never refer to a map - if (!filename.Contains("|")) + if (!filename.Contains('|')) { s = Package.GetStream(filename); if (s != null) @@ -1352,7 +1352,7 @@ namespace OpenRA public bool Exists(string filename) { // Explicit package paths never refer to a map - if (!filename.Contains("|") && Package.Contains(filename)) + if (!filename.Contains('|') && Package.Contains(filename)) return true; return modData.DefaultFileSystem.Exists(filename); @@ -1361,7 +1361,7 @@ namespace OpenRA public bool IsExternalModFile(string filename) { // Explicit package paths never refer to a map - if (filename.Contains("|")) + if (filename.Contains('|')) return modData.DefaultFileSystem.IsExternalModFile(filename); return false; diff --git a/OpenRA.Game/Map/MapPreview.cs b/OpenRA.Game/Map/MapPreview.cs index 4ef4698b3e..cadc31630f 100644 --- a/OpenRA.Game/Map/MapPreview.cs +++ b/OpenRA.Game/Map/MapPreview.cs @@ -559,7 +559,7 @@ namespace OpenRA Stream IReadOnlyFileSystem.Open(string filename) { // Explicit package paths never refer to a map - if (!filename.Contains("|") && Package.Contains(filename)) + if (!filename.Contains('|') && Package.Contains(filename)) return Package.GetStream(filename); return modData.DefaultFileSystem.Open(filename); @@ -574,7 +574,7 @@ namespace OpenRA bool IReadOnlyFileSystem.TryOpen(string filename, out Stream s) { // Explicit package paths never refer to a map - if (!filename.Contains("|")) + if (!filename.Contains('|')) { s = Package.GetStream(filename); if (s != null) @@ -587,7 +587,7 @@ namespace OpenRA bool IReadOnlyFileSystem.Exists(string filename) { // Explicit package paths never refer to a map - if (!filename.Contains("|") && Package.Contains(filename)) + if (!filename.Contains('|') && Package.Contains(filename)) return true; return modData.DefaultFileSystem.Exists(filename); @@ -596,7 +596,7 @@ namespace OpenRA bool IReadOnlyFileSystem.IsExternalModFile(string filename) { // Explicit package paths never refer to a map - if (filename.Contains("|")) + if (filename.Contains('|')) return modData.DefaultFileSystem.IsExternalModFile(filename); return false; diff --git a/OpenRA.Game/Widgets/WidgetLoader.cs b/OpenRA.Game/Widgets/WidgetLoader.cs index 563c4ad0f0..8058935e94 100644 --- a/OpenRA.Game/Widgets/WidgetLoader.cs +++ b/OpenRA.Game/Widgets/WidgetLoader.cs @@ -52,7 +52,7 @@ namespace OpenRA parent?.AddChild(widget); - if (node.Key.Contains("@")) + if (node.Key.Contains('@')) FieldLoader.LoadField(widget, "Id", node.Key.Split('@')[1]); foreach (var child in node.Value.Nodes) diff --git a/OpenRA.Mods.Common/UpdateRules/UpdateUtils.cs b/OpenRA.Mods.Common/UpdateRules/UpdateUtils.cs index cb192b523c..4c8ccfb4d9 100644 --- a/OpenRA.Mods.Common/UpdateRules/UpdateUtils.cs +++ b/OpenRA.Mods.Common/UpdateRules/UpdateUtils.cs @@ -47,7 +47,7 @@ namespace OpenRA.Mods.Common.UpdateRules static YamlFileSet LoadExternalMapYaml(ModData modData, MiniYaml yaml, HashSet externalFilenames) { return FieldLoader.GetValue("value", yaml.Value) - .Where(f => f.Contains("|")) + .Where(f => f.Contains('|')) .SelectMany(f => LoadModYaml(modData, FilterExternalModFiles(modData, new[] { f }, externalFilenames))) .ToList(); } @@ -67,7 +67,7 @@ namespace OpenRA.Mods.Common.UpdateRules foreach (var filename in files) { // Ignore any files that aren't in the map bundle - if (!filename.Contains("|") && mapPackage.Contains(filename)) + if (!filename.Contains('|') && mapPackage.Contains(filename)) fileSet.Add((mapPackage, filename, MiniYaml.FromStream(mapPackage.GetStream(filename), filename, false))); else if (modData.ModFiles.Exists(filename)) externalFilenames.Add(filename); @@ -145,7 +145,7 @@ namespace OpenRA.Mods.Common.UpdateRules { foreach (var f in files) { - if (f.Contains("|") && modData.DefaultFileSystem.IsExternalModFile(f)) + if (f.Contains('|') && modData.DefaultFileSystem.IsExternalModFile(f)) { externalFilenames.Add(f); continue; diff --git a/OpenRA.Mods.Common/UtilityCommands/CheckExplicitInterfacesCommand.cs b/OpenRA.Mods.Common/UtilityCommands/CheckExplicitInterfacesCommand.cs index 3caa765bbd..1618f21b26 100644 --- a/OpenRA.Mods.Common/UtilityCommands/CheckExplicitInterfacesCommand.cs +++ b/OpenRA.Mods.Common/UtilityCommands/CheckExplicitInterfacesCommand.cs @@ -111,7 +111,7 @@ namespace OpenRA.Mods.Common.UtilityCommands static bool IsExplicitInterfaceProperty(PropertyInfo pi) { - return pi.Name.Contains("."); + return pi.Name.Contains('.'); } void OnViolation(Type implementor, Type interfaceType, MemberInfo violator)