public static int Main(string[] args) { var options = new Options(); if (!options.Parse()) { PrintUsage(options); return(-1); } var cts = new CancellationTokenSource(); var ct = cts.Token; Console.CancelKeyPress += delegate { cts.Cancel(); }; try { var engine = AnalysisEngine.FromFilePaths( options.FilePaths, symbolConfigurations: options.SymbolConfigurations, alwaysDefinedSymbols: options.DefinedSymbols, alwaysDisabledSymbols: options.DisabledSymbols, alwaysIgnoredSymbols: options.IgnoredSymbols, undefinedSymbolValue: options.UndefinedSymbolValue, cancellationToken: ct).Result; engine.DocumentAnalyzed += (analysisEngine, info, cancellationToken) => OnDocumentAnalyzed(analysisEngine, options, info, cancellationToken); RunAsync(engine, options, ct).Wait(ct); } catch (OperationCanceledException) { Console.WriteLine("Canceled."); return(1); } return(0); }