From de52f31d3f34465760f962930c4d679d850cc821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Pedro?= Date: Thu, 6 Dec 2018 00:39:52 +0000 Subject: [PATCH] Code cleanup. --- Directory.Build.props | 2 +- source/Cosmos.Build.Builder/App.xaml.cs | 2 +- .../BuildTasks/BuildTask.cs | 10 +++++---- .../BuildTasks/CreateSetupTask.cs | 16 +++++++------- .../BuildTasks/MSBuildTargetBuildTaskBase.cs | 2 +- .../BuildTasks/PackTask.cs | 2 +- .../BuildTasks/ProcessBuildTaskBase.cs | 8 +++---- .../BuildTasks/PublishTask.cs | 8 ++++--- .../BuildTasks/StartProcessTask.cs | 6 ++--- .../CommandLineBuilderConfiguration.cs | 2 +- .../CosmosBuildDefinition.cs | 6 ++--- .../Dependencies/InnoSetupDependency.cs | 5 +++-- .../Dependencies/ReposDependency.cs | 4 ++-- .../Dependencies/VisualStudioDependency.cs | 4 ++-- .../VisualStudioWorkloadsDependency.cs | 4 ++-- source/Cosmos.Build.Builder/Models/Section.cs | 2 +- .../Services/DialogService.cs | 4 ++-- .../Services/VisualStudioService.cs | 2 +- .../DependencyInstallationDialogViewModel.cs | 10 +++++++-- .../ViewModels/MainWindowLogger.cs | 2 +- .../ViewModels/MainWindowViewModel.cs | 22 ++++++++++--------- .../VisualStudioInstanceDialogViewModel.cs | 6 ++--- 22 files changed, 71 insertions(+), 58 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index f40331e7f..9c777ba79 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -2,7 +2,7 @@ Latest - CA1051;CA1707;CA1711;CA1801;$(NoWarn) + CA1051;CA1501;CA1707;CA1711;CA1801;$(NoWarn) diff --git a/source/Cosmos.Build.Builder/App.xaml.cs b/source/Cosmos.Build.Builder/App.xaml.cs index 447d80be9..362e3fa44 100644 --- a/source/Cosmos.Build.Builder/App.xaml.cs +++ b/source/Cosmos.Build.Builder/App.xaml.cs @@ -90,7 +90,7 @@ namespace Cosmos.Build.Builder base.OnStartup(e); } - private void ShowErrorMessageBox(string message) => + private static void ShowErrorMessageBox(string message) => MessageBox.Show(message, "Cosmos Kit Builder", MessageBoxButton.OK, MessageBoxImage.Error); } } diff --git a/source/Cosmos.Build.Builder/BuildTasks/BuildTask.cs b/source/Cosmos.Build.Builder/BuildTasks/BuildTask.cs index 249d44d03..bc4629d58 100644 --- a/source/Cosmos.Build.Builder/BuildTasks/BuildTask.cs +++ b/source/Cosmos.Build.Builder/BuildTasks/BuildTask.cs @@ -17,7 +17,7 @@ namespace Cosmos.Build.Builder.BuildTasks protected override IReadOnlyDictionary Properties => _properties; - private Dictionary _properties; + private readonly Dictionary _properties; public BuildTask( IMSBuildService msBuildService, @@ -28,9 +28,11 @@ namespace Cosmos.Build.Builder.BuildTasks { ProjectFilePath = projectFilePath; - _properties = new Dictionary(); - _properties.Add("OutputPath", outputPath); - _properties.Add("VsixOutputPath", vsixOutputPath); + _properties = new Dictionary() + { + ["OutputPath"] = outputPath, + ["VsixOutputPath"] = vsixOutputPath + }; } } } diff --git a/source/Cosmos.Build.Builder/BuildTasks/CreateSetupTask.cs b/source/Cosmos.Build.Builder/BuildTasks/CreateSetupTask.cs index f1ac19f7a..96d03533c 100644 --- a/source/Cosmos.Build.Builder/BuildTasks/CreateSetupTask.cs +++ b/source/Cosmos.Build.Builder/BuildTasks/CreateSetupTask.cs @@ -10,11 +10,10 @@ namespace Cosmos.Build.Builder.BuildTasks { public override string Name => "Create Setup"; - private IInnoSetupService _innoSetupService; + private readonly IInnoSetupService _innoSetupService; - private string _scriptFilePath; - - private Dictionary _defines; + private readonly string _scriptFilePath; + private readonly Dictionary _defines; public CreateSetupTask( IInnoSetupService innoSetupService, @@ -27,10 +26,11 @@ namespace Cosmos.Build.Builder.BuildTasks _scriptFilePath = scriptFilePath; - _defines = new Dictionary(); - - _defines.Add("BuildConfiguration", configuration); - _defines.Add("ChangeSetVersion", releaseVersion); + _defines = new Dictionary() + { + ["BuildConfiguration"] = configuration, + ["ChangeSetVersion"] = releaseVersion + }; } protected override string GetExePath() diff --git a/source/Cosmos.Build.Builder/BuildTasks/MSBuildTargetBuildTaskBase.cs b/source/Cosmos.Build.Builder/BuildTasks/MSBuildTargetBuildTaskBase.cs index 926329c63..29d4f98a6 100644 --- a/source/Cosmos.Build.Builder/BuildTasks/MSBuildTargetBuildTaskBase.cs +++ b/source/Cosmos.Build.Builder/BuildTasks/MSBuildTargetBuildTaskBase.cs @@ -12,7 +12,7 @@ namespace Cosmos.Build.Builder.BuildTasks protected abstract IReadOnlyDictionary Properties { get; } - private IMSBuildService _msBuildService; + private readonly IMSBuildService _msBuildService; protected MSBuildTargetBuildTaskBase(IMSBuildService msBuildService) : base(true, false) diff --git a/source/Cosmos.Build.Builder/BuildTasks/PackTask.cs b/source/Cosmos.Build.Builder/BuildTasks/PackTask.cs index bab999a32..6f620853f 100644 --- a/source/Cosmos.Build.Builder/BuildTasks/PackTask.cs +++ b/source/Cosmos.Build.Builder/BuildTasks/PackTask.cs @@ -17,7 +17,7 @@ namespace Cosmos.Build.Builder.BuildTasks protected override IReadOnlyDictionary Properties => _properties; - private Dictionary _properties; + private readonly Dictionary _properties; public PackTask( IMSBuildService msBuildService, diff --git a/source/Cosmos.Build.Builder/BuildTasks/ProcessBuildTaskBase.cs b/source/Cosmos.Build.Builder/BuildTasks/ProcessBuildTaskBase.cs index d99bbabbd..781fb2571 100644 --- a/source/Cosmos.Build.Builder/BuildTasks/ProcessBuildTaskBase.cs +++ b/source/Cosmos.Build.Builder/BuildTasks/ProcessBuildTaskBase.cs @@ -10,8 +10,8 @@ namespace Cosmos.Build.Builder.BuildTasks { public abstract string Name { get; } - private bool _waitForExit; - private bool _createWindow; + private readonly bool _waitForExit; + private readonly bool _createWindow; protected ProcessBuildTaskBase(bool waitForExit, bool createWindow) { @@ -56,7 +56,7 @@ namespace Cosmos.Build.Builder.BuildTasks protected abstract string GetExePath(); protected abstract string GetArguments(); - private void WaitForExit(Process process) + private static void WaitForExit(Process process) { process.WaitForExit(); @@ -66,7 +66,7 @@ namespace Cosmos.Build.Builder.BuildTasks } } - private async Task ReadOutputAsync(StreamReader reader, ILogger logger) + private static async Task ReadOutputAsync(StreamReader reader, ILogger logger) { while (true) { diff --git a/source/Cosmos.Build.Builder/BuildTasks/PublishTask.cs b/source/Cosmos.Build.Builder/BuildTasks/PublishTask.cs index 40d31a2d5..ec7916a12 100644 --- a/source/Cosmos.Build.Builder/BuildTasks/PublishTask.cs +++ b/source/Cosmos.Build.Builder/BuildTasks/PublishTask.cs @@ -17,7 +17,7 @@ namespace Cosmos.Build.Builder.BuildTasks protected override IReadOnlyDictionary Properties => _properties; - private Dictionary _properties; + private readonly Dictionary _properties; public PublishTask( IMSBuildService msBuildService, @@ -27,8 +27,10 @@ namespace Cosmos.Build.Builder.BuildTasks { ProjectFilePath = projectFilePath; - _properties = new Dictionary(); - _properties.Add("PublishDir", publishOutputPath); + _properties = new Dictionary() + { + ["PublishDir"] = publishOutputPath + }; } } } diff --git a/source/Cosmos.Build.Builder/BuildTasks/StartProcessTask.cs b/source/Cosmos.Build.Builder/BuildTasks/StartProcessTask.cs index c8e309987..f9cdce53b 100644 --- a/source/Cosmos.Build.Builder/BuildTasks/StartProcessTask.cs +++ b/source/Cosmos.Build.Builder/BuildTasks/StartProcessTask.cs @@ -6,10 +6,10 @@ namespace Cosmos.Build.Builder.BuildTasks { public override string Name => $"Run Process - {_processName ?? Path.GetFileNameWithoutExtension(_exePath)}"; - private string _exePath; - private string _args; + private readonly string _exePath; + private readonly string _args; - private string _processName; + private readonly string _processName; public StartProcessTask( string exePath, diff --git a/source/Cosmos.Build.Builder/CommandLineBuilderConfiguration.cs b/source/Cosmos.Build.Builder/CommandLineBuilderConfiguration.cs index 30b48f8cd..c5472a926 100644 --- a/source/Cosmos.Build.Builder/CommandLineBuilderConfiguration.cs +++ b/source/Cosmos.Build.Builder/CommandLineBuilderConfiguration.cs @@ -10,7 +10,7 @@ namespace Cosmos.Build.Builder public bool UserKit => GetSwitch(); public string VsPath => GetOption(); - private Dictionary _args; + private readonly Dictionary _args; public CommandLineBuilderConfiguration(string[] args) { diff --git a/source/Cosmos.Build.Builder/CosmosBuildDefinition.cs b/source/Cosmos.Build.Builder/CosmosBuildDefinition.cs index ad6ce5780..233261565 100644 --- a/source/Cosmos.Build.Builder/CosmosBuildDefinition.cs +++ b/source/Cosmos.Build.Builder/CosmosBuildDefinition.cs @@ -12,9 +12,9 @@ namespace Cosmos.Build.Builder { internal class CosmosBuildDefinition : IBuildDefinition { - private IInnoSetupService _innoSetupService; - private IMSBuildService _msBuildService; - private ISetupInstance2 _visualStudioInstance; + private readonly IInnoSetupService _innoSetupService; + private readonly IMSBuildService _msBuildService; + private readonly ISetupInstance2 _visualStudioInstance; private readonly string _cosmosDir; diff --git a/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs b/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs index c1bade0ec..806b605df 100644 --- a/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/InnoSetupDependency.cs @@ -12,9 +12,10 @@ namespace Cosmos.Build.Builder.Dependencies internal class InnoSetupDependency : IDependency { private const string InnoSetupInstallerUrl = "http://www.jrsoftware.org/download.php/is.exe"; + public string Name => "Inno Setup"; - private IInnoSetupService _innoSetupService; + private readonly IInnoSetupService _innoSetupService; public InnoSetupDependency(IInnoSetupService innoSetupService) { @@ -46,7 +47,7 @@ namespace Cosmos.Build.Builder.Dependencies } var process = Process.Start(setupFilePath); - await Task.Run((Action)process.WaitForExit, cancellationToken).ConfigureAwait(false); + await Task.Run(process.WaitForExit, cancellationToken).ConfigureAwait(false); if (process.ExitCode != 0) { diff --git a/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs b/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs index b5212afb2..44bfa9573 100644 --- a/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/ReposDependency.cs @@ -48,12 +48,12 @@ namespace Cosmos.Build.Builder.Dependencies .Select(r => DownloadRepoAsync(r, usesGit, cancellationToken))); } - private async Task DownloadRepoAsync(Repo repo, bool useGit, CancellationToken cancellationToken) + private static async Task DownloadRepoAsync(Repo repo, bool useGit, CancellationToken cancellationToken) { if (useGit) { var process = Process.Start("git", $"clone \"{repo.Url}.git\" \"{repo.LocalPath}\""); - await Task.Run((Action)process.WaitForExit).ConfigureAwait(false); + await Task.Run(process.WaitForExit).ConfigureAwait(false); if (process.ExitCode != 0) { diff --git a/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs b/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs index 8fb5e28c0..abdfa7968 100644 --- a/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/VisualStudioDependency.cs @@ -12,7 +12,7 @@ namespace Cosmos.Build.Builder.Dependencies public string Name => $"Visual Studio {MinimumVsVersion.Major}.{MinimumVsVersion.Minor}+"; - private ISetupInstance2 _visualStudioInstance; + private readonly ISetupInstance2 _visualStudioInstance; public VisualStudioDependency(ISetupInstance2 visualStudioInstance) { @@ -41,7 +41,7 @@ namespace Cosmos.Build.Builder.Dependencies var args = $"update --passive --norestart --installPath \"{vsInstancePath}\""; var process = Process.Start(vsInstallerPath, args); - await Task.Run((Action)process.WaitForExit, cancellationToken).ConfigureAwait(false); + await Task.Run(process.WaitForExit, cancellationToken).ConfigureAwait(false); if (process.ExitCode != 0) { diff --git a/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs b/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs index 276699b32..42a580674 100644 --- a/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs +++ b/source/Cosmos.Build.Builder/Dependencies/VisualStudioWorkloadsDependency.cs @@ -20,7 +20,7 @@ namespace Cosmos.Build.Builder.Dependencies public string Name => "Visual Studio Workloads"; - private ISetupInstance2 _visualStudioInstance; + private readonly ISetupInstance2 _visualStudioInstance; public VisualStudioWorkloadsDependency(ISetupInstance2 visualStudioInstance) { @@ -52,7 +52,7 @@ namespace Cosmos.Build.Builder.Dependencies } var process = Process.Start(vsInstallerPath, args); - await Task.Run((Action)process.WaitForExit, cancellationToken).ConfigureAwait(false); + await Task.Run(process.WaitForExit, cancellationToken).ConfigureAwait(false); if (process.ExitCode != 0) { diff --git a/source/Cosmos.Build.Builder/Models/Section.cs b/source/Cosmos.Build.Builder/Models/Section.cs index e784be846..456f5d2cf 100644 --- a/source/Cosmos.Build.Builder/Models/Section.cs +++ b/source/Cosmos.Build.Builder/Models/Section.cs @@ -11,7 +11,7 @@ namespace Cosmos.Build.Builder.Models public string Log => _logBuilder.ToString(); public bool HasLoggedErrors { get; private set; } - private StringBuilder _logBuilder; + private readonly StringBuilder _logBuilder; public Section(string name) { diff --git a/source/Cosmos.Build.Builder/Services/DialogService.cs b/source/Cosmos.Build.Builder/Services/DialogService.cs index 6353ffb60..6a845e6f8 100644 --- a/source/Cosmos.Build.Builder/Services/DialogService.cs +++ b/source/Cosmos.Build.Builder/Services/DialogService.cs @@ -5,8 +5,8 @@ namespace Cosmos.Build.Builder.Services { internal class DialogService : IDialogService where TView : Window { - private Func _dialogFactory; - private Window _owner; + private readonly Func _dialogFactory; + private readonly Window _owner; public DialogService(Func dialogFactory, Window owner = null) { diff --git a/source/Cosmos.Build.Builder/Services/VisualStudioService.cs b/source/Cosmos.Build.Builder/Services/VisualStudioService.cs index 8b450aa9c..f480bec21 100644 --- a/source/Cosmos.Build.Builder/Services/VisualStudioService.cs +++ b/source/Cosmos.Build.Builder/Services/VisualStudioService.cs @@ -8,7 +8,7 @@ namespace Cosmos.Build.Builder.Services { internal class VisualStudioService : IVisualStudioService { - private Lazy> _instances; + private readonly Lazy> _instances; public VisualStudioService() { diff --git a/source/Cosmos.Build.Builder/ViewModels/DependencyInstallationDialogViewModel.cs b/source/Cosmos.Build.Builder/ViewModels/DependencyInstallationDialogViewModel.cs index b8377c5d4..8c63e41ed 100644 --- a/source/Cosmos.Build.Builder/ViewModels/DependencyInstallationDialogViewModel.cs +++ b/source/Cosmos.Build.Builder/ViewModels/DependencyInstallationDialogViewModel.cs @@ -6,7 +6,7 @@ using System.Windows.Input; namespace Cosmos.Build.Builder.ViewModels { - internal class DependencyInstallationDialogViewModel : ViewModelBase + internal sealed class DependencyInstallationDialogViewModel : ViewModelBase, IDisposable { private const string InstallationSucceededText = "{0} installed successfully!"; private const string InstallationFailedText = "{0} failed to install!"; @@ -68,10 +68,16 @@ namespace Cosmos.Build.Builder.ViewModels OkCommand = new RelayCommand(p => Close(p as Window, true)); } + public void Dispose() + { + _installTask.Dispose(); + _installTaskCancellationTokenSource.Dispose(); + } + private void Install(object parameter) => _installTask = InstallAsync(); private void CancelInstallation(object parameter) => _installTaskCancellationTokenSource.Cancel(); - private void Close(Window window, bool? dialogResult) + private static void Close(Window window, bool? dialogResult) { #if DEBUG if (window == null) diff --git a/source/Cosmos.Build.Builder/ViewModels/MainWindowLogger.cs b/source/Cosmos.Build.Builder/ViewModels/MainWindowLogger.cs index a06c28480..6128130e7 100644 --- a/source/Cosmos.Build.Builder/ViewModels/MainWindowLogger.cs +++ b/source/Cosmos.Build.Builder/ViewModels/MainWindowLogger.cs @@ -9,7 +9,7 @@ namespace Cosmos.Build.Builder.ViewModels { private static readonly string[] NewLineStringArray = new string[] { Environment.NewLine }; - private MainWindowViewModel _viewModel; + private readonly MainWindowViewModel _viewModel; public MainWindowLogger(MainWindowViewModel viewModel) { diff --git a/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs b/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs index 9c8d66222..05836967d 100644 --- a/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs +++ b/source/Cosmos.Build.Builder/ViewModels/MainWindowViewModel.cs @@ -12,7 +12,7 @@ using Cosmos.Build.Builder.Services; namespace Cosmos.Build.Builder.ViewModels { - internal class MainWindowViewModel : ViewModelBase + internal sealed class MainWindowViewModel : ViewModelBase { private const int TailItemCount = 10; @@ -35,12 +35,12 @@ namespace Cosmos.Build.Builder.ViewModels set => SetAndRaiseIfChanged(ref _windowState, value); } - private ILogger _logger; + private readonly ILogger _logger; - private IDialogService _dependencyInstallationDialogService; + private readonly IDialogService _dependencyInstallationDialogService; - private IBuildDefinition _buildDefinition; - private Task _buildTask; + private readonly IBuildDefinition _buildDefinition; + private readonly Task _buildTask; private bool _closeWhenCompleted; @@ -109,12 +109,14 @@ namespace Cosmos.Build.Builder.ViewModels { _logger.LogMessage($"{dependency.Name} not found."); - var viewModel = new DependencyInstallationDialogViewModel(dependency); - _dependencyInstallationDialogService.ShowDialog(viewModel); - - if (!viewModel.InstallationSucceeded) + using (var viewModel = new DependencyInstallationDialogViewModel(dependency)) { - throw new Exception($"Dependency installation failed! Dependency name: {dependency.Name}"); + _dependencyInstallationDialogService.ShowDialog(viewModel); + + if (!viewModel.InstallationSucceeded) + { + throw new Exception($"Dependency installation failed! Dependency name: {dependency.Name}"); + } } } } diff --git a/source/Cosmos.Build.Builder/ViewModels/VisualStudioInstanceDialogViewModel.cs b/source/Cosmos.Build.Builder/ViewModels/VisualStudioInstanceDialogViewModel.cs index 384639181..1b4a64d83 100644 --- a/source/Cosmos.Build.Builder/ViewModels/VisualStudioInstanceDialogViewModel.cs +++ b/source/Cosmos.Build.Builder/ViewModels/VisualStudioInstanceDialogViewModel.cs @@ -9,7 +9,7 @@ using Cosmos.Build.Builder.Services; namespace Cosmos.Build.Builder.ViewModels { - internal class VisualStudioInstanceDialogViewModel : ViewModelBase + internal sealed class VisualStudioInstanceDialogViewModel : ViewModelBase { public IEnumerable VisualStudioInstances { get; } @@ -22,7 +22,7 @@ namespace Cosmos.Build.Builder.ViewModels public ICommand OkCommand { get; } public ICommand CancelCommand { get; } - private IVisualStudioService _visualStudioService; + private readonly IVisualStudioService _visualStudioService; private VisualStudioInstance _selectedVisualStudioInstance; @@ -37,7 +37,7 @@ namespace Cosmos.Build.Builder.ViewModels CancelCommand = new RelayCommand(p => Close(p as Window, false)); } - private void Close(Window window, bool? dialogResult) + private static void Close(Window window, bool? dialogResult) { #if DEBUG if (window == null)