From f0875d3ffe27059194dc562113b07b8bd8dd8b08 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 27 Aug 2025 21:31:33 +1000 Subject: [PATCH] prefer string.Join with a char --- .../Data/AzurePipelinesPublishCodeCoverageData.cs | 2 +- .../Data/AzurePipelinesPublishTestResultsData.cs | 2 +- .../GitHubActions/Commands/GitHubActionsCommands.cs | 2 +- .../Chocolatey/Pack/ChocolateyNuSpecTransformer.cs | 4 ++-- src/Cake.Common/Tools/DotCover/DotCoverCoverageTool.cs | 8 ++++---- src/Cake.Common/Tools/DotCover/Merge/DotCoverMerger.cs | 2 +- src/Cake.Common/Tools/DotNet/Format/DotNetFormatter.cs | 6 +++--- .../Tools/DotNet/MSBuild/DotNetMSBuildSettings.cs | 3 +-- .../DotNet/MSBuild/MSBuildArgumentBuilderExtensions.cs | 10 +++++----- .../Tools/DotNet/Package/List/DotNetPackageLister.cs | 2 +- src/Cake.Common/Tools/DotNet/VSTest/DotNetVSTester.cs | 2 +- .../DotNet/Workload/Install/DotNetWorkloadInstaller.cs | 2 +- .../Workload/Uninstall/DotNetWorkloadUninstaller.cs | 2 +- src/Cake.Common/Tools/GitVersion/GitVersionRunner.cs | 2 +- src/Cake.Common/Tools/ILMerge/ILMergeRunner.cs | 2 +- src/Cake.Common/Tools/MSBuild/MSBuildFileLogger.cs | 2 +- src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs | 8 ++++---- src/Cake.Common/Tools/MSBuild/MSBuildSettings.cs | 4 ++-- src/Cake.Common/Tools/NuGet/Install/NuGetInstaller.cs | 4 ++-- src/Cake.Common/Tools/NuGet/List/NuGetList.cs | 2 +- src/Cake.Common/Tools/NuGet/Pack/NuGetPacker.cs | 2 +- src/Cake.Common/Tools/NuGet/Pack/NuspecTransformer.cs | 4 ++-- src/Cake.Common/Tools/NuGet/Restore/NuGetRestorer.cs | 4 ++-- src/Cake.Common/Tools/NuGet/Update/NuGetUpdater.cs | 4 ++-- src/Cake.Common/Tools/OpenCover/OpenCoverRunner.cs | 10 +++++----- .../Tools/ReportGenerator/ReportGeneratorRunner.cs | 8 ++++---- src/Cake.Common/Tools/XBuild/XBuildRunner.cs | 2 +- src/Cake.Core/IO/DirectoryPath.cs | 4 ++-- src/Cake.Core/IO/Globbing/GlobVisitorContext.cs | 6 +++--- src/Cake.Core/IO/PathCollapser.cs | 2 +- src/Cake.Core/IO/PathHelper.cs | 4 ++-- src/Cake.Core/IO/ProcessArgumentBuilder.cs | 4 ++-- src/Cake.Core/Text/TextTransformationTemplate.cs | 2 +- src/Cake.Testing/FakeFileSystemTree.cs | 2 +- src/Cake/Features/Bootstrapping/BootstrapFeature.cs | 2 +- 35 files changed, 65 insertions(+), 66 deletions(-) diff --git a/src/Cake.Common/Build/AzurePipelines/Data/AzurePipelinesPublishCodeCoverageData.cs b/src/Cake.Common/Build/AzurePipelines/Data/AzurePipelinesPublishCodeCoverageData.cs index f57d5ee19c..bd17645ad0 100644 --- a/src/Cake.Common/Build/AzurePipelines/Data/AzurePipelinesPublishCodeCoverageData.cs +++ b/src/Cake.Common/Build/AzurePipelines/Data/AzurePipelinesPublishCodeCoverageData.cs @@ -79,7 +79,7 @@ internal Dictionary GetProperties(ICakeEnvironment environment, if (AdditionalCodeCoverageFiles != null && AdditionalCodeCoverageFiles.Any()) { properties.Add("additionalcodecoveragefiles", - string.Join(",", + string.Join(',', AdditionalCodeCoverageFiles .Select(filePath => filePath diff --git a/src/Cake.Common/Build/AzurePipelines/Data/AzurePipelinesPublishTestResultsData.cs b/src/Cake.Common/Build/AzurePipelines/Data/AzurePipelinesPublishTestResultsData.cs index bc453148fc..278ccd53dc 100644 --- a/src/Cake.Common/Build/AzurePipelines/Data/AzurePipelinesPublishTestResultsData.cs +++ b/src/Cake.Common/Build/AzurePipelines/Data/AzurePipelinesPublishTestResultsData.cs @@ -86,7 +86,7 @@ internal Dictionary GetProperties(ICakeEnvironment environment) if (TestResultsFiles != null && TestResultsFiles.Any()) { properties.Add("resultFiles", - string.Join(",", + string.Join(',', TestResultsFiles.Select(filePath => filePath .MakeAbsolute(environment) diff --git a/src/Cake.Common/Build/GitHubActions/Commands/GitHubActionsCommands.cs b/src/Cake.Common/Build/GitHubActions/Commands/GitHubActionsCommands.cs index ac2c5700de..5504f756e0 100644 --- a/src/Cake.Common/Build/GitHubActions/Commands/GitHubActionsCommands.cs +++ b/src/Cake.Common/Build/GitHubActions/Commands/GitHubActionsCommands.cs @@ -285,7 +285,7 @@ internal void WriteCommand(string command, string message = null) internal void WriteCommand(string command, Dictionary parameters, string message) { - var parameterString = parameters?.Count > 0 ? string.Concat(" ", string.Join(",", parameters.Select(pair => $"{pair.Key}={EscapeCommandParameter(pair.Value)}"))) : string.Empty; + var parameterString = parameters?.Count > 0 ? string.Concat(" ", string.Join(',', parameters.Select(pair => $"{pair.Key}={EscapeCommandParameter(pair.Value)}"))) : string.Empty; _writer.Write("::{0}{1}::{2}", command, parameterString, EscapeCommandMessage(message)); } diff --git a/src/Cake.Common/Tools/Chocolatey/Pack/ChocolateyNuSpecTransformer.cs b/src/Cake.Common/Tools/Chocolatey/Pack/ChocolateyNuSpecTransformer.cs index c3904f5def..990e4de872 100644 --- a/src/Cake.Common/Tools/Chocolatey/Pack/ChocolateyNuSpecTransformer.cs +++ b/src/Cake.Common/Tools/Chocolatey/Pack/ChocolateyNuSpecTransformer.cs @@ -185,7 +185,7 @@ private static string ToString(bool value) private static string ToCommaSeparatedString(ICollection values) { return values != null && values.Count != 0 - ? string.Join(",", values) + ? string.Join(',', values) : null; } @@ -199,7 +199,7 @@ private static string ToMultiLineString(ICollection values) private static string ToSpaceSeparatedString(ICollection values) { return values != null && values.Count != 0 - ? string.Join(" ", values.Select(x => x.Replace(" ", "-"))) + ? string.Join(' ', values.Select(x => x.Replace(" ", "-"))) : null; } } diff --git a/src/Cake.Common/Tools/DotCover/DotCoverCoverageTool.cs b/src/Cake.Common/Tools/DotCover/DotCoverCoverageTool.cs index adcb3edd3d..fafa0d4a16 100644 --- a/src/Cake.Common/Tools/DotCover/DotCoverCoverageTool.cs +++ b/src/Cake.Common/Tools/DotCover/DotCoverCoverageTool.cs @@ -81,28 +81,28 @@ protected ProcessArgumentBuilder GetCoverageArguments(DotCoverCoverageSettings s // Scope if (settings.Scope.Count > 0) { - var scope = string.Join(";", settings.Scope); + var scope = string.Join(';', settings.Scope); builder.AppendSwitch("/Scope", "=", scope.Quote()); } // Filters if (settings.Filters.Count > 0) { - var filters = string.Join(";", settings.Filters); + var filters = string.Join(';', settings.Filters); builder.AppendSwitch("/Filters", "=", filters.Quote()); } // AttributeFilters if (settings.AttributeFilters.Count > 0) { - var attributeFilters = string.Join(";", settings.AttributeFilters); + var attributeFilters = string.Join(';', settings.AttributeFilters); builder.AppendSwitch("/AttributeFilters", "=", attributeFilters.Quote()); } // Filters if (settings.ProcessFilters.Count > 0) { - var processFilters = string.Join(";", settings.ProcessFilters); + var processFilters = string.Join(';', settings.ProcessFilters); builder.AppendSwitch("/ProcessFilters", "=", processFilters.Quote()); } diff --git a/src/Cake.Common/Tools/DotCover/Merge/DotCoverMerger.cs b/src/Cake.Common/Tools/DotCover/Merge/DotCoverMerger.cs index 785a1f8c6c..491819f858 100644 --- a/src/Cake.Common/Tools/DotCover/Merge/DotCoverMerger.cs +++ b/src/Cake.Common/Tools/DotCover/Merge/DotCoverMerger.cs @@ -75,7 +75,7 @@ private ProcessArgumentBuilder GetArguments( GetConfigurationFileArgument(settings).CopyTo(builder); // Set the Source files. - var source = string.Join(";", sourceFiles.Select(s => s.MakeAbsolute(_environment).FullPath)); + var source = string.Join(';', sourceFiles.Select(s => s.MakeAbsolute(_environment).FullPath)); builder.AppendSwitch("/Source", "=", source.Quote()); // Set the Output file. diff --git a/src/Cake.Common/Tools/DotNet/Format/DotNetFormatter.cs b/src/Cake.Common/Tools/DotNet/Format/DotNetFormatter.cs index 225893a7f0..149d9c0e2b 100644 --- a/src/Cake.Common/Tools/DotNet/Format/DotNetFormatter.cs +++ b/src/Cake.Common/Tools/DotNet/Format/DotNetFormatter.cs @@ -75,7 +75,7 @@ private ProcessArgumentBuilder GetArguments(string root, string subcommand, DotN // Diagnostics if (settings.Diagnostics != null && settings.Diagnostics.Any()) { - builder.AppendSwitch("--diagnostics", string.Join(" ", settings.Diagnostics)); + builder.AppendSwitch("--diagnostics", string.Join(' ', settings.Diagnostics)); } // Severity @@ -100,13 +100,13 @@ private ProcessArgumentBuilder GetArguments(string root, string subcommand, DotN // Include if (settings.Include != null && settings.Include.Any()) { - builder.AppendSwitch("--include", string.Join(" ", settings.Include)); + builder.AppendSwitch("--include", string.Join(' ', settings.Include)); } // Exclude if (settings.Exclude != null && settings.Exclude.Any()) { - builder.AppendSwitch("--exclude", string.Join(" ", settings.Exclude)); + builder.AppendSwitch("--exclude", string.Join(' ', settings.Exclude)); } // Include Generated diff --git a/src/Cake.Common/Tools/DotNet/MSBuild/DotNetMSBuildSettings.cs b/src/Cake.Common/Tools/DotNet/MSBuild/DotNetMSBuildSettings.cs index d6cfefcca7..404fc49643 100644 --- a/src/Cake.Common/Tools/DotNet/MSBuild/DotNetMSBuildSettings.cs +++ b/src/Cake.Common/Tools/DotNet/MSBuild/DotNetMSBuildSettings.cs @@ -268,8 +268,7 @@ private string GetPropertyValueOrDefault(string propertyName, string @default = return @default; } - var propertyValue = string.Join(";", propertyValues); - return propertyValue; + return string.Join(';', propertyValues); } } } \ No newline at end of file diff --git a/src/Cake.Common/Tools/DotNet/MSBuild/MSBuildArgumentBuilderExtensions.cs b/src/Cake.Common/Tools/DotNet/MSBuild/MSBuildArgumentBuilderExtensions.cs index 608573867c..1950483b76 100644 --- a/src/Cake.Common/Tools/DotNet/MSBuild/MSBuildArgumentBuilderExtensions.cs +++ b/src/Cake.Common/Tools/DotNet/MSBuild/MSBuildArgumentBuilderExtensions.cs @@ -49,7 +49,7 @@ public static void AppendMSBuildSettings(this ProcessArgumentBuilder builder, Do throw new ArgumentException("Specify the name of the target", nameof(settings.Targets)); } - msBuilder.AppendMSBuildSwitch("target", string.Join(";", settings.Targets)); + msBuilder.AppendMSBuildSwitch("target", string.Join(';', settings.Targets)); } // Got any properties? @@ -202,7 +202,7 @@ public static void AppendMSBuildSettings(this ProcessArgumentBuilder builder, Do // set project file extensions to ignore when searching for project file if (settings.IgnoreProjectExtensions.Any()) { - msBuilder.AppendMSBuildSwitch("ignoreprojectextensions", string.Join(",", settings.IgnoreProjectExtensions)); + msBuilder.AppendMSBuildSwitch("ignoreprojectextensions", string.Join(',', settings.IgnoreProjectExtensions)); } // detailed summary? @@ -343,7 +343,7 @@ private static string GetLoggerSettings(MSBuildFileLoggerSettings loggerSettings settings.Add($"Encoding={loggerSettings.FileEncoding}"); } - return string.Join(";", settings); + return string.Join(';', settings); } private static string GetLoggerSettings(MSBuildLoggerSettings loggerSettings) @@ -418,13 +418,13 @@ private static string GetLoggerSettings(MSBuildLoggerSettings loggerSettings) settings.Add($"Verbosity={loggerSettings.Verbosity}"); } - return string.Join(";", settings); + return string.Join(';', settings); } private static string GetWarningCodes(bool shouldApplyToAllWarnings, IList warningCodes) => shouldApplyToAllWarnings ? null - : string.Join(";", warningCodes); + : string.Join(';', warningCodes); private static void AppendMSBuildSwitch(this ProcessArgumentBuilder builder, string @switch) => builder.Append($"/{@switch}"); diff --git a/src/Cake.Common/Tools/DotNet/Package/List/DotNetPackageLister.cs b/src/Cake.Common/Tools/DotNet/Package/List/DotNetPackageLister.cs index 0ef6db7ce5..e5127efa07 100644 --- a/src/Cake.Common/Tools/DotNet/Package/List/DotNetPackageLister.cs +++ b/src/Cake.Common/Tools/DotNet/Package/List/DotNetPackageLister.cs @@ -50,7 +50,7 @@ public DotNetPackageList List(string project, DotNetPackageListSettings settings var output = string.Empty; Run(settings, GetArguments(project, settings), new ProcessSettings { RedirectStandardOutput = true }, process => { - output = string.Join("\n", process.GetStandardOutput()); + output = string.Join('\n', process.GetStandardOutput()); }); return JsonSerializer.Deserialize(output, new JsonSerializerOptions diff --git a/src/Cake.Common/Tools/DotNet/VSTest/DotNetVSTester.cs b/src/Cake.Common/Tools/DotNet/VSTest/DotNetVSTester.cs index f1178bf8c7..49cbcb454a 100644 --- a/src/Cake.Common/Tools/DotNet/VSTest/DotNetVSTester.cs +++ b/src/Cake.Common/Tools/DotNet/VSTest/DotNetVSTester.cs @@ -76,7 +76,7 @@ private ProcessArgumentBuilder GetArguments(IEnumerable testFiles, Dot // Tests to run if (settings.TestsToRun.Any()) { - builder.AppendSwitch("--Tests", ":", string.Join(",", settings.TestsToRun)); + builder.AppendSwitch("--Tests", ":", string.Join(',', settings.TestsToRun)); } // Path to custom test adapter diff --git a/src/Cake.Common/Tools/DotNet/Workload/Install/DotNetWorkloadInstaller.cs b/src/Cake.Common/Tools/DotNet/Workload/Install/DotNetWorkloadInstaller.cs index 682d2f8299..5ac423d7af 100644 --- a/src/Cake.Common/Tools/DotNet/Workload/Install/DotNetWorkloadInstaller.cs +++ b/src/Cake.Common/Tools/DotNet/Workload/Install/DotNetWorkloadInstaller.cs @@ -62,7 +62,7 @@ private ProcessArgumentBuilder GetArguments(IEnumerable workloadIds, Dot if (workloadIds != null && workloadIds.Any()) { - builder.Append(string.Join(" ", workloadIds)); + builder.Append(string.Join(' ', workloadIds)); } // Config File diff --git a/src/Cake.Common/Tools/DotNet/Workload/Uninstall/DotNetWorkloadUninstaller.cs b/src/Cake.Common/Tools/DotNet/Workload/Uninstall/DotNetWorkloadUninstaller.cs index 5fe7c0d573..95f6ae79a5 100644 --- a/src/Cake.Common/Tools/DotNet/Workload/Uninstall/DotNetWorkloadUninstaller.cs +++ b/src/Cake.Common/Tools/DotNet/Workload/Uninstall/DotNetWorkloadUninstaller.cs @@ -54,7 +54,7 @@ private ProcessArgumentBuilder GetArguments(IEnumerable workloadIds, Dot if (workloadIds != null && workloadIds.Any()) { - builder.Append(string.Join(" ", workloadIds)); + builder.Append(string.Join(' ', workloadIds)); } return builder; diff --git a/src/Cake.Common/Tools/GitVersion/GitVersionRunner.cs b/src/Cake.Common/Tools/GitVersion/GitVersionRunner.cs index 85eb59485a..58fd313bd4 100644 --- a/src/Cake.Common/Tools/GitVersion/GitVersionRunner.cs +++ b/src/Cake.Common/Tools/GitVersion/GitVersionRunner.cs @@ -58,7 +58,7 @@ public GitVersion Run(GitVersionSettings settings) var output = string.Empty; Run(settings, GetArguments(settings), new ProcessSettings { RedirectStandardOutput = true }, process => { - output = string.Join("\n", process.GetStandardOutput()); + output = string.Join('\n', process.GetStandardOutput()); if (_log.Verbosity < Verbosity.Diagnostic) { var errors = Regex.Matches(output, @"( *ERROR:? [^\n]*)\n([^\n]*)").Cast() diff --git a/src/Cake.Common/Tools/ILMerge/ILMergeRunner.cs b/src/Cake.Common/Tools/ILMerge/ILMergeRunner.cs index 489fe1e1a0..6325e0ade7 100644 --- a/src/Cake.Common/Tools/ILMerge/ILMergeRunner.cs +++ b/src/Cake.Common/Tools/ILMerge/ILMergeRunner.cs @@ -250,7 +250,7 @@ private static string GetTargetPlatformParameter(ILMergeSettings settings) { result.Add(settings.TargetPlatform.Path.FullPath.Quote()); } - return string.Concat("/targetPlatform:", string.Join(",", result)); + return string.Concat("/targetPlatform:", string.Join(',', result)); } private static string GetTargetPlatformString(TargetPlatformVersion version) diff --git a/src/Cake.Common/Tools/MSBuild/MSBuildFileLogger.cs b/src/Cake.Common/Tools/MSBuild/MSBuildFileLogger.cs index ef516d6e85..3d21fca691 100644 --- a/src/Cake.Common/Tools/MSBuild/MSBuildFileLogger.cs +++ b/src/Cake.Common/Tools/MSBuild/MSBuildFileLogger.cs @@ -100,7 +100,7 @@ public string GetParameters(ICakeEnvironment environment) parameters.Add(ShowEventId ? "ShowEventId" : null); parameters.Add(Verbosity != null ? $"Verbosity={Verbosity.Value.GetMSBuildVerbosityName()}" : null); - return string.Join(";", parameters.Where(p => p != null)); + return string.Join(';', parameters.Where(p => p != null)); } } } diff --git a/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs b/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs index 2955e88b34..307640cbd4 100644 --- a/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs +++ b/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs @@ -135,7 +135,7 @@ private ProcessArgumentBuilder GetArguments(FilePath projectFile, MSBuildSetting // Got any targets? if (settings.Targets.Count > 0) { - var targets = string.Join(";", settings.Targets); + var targets = string.Join(';', settings.Targets); builder.Append(string.Concat("/target:", targets)); } else @@ -227,7 +227,7 @@ private ProcessArgumentBuilder GetArguments(FilePath projectFile, MSBuildSetting // Treat errors as warnings? if (settings.WarningsAsErrorCodes.Any()) { - var codes = string.Join(";", settings.WarningsAsErrorCodes); + var codes = string.Join(';', settings.WarningsAsErrorCodes); builder.Append($"/warnaserror:{codes.Quote()}"); } else if (settings.WarningsAsError) @@ -238,7 +238,7 @@ private ProcessArgumentBuilder GetArguments(FilePath projectFile, MSBuildSetting // Any warnings to NOT treat as errors? if (settings.WarningsAsMessageCodes.Any()) { - var codes = string.Join(";", settings.WarningsAsMessageCodes); + var codes = string.Join(';', settings.WarningsAsMessageCodes); builder.Append($"/warnasmessage:{codes.Quote()}"); } @@ -257,7 +257,7 @@ private ProcessArgumentBuilder GetArguments(FilePath projectFile, MSBuildSetting // Got any console logger parameters? if (settings.ConsoleLoggerParameters.Count > 0) { - var argument = "/clp:" + string.Join(";", settings.ConsoleLoggerParameters); + var argument = "/clp:" + string.Join(';', settings.ConsoleLoggerParameters); builder.Append(argument); } diff --git a/src/Cake.Common/Tools/MSBuild/MSBuildSettings.cs b/src/Cake.Common/Tools/MSBuild/MSBuildSettings.cs index 7aec6e44b9..ee84e872d0 100644 --- a/src/Cake.Common/Tools/MSBuild/MSBuildSettings.cs +++ b/src/Cake.Common/Tools/MSBuild/MSBuildSettings.cs @@ -78,7 +78,7 @@ public sealed class MSBuildSettings : ToolSettings /// The MSBuild target. public string Target { - get => string.Join(";", Targets); + get => string.Join(';', Targets); set { Targets.Clear(); @@ -341,7 +341,7 @@ private string GetPropertyValueOrDefault(string propertyName, string @default = return @default; } - var propertyValue = string.Join(";", propertyValues); + var propertyValue = string.Join(';', propertyValues); return propertyValue; } } diff --git a/src/Cake.Common/Tools/NuGet/Install/NuGetInstaller.cs b/src/Cake.Common/Tools/NuGet/Install/NuGetInstaller.cs index 200253a7d5..418c0c1802 100644 --- a/src/Cake.Common/Tools/NuGet/Install/NuGetInstaller.cs +++ b/src/Cake.Common/Tools/NuGet/Install/NuGetInstaller.cs @@ -125,14 +125,14 @@ private ProcessArgumentBuilder GetArguments(string packageId, NuGetInstallSettin if (settings.Source != null && settings.Source.Count > 0) { builder.Append("-Source"); - builder.AppendQuoted(string.Join(";", settings.Source)); + builder.AppendQuoted(string.Join(';', settings.Source)); } // List of package fallback sources. if (settings.FallbackSource != null && settings.FallbackSource.Count > 0) { builder.Append("-FallbackSource"); - builder.AppendQuoted(string.Join(";", settings.FallbackSource)); + builder.AppendQuoted(string.Join(';', settings.FallbackSource)); } // No Cache? diff --git a/src/Cake.Common/Tools/NuGet/List/NuGetList.cs b/src/Cake.Common/Tools/NuGet/List/NuGetList.cs index ee6461b50c..7fc097e225 100644 --- a/src/Cake.Common/Tools/NuGet/List/NuGetList.cs +++ b/src/Cake.Common/Tools/NuGet/List/NuGetList.cs @@ -110,7 +110,7 @@ private ProcessArgumentBuilder GetHasArguments(string packageId, NuGetListSettin if (settings.Source != null && settings.Source.Count > 0) { builder.Append("-Source"); - builder.AppendQuoted(string.Join(";", settings.Source)); + builder.AppendQuoted(string.Join(';', settings.Source)); } if (settings.ConfigFile != null) diff --git a/src/Cake.Common/Tools/NuGet/Pack/NuGetPacker.cs b/src/Cake.Common/Tools/NuGet/Pack/NuGetPacker.cs index abfcb818c6..ce37d79ea8 100644 --- a/src/Cake.Common/Tools/NuGet/Pack/NuGetPacker.cs +++ b/src/Cake.Common/Tools/NuGet/Pack/NuGetPacker.cs @@ -230,7 +230,7 @@ private ProcessArgumentBuilder GetArguments(FilePath filePath, NuGetPackSettings throw new CakeException("Properties keys can not be null or empty."); } builder.Append("-Properties"); - builder.AppendQuoted(string.Join(";", + builder.AppendQuoted(string.Join(';', settings.Properties.Select(property => string.Concat(property.Key, "=", property.Value)))); } diff --git a/src/Cake.Common/Tools/NuGet/Pack/NuspecTransformer.cs b/src/Cake.Common/Tools/NuGet/Pack/NuspecTransformer.cs index c10e625cd6..fe061ac843 100644 --- a/src/Cake.Common/Tools/NuGet/Pack/NuspecTransformer.cs +++ b/src/Cake.Common/Tools/NuGet/Pack/NuspecTransformer.cs @@ -396,7 +396,7 @@ private static string ToString(bool? value) private static string ToCommaSeparatedString(ICollection values) { return values != null && values.Count != 0 - ? string.Join(",", values) + ? string.Join(',', values) : null; } @@ -410,7 +410,7 @@ private static string ToMultiLineString(ICollection values) private static string ToSpaceSeparatedString(ICollection values) { return values != null && values.Count != 0 - ? string.Join(" ", values.Select(x => x.Replace(" ", "-"))) + ? string.Join(' ', values.Select(x => x.Replace(" ", "-"))) : null; } } diff --git a/src/Cake.Common/Tools/NuGet/Restore/NuGetRestorer.cs b/src/Cake.Common/Tools/NuGet/Restore/NuGetRestorer.cs index e4539e6064..99a85b8db3 100644 --- a/src/Cake.Common/Tools/NuGet/Restore/NuGetRestorer.cs +++ b/src/Cake.Common/Tools/NuGet/Restore/NuGetRestorer.cs @@ -78,14 +78,14 @@ private ProcessArgumentBuilder GetArguments(FilePath targetFilePath, NuGetRestor if (settings.Source != null && settings.Source.Count > 0) { builder.Append("-Source"); - builder.AppendQuoted(string.Join(";", settings.Source)); + builder.AppendQuoted(string.Join(';', settings.Source)); } // List of package fallback sources. if (settings.FallbackSource != null && settings.FallbackSource.Count > 0) { builder.Append("-FallbackSource"); - builder.AppendQuoted(string.Join(";", settings.FallbackSource)); + builder.AppendQuoted(string.Join(';', settings.FallbackSource)); } // No Cache? diff --git a/src/Cake.Common/Tools/NuGet/Update/NuGetUpdater.cs b/src/Cake.Common/Tools/NuGet/Update/NuGetUpdater.cs index ea46273a34..c2dc95b777 100644 --- a/src/Cake.Common/Tools/NuGet/Update/NuGetUpdater.cs +++ b/src/Cake.Common/Tools/NuGet/Update/NuGetUpdater.cs @@ -63,14 +63,14 @@ private ProcessArgumentBuilder GetArguments(FilePath targetFile, NuGetUpdateSett if (settings.Id != null && settings.Id.Count > 0) { builder.Append("-Id"); - builder.AppendQuoted(string.Join(";", settings.Id)); + builder.AppendQuoted(string.Join(';', settings.Id)); } // List of package sources if (settings.Source != null && settings.Source.Count > 0) { builder.Append("-Source"); - builder.AppendQuoted(string.Join(";", settings.Source)); + builder.AppendQuoted(string.Join(';', settings.Source)); } // Verbosity? diff --git a/src/Cake.Common/Tools/OpenCover/OpenCoverRunner.cs b/src/Cake.Common/Tools/OpenCover/OpenCoverRunner.cs index b65d150290..fce9276d3f 100644 --- a/src/Cake.Common/Tools/OpenCover/OpenCoverRunner.cs +++ b/src/Cake.Common/Tools/OpenCover/OpenCoverRunner.cs @@ -110,21 +110,21 @@ private ProcessArgumentBuilder GetArguments( // Filters if (settings.Filters.Count > 0) { - var filters = string.Join(" ", settings.Filters); + var filters = string.Join(' ', settings.Filters); builder.AppendSwitch("-filter", ":", filters.Quote()); } // Exclude by attribute if (settings.ExcludedAttributeFilters.Count > 0) { - var filters = string.Join(";", settings.ExcludedAttributeFilters); + var filters = string.Join(';', settings.ExcludedAttributeFilters); builder.AppendSwitch("-excludebyattribute", ":", filters.Quote()); } // Exclude by file if (settings.ExcludedFileFilters.Count > 0) { - var filters = string.Join(";", settings.ExcludedFileFilters); + var filters = string.Join(';', settings.ExcludedFileFilters); builder.AppendSwitch("-excludebyfile", ":", filters.Quote()); } @@ -162,7 +162,7 @@ private ProcessArgumentBuilder GetArguments( // Exclude directories if (settings.ExcludeDirectories.Count > 0) { - var excludeDirs = string.Join(";", settings.ExcludeDirectories.Select(d => d.MakeAbsolute(_environment).FullPath)); + var excludeDirs = string.Join(';', settings.ExcludeDirectories.Select(d => d.MakeAbsolute(_environment).FullPath)); builder.AppendSwitch("-excludedirs", ":", excludeDirs.Quote()); } @@ -201,7 +201,7 @@ private ProcessArgumentBuilder GetArguments( // Search directories if (settings.SearchDirectories.Count > 0) { - var excludeDirs = string.Join(";", settings.SearchDirectories.Select(d => d.MakeAbsolute(_environment).FullPath)); + var excludeDirs = string.Join(';', settings.SearchDirectories.Select(d => d.MakeAbsolute(_environment).FullPath)); builder.AppendSwitch("-searchdirs", ":", excludeDirs.Quote()); } diff --git a/src/Cake.Common/Tools/ReportGenerator/ReportGeneratorRunner.cs b/src/Cake.Common/Tools/ReportGenerator/ReportGeneratorRunner.cs index 501b6dc4f7..46535058e1 100644 --- a/src/Cake.Common/Tools/ReportGenerator/ReportGeneratorRunner.cs +++ b/src/Cake.Common/Tools/ReportGenerator/ReportGeneratorRunner.cs @@ -69,7 +69,7 @@ private ProcessArgumentBuilder GetArgument(ReportGeneratorSettings settings, IEn { var builder = new ProcessArgumentBuilder(); - var joinedReports = string.Join(";", reports.Select(r => r.MakeAbsolute(_environment).FullPath)); + var joinedReports = string.Join(';', reports.Select(r => r.MakeAbsolute(_environment).FullPath)); AppendQuoted(builder, "reports", joinedReports); AppendQuoted(builder, "targetdir", targetDir.MakeAbsolute(_environment).FullPath); @@ -82,7 +82,7 @@ private ProcessArgumentBuilder GetArgument(ReportGeneratorSettings settings, IEn if (settings.SourceDirectories != null && settings.SourceDirectories.Any()) { - var joined = string.Join(";", settings.SourceDirectories.Select(d => d.MakeAbsolute(_environment).FullPath)); + var joined = string.Join(';', settings.SourceDirectories.Select(d => d.MakeAbsolute(_environment).FullPath)); AppendQuoted(builder, "sourcedirs", joined); } @@ -93,13 +93,13 @@ private ProcessArgumentBuilder GetArgument(ReportGeneratorSettings settings, IEn if (settings.AssemblyFilters != null && settings.AssemblyFilters.Any()) { - var joined = string.Join(";", settings.AssemblyFilters); + var joined = string.Join(';', settings.AssemblyFilters); AppendQuoted(builder, "assemblyfilters", joined); } if (settings.ClassFilters != null && settings.ClassFilters.Any()) { - var joined = string.Join(";", settings.ClassFilters); + var joined = string.Join(';', settings.ClassFilters); AppendQuoted(builder, "classfilters", joined); } diff --git a/src/Cake.Common/Tools/XBuild/XBuildRunner.cs b/src/Cake.Common/Tools/XBuild/XBuildRunner.cs index dc64f4e417..d93949d469 100644 --- a/src/Cake.Common/Tools/XBuild/XBuildRunner.cs +++ b/src/Cake.Common/Tools/XBuild/XBuildRunner.cs @@ -72,7 +72,7 @@ private ProcessArgumentBuilder GetArguments(FilePath solution, XBuildSettings se // Got any targets? if (settings.Targets.Count > 0) { - var targets = string.Join(";", settings.Targets); + var targets = string.Join(';', settings.Targets); builder.Append(string.Concat("/t:", targets)); } else diff --git a/src/Cake.Core/IO/DirectoryPath.cs b/src/Cake.Core/IO/DirectoryPath.cs index 5be5f29a7b..991f290159 100644 --- a/src/Cake.Core/IO/DirectoryPath.cs +++ b/src/Cake.Core/IO/DirectoryPath.cs @@ -99,8 +99,8 @@ public DirectoryPath GetParent() var segments = collapsed.Segments.Take(collapsed.Segments.Length - 1); var fullPath = collapsed.IsUNC - ? @"\\" + string.Join(Separator.ToString(), segments.Skip(1)) - : string.Join(Separator.ToString(), segments); + ? @"\\" + string.Join(Separator, segments.Skip(1)) + : string.Join(Separator, segments); return new DirectoryPath(fullPath); } diff --git a/src/Cake.Core/IO/Globbing/GlobVisitorContext.cs b/src/Cake.Core/IO/Globbing/GlobVisitorContext.cs index b3abf559b4..540375a02c 100644 --- a/src/Cake.Core/IO/Globbing/GlobVisitorContext.cs +++ b/src/Cake.Core/IO/Globbing/GlobVisitorContext.cs @@ -57,19 +57,19 @@ private DirectoryPath GenerateFullPath() if (_pathParts.Count > 0 && _pathParts[0] == @"\\") { // UNC path - var path = string.Concat(@"\\", string.Join(@"\", _pathParts.Skip(1))); + var path = string.Concat(@"\\", string.Join('\\', _pathParts.Skip(1))); return new DirectoryPath(path); } if (_pathParts.Count > 0 && _pathParts[0] == "/") { // Unix root path - var path = string.Concat("/", string.Join("/", _pathParts.Skip(1))); + var path = string.Concat("/", string.Join('/', _pathParts.Skip(1))); return new DirectoryPath(path); } else { // Regular path - var path = string.Join("/", _pathParts); + var path = string.Join('/', _pathParts); if (string.IsNullOrWhiteSpace(path)) { path = "./"; diff --git a/src/Cake.Core/IO/PathCollapser.cs b/src/Cake.Core/IO/PathCollapser.cs index 5e86198729..765862f02f 100644 --- a/src/Cake.Core/IO/PathCollapser.cs +++ b/src/Cake.Core/IO/PathCollapser.cs @@ -58,7 +58,7 @@ public static string Collapse(Path path) } stack.Push(segment); } - var collapsed = string.Join(path.Separator.ToString(), stack.Reverse()); + var collapsed = string.Join(path.Separator, stack.Reverse()); if (collapsed != string.Empty) { return collapsed; diff --git a/src/Cake.Core/IO/PathHelper.cs b/src/Cake.Core/IO/PathHelper.cs index 9fccf29f3c..1ca1a82f2a 100644 --- a/src/Cake.Core/IO/PathHelper.cs +++ b/src/Cake.Core/IO/PathHelper.cs @@ -121,10 +121,10 @@ public static string GetDirectoryName(FilePath path) if (path.IsUNC) { var segments = path.Segments.Skip(1).Take(path.Segments.Length - 2); - return string.Concat(@"\\", string.Join("\\", segments)); + return string.Concat(@"\\", string.Join('\\', segments)); } - return string.Join("/", path.Segments.Take(path.Segments.Length - 1)); + return string.Join('/', path.Segments.Take(path.Segments.Length - 1)); } public static string GetFileName(FilePath path) diff --git a/src/Cake.Core/IO/ProcessArgumentBuilder.cs b/src/Cake.Core/IO/ProcessArgumentBuilder.cs index eea62f5d09..ba2def70a5 100644 --- a/src/Cake.Core/IO/ProcessArgumentBuilder.cs +++ b/src/Cake.Core/IO/ProcessArgumentBuilder.cs @@ -86,7 +86,7 @@ public void PrependRange(IEnumerable arguments) /// A string representation of the arguments. public string Render() { - return string.Join(" ", _tokens.Select(t => t.Render())); + return string.Join(' ', _tokens.Select(t => t.Render())); } /// @@ -96,7 +96,7 @@ public string Render() /// A safe string representation of the arguments. public string RenderSafe() { - return string.Join(" ", _tokens.Select(t => t.RenderSafe())); + return string.Join(' ', _tokens.Select(t => t.RenderSafe())); } /// diff --git a/src/Cake.Core/Text/TextTransformationTemplate.cs b/src/Cake.Core/Text/TextTransformationTemplate.cs index 1c9123728b..a21144add9 100644 --- a/src/Cake.Core/Text/TextTransformationTemplate.cs +++ b/src/Cake.Core/Text/TextTransformationTemplate.cs @@ -102,7 +102,7 @@ private string Replace(Match match) if (parts.Length > 1) { // Formattable? - var format = string.Join(":", parts.Skip(1).Take(parts.Length - 1)).Trim(); + var format = string.Join(':', parts.Skip(1).Take(parts.Length - 1)).Trim(); var formattable = _tokens[key] as IFormattable; if (formattable != null) { diff --git a/src/Cake.Testing/FakeFileSystemTree.cs b/src/Cake.Testing/FakeFileSystemTree.cs index fa0329aba5..c289dc2adc 100644 --- a/src/Cake.Testing/FakeFileSystemTree.cs +++ b/src/Cake.Testing/FakeFileSystemTree.cs @@ -290,7 +290,7 @@ public void MoveDirectory(FakeDirectory fakeDirectory, DirectoryPath destination throw new IOException("The destination directory already exists."); } - string destinationParentPathStr = string.Join("/", destination.Segments.Take(destination.Segments.Length - 1).DefaultIfEmpty("/")); + string destinationParentPathStr = string.Join('/', destination.Segments.Take(destination.Segments.Length - 1).DefaultIfEmpty("/")); DirectoryPath destinationParentPath = new DirectoryPath(destinationParentPathStr == string.Empty ? "/" : destinationParentPathStr); if (FindDirectory(destinationParentPath) == null) { diff --git a/src/Cake/Features/Bootstrapping/BootstrapFeature.cs b/src/Cake/Features/Bootstrapping/BootstrapFeature.cs index 4c1b666c7b..7c589d354d 100644 --- a/src/Cake/Features/Bootstrapping/BootstrapFeature.cs +++ b/src/Cake/Features/Bootstrapping/BootstrapFeature.cs @@ -77,7 +77,7 @@ private static ScriptAnalyzerResult PerformAnalysis(IScriptAnalyzer analyzer, Di var result = analyzer.Analyze(settings.Script, new ScriptAnalyzerSettings() { Mode = ScriptAnalyzerMode.Modules }); if (!result.Succeeded) { - var messages = string.Join("\n", result.Errors.Select(s => $"{root.GetRelativePath(s.File).FullPath}, line #{s.Line}: {s.Message}")); + var messages = string.Join('\n', result.Errors.Select(s => $"{root.GetRelativePath(s.File).FullPath}, line #{s.Line}: {s.Message}")); throw new AggregateException($"Bootstrapping failed for '{settings.Script}'.\n{messages}"); }