public static Boolean CheckCompilationErrors(String filename, Compilation compilation, OutputImpl output) { output.WriteInfoLine("Checking compilation for errors and warnings:"); IList <Diagnostic> diagnostics = compilation.GetDiagnostics(); Diagnostic[] diagnosticErrors = diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error).ToArray(); Diagnostic[] diagnosticWarnings = diagnostics.Where(d => d.Severity == DiagnosticSeverity.Warning).ToArray(); Boolean hasErrors = false; output.WriteInfoLine($"Found {diagnosticErrors.Length} errors in the compilation"); foreach (Diagnostic diagnostic in diagnosticErrors) { output.WriteErrorLine($"Found following error in the compilation of the {filename} entity: {diagnostic.GetMessage()}"); hasErrors = true; } output.WriteInfoLine($"Found {diagnosticWarnings.Length} warnings in the compilation"); foreach (Diagnostic diagnostic in diagnosticWarnings) { output.WriteWarningLine($"Found following warning in the compilation: {diagnostic.GetMessage()}"); } return(!hasErrors); }
private static Boolean MainImpl(String[] args) { AppArgs appArgs = AppArgsParser.Parse(args); switch (appArgs.Mode) { case AppUsageMode.Help: Console.WriteLine(AppDescription); return(true); case AppUsageMode.Version: Console.WriteLine(VersionNumber); return(true); case AppUsageMode.Analysis: Console.OutputEncoding = Encoding.UTF8; IConfig externalConfig = ConfigFactory.Create(appArgs); if (externalConfig == null) { Console.Error.WriteLine(BadConfigMessage); return(false); } OutputImpl output = new OutputImpl(Console.Out, Console.Error, appArgs.OutputLevel); ISourceProcessor processor = SourceProcessorFactory.Create(appArgs.Source, externalConfig, output); IList <IFileAnalyzer> analyzers = AnalyzersFactory.Create(output); Boolean processResult = processor.Process(analyzers); output.WriteInfoLine($"Result of analysis: analysis is {(processResult ? "succeeded" : "failed")}"); return(processResult); case AppUsageMode.BadSource: Console.Error.WriteLine(BadSourceMessage); return(false); case AppUsageMode.BadConfig: Console.Error.WriteLine(BadConfigMessage); return(false); case AppUsageMode.BadAppUsage: case AppUsageMode.Unknown: Console.Error.WriteLine(BadUsageMessage); Console.WriteLine(AppDescription); return(false); default: throw new InvalidOperationException(); } }