From b31dfeeebc55b4a7a261a274bf238cb27be697d5 Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Thu, 16 Apr 2020 13:57:04 -0700 Subject: [PATCH 1/2] allow formatting when ScriptAnalysis is off --- .../Services/Analysis/AnalysisService.cs | 36 ++++++------------- .../Analysis/PssaCmdletAnalysisEngine.cs | 12 ++++--- 2 files changed, 18 insertions(+), 30 deletions(-) diff --git a/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs b/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs index 6b2d25d27..4c0f5c93b 100644 --- a/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs +++ b/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs @@ -138,13 +138,13 @@ public void RunScriptDiagnostics( ScriptFile[] filesToAnalyze, CancellationToken cancellationToken) { - EnsureEngineSettingsCurrent(); - - if (AnalysisEngine == null) + if (_configurationService.CurrentSettings.ScriptAnalysis.Enable == false) { return; } + EnsureEngineSettingsCurrent(); + // Create a cancellation token source that will cancel if we do or if the caller does var cancellationSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); @@ -191,12 +191,6 @@ public void RunScriptDiagnostics( public Task FormatAsync(string scriptFileContents, Hashtable formatSettings, int[] formatRange = null) { EnsureEngineSettingsCurrent(); - - if (AnalysisEngine == null) - { - return null; - } - return AnalysisEngine.FormatAsync(scriptFileContents, formatSettings, formatRange); } @@ -263,13 +257,17 @@ public void ClearMarkers(ScriptFile file) /// The new language server settings. public void OnConfigurationUpdated(object sender, LanguageServerSettings settings) { - InitializeAnalysisEngineToCurrentSettings(); + if (settings.ScriptAnalysis.Enable ?? true) + { + InitializeAnalysisEngineToCurrentSettings(); + } } private void EnsureEngineSettingsCurrent() { - if (_pssaSettingsFilePath != null - && !File.Exists(_pssaSettingsFilePath)) + if (_analysisEngineLazy == null || + (_pssaSettingsFilePath != null + && !File.Exists(_pssaSettingsFilePath))) { InitializeAnalysisEngineToCurrentSettings(); } @@ -277,18 +275,6 @@ private void EnsureEngineSettingsCurrent() private void InitializeAnalysisEngineToCurrentSettings() { - // If script analysis has been disabled, just return null - if (_configurationService.CurrentSettings.ScriptAnalysis.Enable != true) - { - if (_analysisEngineLazy != null && _analysisEngineLazy.IsValueCreated) - { - _analysisEngineLazy.Value.Dispose(); - } - - _analysisEngineLazy = null; - return; - } - // We may be triggered after the lazy factory is set, // but before it's been able to instantiate if (_analysisEngineLazy == null) @@ -357,7 +343,7 @@ private bool TryFindSettingsFile(out string settingsFilePath) if (settingsFilePath == null || !File.Exists(settingsFilePath)) { - _logger.LogWarning($"Unable to find PSSA settings file at '{configuredPath}'. Loading default rules."); + _logger.LogInformation($"Unable to find PSSA settings file at '{configuredPath}'. Loading default rules."); settingsFilePath = null; return false; } diff --git a/src/PowerShellEditorServices/Services/Analysis/PssaCmdletAnalysisEngine.cs b/src/PowerShellEditorServices/Services/Analysis/PssaCmdletAnalysisEngine.cs index eb1617c7d..bb5531693 100644 --- a/src/PowerShellEditorServices/Services/Analysis/PssaCmdletAnalysisEngine.cs +++ b/src/PowerShellEditorServices/Services/Analysis/PssaCmdletAnalysisEngine.cs @@ -55,7 +55,7 @@ public Builder WithSettingsFile(string settingsPath) _settingsParameter = settingsPath; return this; } - + /// /// Uses a settings hashtable for PSSA rule configuration. /// @@ -176,7 +176,8 @@ public async Task FormatAsync(string scriptDefinition, Hashtable formatS // Invoke-Formatter throws a ParameterBinderValidationException if the ScriptDefinition is an empty string. if (string.IsNullOrEmpty(scriptDefinition)) { - return null; + _logger.LogDebug("Script Definition was: " + scriptDefinition == null ? "null" : "empty string"); + return scriptDefinition; } var psCommand = new PSCommand() @@ -194,7 +195,7 @@ public async Task FormatAsync(string scriptDefinition, Hashtable formatS if (result == null) { _logger.LogError("Formatter returned null result"); - return null; + return scriptDefinition; } if (result.HasErrors) @@ -205,7 +206,7 @@ public async Task FormatAsync(string scriptDefinition, Hashtable formatS errorBuilder.Append(err).Append(s_indentJoin); } _logger.LogWarning($"Errors found while formatting file: {errorBuilder}"); - return null; + return scriptDefinition; } foreach (PSObject resultObj in result.Output) @@ -216,7 +217,8 @@ public async Task FormatAsync(string scriptDefinition, Hashtable formatS } } - return null; + _logger.LogError("Couldn't get result from output. Returning original script."); + return scriptDefinition; } /// From 68ed23f9fde79f560df3a787c971921fa7d71f99 Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Thu, 16 Apr 2020 14:48:27 -0700 Subject: [PATCH 2/2] whitespace --- .../Services/Analysis/AnalysisService.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs b/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs index 4c0f5c93b..33c9b4480 100644 --- a/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs +++ b/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs @@ -265,9 +265,9 @@ public void OnConfigurationUpdated(object sender, LanguageServerSettings setting private void EnsureEngineSettingsCurrent() { - if (_analysisEngineLazy == null || - (_pssaSettingsFilePath != null - && !File.Exists(_pssaSettingsFilePath))) + if (_analysisEngineLazy == null + || (_pssaSettingsFilePath != null + && !File.Exists(_pssaSettingsFilePath))) { InitializeAnalysisEngineToCurrentSettings(); }