From 630830bda50aca61b3d023d5e8f2cf8c5baaf710 Mon Sep 17 00:00:00 2001 From: naduttac Date: Thu, 13 Jul 2017 17:28:37 -0700 Subject: [PATCH] Adding the temporary fix for HelpAnalyzer. --- .../BreakingChangeAnalyzer.cs | 97 ++++++++++--------- .../HelpAnalyzer/HelpAnalyzer.cs | 47 +++++---- 2 files changed, 81 insertions(+), 63 deletions(-) diff --git a/tools/StaticAnalysis/BreakingChangeAnalyzer/BreakingChangeAnalyzer.cs b/tools/StaticAnalysis/BreakingChangeAnalyzer/BreakingChangeAnalyzer.cs index 04e8c729450a..4041fd7d2388 100644 --- a/tools/StaticAnalysis/BreakingChangeAnalyzer/BreakingChangeAnalyzer.cs +++ b/tools/StaticAnalysis/BreakingChangeAnalyzer/BreakingChangeAnalyzer.cs @@ -109,73 +109,82 @@ public void Analyze( " -BindingVariable ModuleMetadata; $ModuleMetadata.NestedModules"); var cmdletResult = powershell.Invoke(); - var cmdletFiles = cmdletResult.Select(c => c.ToString().Substring(2)); - if (cmdletFiles.Any()) + if (cmdletResult.Count > 1) { - foreach (var cmdletFileName in cmdletFiles) + var cmdletFiles = cmdletResult.Select(c => c.ToString().Substring(2)); + + if (cmdletFiles.Any()) { - var cmdletFileFullPath = Path.Combine(directory, Path.GetFileName(cmdletFileName)); - - if (File.Exists(cmdletFileFullPath)) + foreach (var cmdletFileName in cmdletFiles) { - issueLogger.Decorator.AddDecorator(a => a.AssemblyFileName = cmdletFileFullPath, "AssemblyFileName"); - processedHelpFiles.Add(cmdletFileName); - var proxy = - EnvironmentHelpers.CreateProxy(directory, out _appDomain); - var newModuleMetadata = proxy.GetModuleMetadata(cmdletFileFullPath); + var cmdletFileFullPath = Path.Combine(directory, Path.GetFileName(cmdletFileName)); - string fileName = cmdletFileName + ".json"; - string executingPath = - Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath); + if (File.Exists(cmdletFileFullPath)) + { + issueLogger.Decorator.AddDecorator(a => a.AssemblyFileName = cmdletFileFullPath, "AssemblyFileName"); + processedHelpFiles.Add(cmdletFileName); + var proxy = + EnvironmentHelpers.CreateProxy(directory, out _appDomain); + var newModuleMetadata = proxy.GetModuleMetadata(cmdletFileFullPath); - string filePath = executingPath + "\\SerializedCmdlets\\" + fileName; - bool serialize = false; + string fileName = cmdletFileName + ".json"; + string executingPath = + Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath); - if (serialize) - { - SerializeCmdlets(filePath, newModuleMetadata); - } - else - { - if (!File.Exists(filePath)) + string filePath = executingPath + "\\SerializedCmdlets\\" + fileName; + bool serialize = false; + + if (serialize) { - continue; + SerializeCmdlets(filePath, newModuleMetadata); } + else + { + if (!File.Exists(filePath)) + { + continue; + } - var oldModuleMetadata = DeserializeCmdlets(filePath); + var oldModuleMetadata = DeserializeCmdlets(filePath); - if (cmdletFilter != null) - { - string output = string.Format("Before filter\nOld module cmdlet count: {0}\nNew module cmdlet count: {1}", - oldModuleMetadata.Cmdlets.Count, newModuleMetadata.Cmdlets.Count); + if (cmdletFilter != null) + { + string output = string.Format("Before filter\nOld module cmdlet count: {0}\nNew module cmdlet count: {1}", + oldModuleMetadata.Cmdlets.Count, newModuleMetadata.Cmdlets.Count); - output += string.Format("\nCmdlet file: {0}", cmdletFileFullPath); + output += string.Format("\nCmdlet file: {0}", cmdletFileFullPath); - oldModuleMetadata.FilterCmdlets(cmdletFilter); - newModuleMetadata.FilterCmdlets(cmdletFilter); + oldModuleMetadata.FilterCmdlets(cmdletFilter); + newModuleMetadata.FilterCmdlets(cmdletFilter); - output += string.Format("After filter\nOld module cmdlet count: {0}\nNew module cmdlet count: {1}", - oldModuleMetadata.Cmdlets.Count, newModuleMetadata.Cmdlets.Count); + output += string.Format("After filter\nOld module cmdlet count: {0}\nNew module cmdlet count: {1}", + oldModuleMetadata.Cmdlets.Count, newModuleMetadata.Cmdlets.Count); - foreach (var cmdlet in oldModuleMetadata.Cmdlets) - { - output += string.Format("\n\tOld cmdlet - {0}", cmdlet.Name); - } + foreach (var cmdlet in oldModuleMetadata.Cmdlets) + { + output += string.Format("\n\tOld cmdlet - {0}", cmdlet.Name); + } - foreach (var cmdlet in newModuleMetadata.Cmdlets) - { - output += string.Format("\n\tNew cmdlet - {0}", cmdlet.Name); + foreach (var cmdlet in newModuleMetadata.Cmdlets) + { + output += string.Format("\n\tNew cmdlet - {0}", cmdlet.Name); + } + + issueLogger.WriteMessage(output + Environment.NewLine); } - issueLogger.WriteMessage(output + Environment.NewLine); + RunBreakingChangeChecks(oldModuleMetadata, newModuleMetadata, issueLogger); } - - RunBreakingChangeChecks(oldModuleMetadata, newModuleMetadata, issueLogger); } } } } + + if (cmdletResult.Count == 0) + { + return; + } } } } diff --git a/tools/StaticAnalysis/HelpAnalyzer/HelpAnalyzer.cs b/tools/StaticAnalysis/HelpAnalyzer/HelpAnalyzer.cs index 75f3b2e9960b..466376ffa458 100644 --- a/tools/StaticAnalysis/HelpAnalyzer/HelpAnalyzer.cs +++ b/tools/StaticAnalysis/HelpAnalyzer/HelpAnalyzer.cs @@ -194,31 +194,40 @@ private void AnalyzeMarkdownHelp( " -FileName " + psd1FileName + " -BindingVariable ModuleMetadata; $ModuleMetadata.NestedModules"); var cmdletResult = powershell.Invoke(); - var cmdletFiles = cmdletResult.Select(c => c.ToString().Substring(2)); - if (cmdletFiles.Any()) - { - List allCmdlets = new List(); - foreach (var cmdletFileName in cmdletFiles) + + if (cmdletResult.Count > 1) + { + var cmdletFiles = cmdletResult.Select(c => c.ToString().Substring(2)); + if (cmdletFiles.Any()) { - var cmdletFileFullPath = Path.Combine(directory, Path.GetFileName(cmdletFileName)); - if (File.Exists(cmdletFileFullPath)) + List allCmdlets = new List(); + foreach (var cmdletFileName in cmdletFiles) { - helpLogger.Decorator.AddDecorator((h) => + var cmdletFileFullPath = Path.Combine(directory, Path.GetFileName(cmdletFileName)); + if (File.Exists(cmdletFileFullPath)) { - h.HelpFile = cmdletFileFullPath; - h.Assembly = cmdletFileFullPath; - }, "Cmdlet"); - processedHelpFiles.Add(cmdletFileName); - var proxy = - EnvironmentHelpers.CreateProxy(directory, out _appDomain); - var cmdlets = proxy.GetCmdlets(cmdletFileFullPath); - allCmdlets.AddRange(cmdlets); - helpLogger.Decorator.Remove("Cmdlet"); - AppDomain.Unload(_appDomain); + helpLogger.Decorator.AddDecorator((h) => + { + h.HelpFile = cmdletFileFullPath; + h.Assembly = cmdletFileFullPath; + }, "Cmdlet"); + processedHelpFiles.Add(cmdletFileName); + var proxy = + EnvironmentHelpers.CreateProxy(directory, out _appDomain); + var cmdlets = proxy.GetCmdlets(cmdletFileFullPath); + allCmdlets.AddRange(cmdlets); + helpLogger.Decorator.Remove("Cmdlet"); + AppDomain.Unload(_appDomain); + } } + + ValidateHelpRecords(allCmdlets, helpFiles, helpLogger); } + } - ValidateHelpRecords(allCmdlets, helpFiles, helpLogger); + if (cmdletResult.Count == 0) + { + return; } Directory.SetCurrentDirectory(savedDirectory);