public static async Task <string> Generate(DirectoryInfo directory, TextWriter writer, bool generateStatistics = false) { if (directory is null) { throw new ArgumentNullException(nameof(directory)); } if (writer is null) { throw new ArgumentNullException(nameof(writer)); } var aggregator = new StyleAggregator(); await writer.WriteLineAsync($"Analyzing {directory}...").ConfigureAwait(false); foreach (var file in directory.EnumerateFiles("*.cs", SearchOption.AllDirectories)) { await writer.WriteLineAsync($"\tAnalyzing {file.FullName}...").ConfigureAwait(false); var(unit, model) = StyleGenerator.GetCompilationInformation(file.FullName); aggregator = aggregator.Update(new StyleAggregator().Add(unit, model)); } if (generateStatistics) { using var statisticsWriter = File.CreateText("statistics.json"); new JsonSerializer().Serialize(statisticsWriter, aggregator); } return(aggregator.GenerateConfiguration()); }
public static string GenerateFromDocument(FileInfo document, TextWriter writer, bool generateStatistics = false) { if (document is null) { throw new ArgumentNullException(nameof(document)); } if (writer is null) { throw new ArgumentNullException(nameof(writer)); } if (document.Extension.ToUpperInvariant() == ".CS") { writer.WriteLine($"Analyzing {document.FullName}..."); var(unit, model) = StyleGenerator.GetCompilationInformation(document.FullName); var aggregator = new StyleAggregator().Add(unit, model); if (generateStatistics) { using var statisticsWriter = File.CreateText("statistics.json"); new JsonSerializer().Serialize(statisticsWriter, aggregator); } return(aggregator.GenerateConfiguration()); } return(string.Empty); }