Exemplo n.º 1
0
        static int Main(string [] args)
        {
            var cmd = new CommandLineParser(Console.Out);

            cmd.UnknownOptionHandler += HandleExtraArguments;

            var settings = cmd.ParseArguments(args);

            if (settings == null)
            {
                return(1);
            }
            var startup_files = new string [settings.SourceFiles.Count];
            int i             = 0;

            foreach (var source in settings.SourceFiles)
            {
                startup_files [i++] = source.FullPathName;
            }
            settings.SourceFiles.Clear();

            TextWriter    agent_stderr = null;
            ReportPrinter printer;

            if (agent != null)
            {
                agent_stderr = new StringWriter();
                printer      = new StreamReportPrinter(agent_stderr);
            }
            else
            {
                printer = new ConsoleReportPrinter();
            }

            var eval = new Evaluator(new CompilerContext(settings, printer));

            eval.InteractiveBaseClass    = typeof(InteractiveBaseShell);
            eval.DescribeTypeExpressions = true;

            CSharpShell shell;

#if !ON_DOTNET
            if (attach.HasValue)
            {
                shell = new ClientCSharpShell(eval, attach.Value);
            }
            else if (agent != null)
            {
                new CSharpAgent(eval, agent, agent_stderr).Run(startup_files);
                return(0);
            }
            else
#endif
            {
                shell = new CSharpShell(eval);
            }
            return(shell.Run(startup_files));
        }
Exemplo n.º 2
0
        void OnEnable()
        {
            var settings = new CompilerSettings();

            settings.AssemblyReferences.Add(typeof(Application).Assembly.FullName);
            settings.AssemblyReferences.Add(typeof(EditorApplication).Assembly.FullName);
            settings.AssemblyReferences.Add(typeof(SBUniverse).Assembly.FullName);
            var printer = new ConsoleReportPrinter(new UnityMessageReporter());
            var context = new CompilerContext(settings, printer);

            evaluator = new Evaluator(context);
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            var settings = new CompilerSettings();
            var printer  = new ConsoleReportPrinter();
            var eval     = new Evaluator(new CompilerContext(settings, printer));

            eval.ReferenceAssembly(typeof(Program).Assembly);
            eval.Run("using System;");
            eval.Run("using managed;");
            eval.Run("dynamic f = new Foo();");
            eval.Run("f.Whatever;");
        }
Exemplo n.º 4
0
        public CSharpEvaluator()
        {
            c = new CustomTextWriter();
            c.InputErrorOnUsing += c_InputError;
            ReportPrinter r = new ConsoleReportPrinter(c);

            evaluator = new Evaluator(new CompilerContext(
                                          new CompilerSettings(),
                                          r));
            evaluator.ReferenceAssembly(Assembly.GetExecutingAssembly());
            evaluator.Run("using System;");
            evaluator.Run("using ETLyteExe;");
        }
Exemplo n.º 5
0
            internal MonoHotCompiler()
            {
                _writer   = new StringWriter();
                _reporter = new ConsoleReportPrinter(_writer);
                var context = new CompilerContext(new CompilerSettings
                {
                    GenerateDebugInfo     = false,
                    WarningsAreErrors     = false,
                    LoadDefaultReferences = true,
                    Optimize = true
                }, _reporter);

                _evaluator = new Evaluator(context);
            }
Exemplo n.º 6
0
        void Init()
        {
            // workaround to load DLR types before Evaluator would want them
            var r        = Microsoft.CSharp.RuntimeBinder.Binder.IsEvent(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.BinaryOperationLogical, "gf", typeof(int));
            var settings = new CompilerSettings();
            var printer  = new ConsoleReportPrinter();

            eval = new Evaluator(new CompilerContext(settings, printer));
            eval.ReferenceAssembly(typeof(REPL).Assembly);
            eval.Run("using System;");
            eval.Run("using FOnline;");
            eval.Run("using System.Collections.Generic;");
            eval.Run("using System.Linq;");
            statement = new StringBuilder();
        }
Exemplo n.º 7
0
        // This method evaluates the given code and returns a CompilerOutput object
        public static CompilerOutput evaluateCode(string code)
        {
            CompilerOutput compilerOutput = new CompilerOutput();

            /*
             * var compilerContext = new CompilerContext(new CompilerSettings(), new ConsoleReportPrinter());
             *
             * var evaluator = new Evaluator(compilerContext);
             */
            var reportWriter = new StringWriter();
            var settings     = new CompilerSettings();
            var printer      = new ConsoleReportPrinter(reportWriter);

            var compilerContext = new CompilerContext(settings, printer);
            var reports         = new Report(compilerContext, printer);
            var evaluator       = new Evaluator(compilerContext);

            var myString = "";

            originalConsoleOut_global = Console.Out;             // preserve the original stream
            using (var writer = new StringWriter())
            {
                Console.SetOut(writer);

                evaluator.Run(code);
                evaluator.Run("MainClass m1 = new MainClass(); m1.Main();");

                //bConsole.WriteLine ("after executing code");

                if (reports.Errors > 0)
                {
                    Console.WriteLine("reportWriter.ToString: \n" + reportWriter.ToString());
                    compilerOutput.errors = reportWriter.ToString();
                }

                writer.Flush();                 // make sure everything is written out of consule

                myString = writer.GetStringBuilder().ToString();

                compilerOutput.consoleOut = myString;
            }

            Console.SetOut(originalConsoleOut_global);             // restore Console.Out

            return(compilerOutput);
        }
Exemplo n.º 8
0
        private static Evaluator InitEvaluator(Type type)
        {
            var settings  = new CompilerSettings();
            var printer   = new ConsoleReportPrinter();
            var context   = new CompilerContext(settings, printer);
            var evaluator = new Evaluator(context)
            {
                InteractiveBaseClass = type
            };

            evaluator.ReferenceAssembly(type.Assembly);
            evaluator.ReferenceAssembly(typeof(Log).Assembly);
            evaluator.Run("using System;");
            evaluator.Run("using System.Linq;");
            evaluator.Run("using Kudu.Logging;");

            return(evaluator);
        }
Exemplo n.º 9
0
    public void InitEval()
    {
        var settings = new CompilerSettings();

        foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
        {
            if (assembly == null || assembly.FullName.Contains("GeneratedCode") || assembly.FullName.Contains("eval-"))
            {
                continue;
            }
            Debug.Log($"Adding {assembly.FullName}");
            settings.AssemblyReferences.Add(assembly.FullName);
        }
        printer = new ConsoleReportPrinter(new StringWriter(errInfo));
        var context = new CompilerContext(settings, printer);

        CsharpEval = new Evaluator(context);
        CsharpEval.Run("using UnityEngine; using System; using System.Collections.Generic;");
    }
Exemplo n.º 10
0
        static int Main(string [] args)
        {
            if (!SplitDriverAndScriptArguments(ref args, out script_args))
            {
                return(1);
            }

            var cmd = new CommandLineParser(Console.Out);

            cmd.UnknownOptionHandler += HandleExtraArguments;

            // Enable unsafe code by default
            var settings = new CompilerSettings()
            {
                Unsafe = true
            };

            if (!cmd.ParseArguments(settings, args))
            {
                return(1);
            }

            var startup_files = new string [settings.SourceFiles.Count];
            int i             = 0;

            foreach (var source in settings.SourceFiles)
            {
                startup_files [i++] = source.OriginalFullPathName;
            }
            settings.SourceFiles.Clear();

            TextWriter    agent_stderr = null;
            ReportPrinter printer;

            if (agent != null)
            {
                agent_stderr = new StringWriter();
                printer      = new StreamReportPrinter(agent_stderr);
            }
            else
            {
                printer = new ConsoleReportPrinter();
            }

            var eval = new Evaluator(new CompilerContext(settings, printer));

            eval.InteractiveBaseClass    = typeof(InteractiveBaseShell);
            eval.DescribeTypeExpressions = true;
            eval.WaitOnTask = true;

            CSharpShell shell;

#if !ON_DOTNET
            if (attach.HasValue)
            {
                shell = new ClientCSharpShell_v1(eval, attach.Value);
            }
            else if (agent != null)
            {
                new CSharpAgent(eval, agent, agent_stderr).Run(startup_files);
                return(0);
            }
            else
#endif
            if (target_host != null)
            {
                shell = new ClientCSharpShell(eval, target_host, target_port);
            }
            else
            {
                shell = new CSharpShell(eval);
            }

            return(shell.Run(startup_files));
        }
Exemplo n.º 11
0
        public static int Main(string[] args)
        {
            bool help    = false;
            int? pid     = null;
            var  options = new OptionSet()
            {
                "logcat-parse: Parse `adb logcat` output to analyze GREF information.",
                "",
                "usage: logcat-parse [-p PID] FILE [@RESPONSE-FILES]",
                { "p|pid=",
                  "The {PID} to filter GREF output.",
                  v => pid = int.Parse(v, CultureInfo.InvariantCulture) },
                { "h|?|help",
                  "Show this message and exit.",
                  v => help = v != null },
                new ResponseFileSource(),
            };
            var files = options.Parse(args);

            if (help)
            {
                options.WriteOptionDescriptions(Console.Out);
                return(0);
            }

            Console.WriteLine("// `adb logcat` GREF parsing utility");
            Console.WriteLine("//");
            Console.WriteLine("// Use `Grefs.Parse(stream)` to parse a file containing `adb logcat` output.");
            Console.WriteLine("// Grefs.AllocatedPeers contains all exposed Java.Lang.Object instances.");
            Console.WriteLine("// Grefs.AlivePeers contains those still alive by the end of parsing.");

            var settings = new CompilerSettings()
            {
                Unsafe = true
            };

            var printer = new ConsoleReportPrinter();

            var eval = new Evaluator(new CompilerContext(settings, printer));

            eval.ReferenceAssembly(typeof(Program).Assembly);
            eval.Run("using Xamarin.Android.Tools.LogcatParse;");
            if (files.Count > 0)
            {
                if (files.Count > 1)
                {
                    Console.Error.WriteLine("logcat-parse: More than one file is unsupported. Loading: {0}", files [0]);
                }
                Console.WriteLine("var grefs = Grefs.Parse(\"{0}\"{1});", files [0],
                                  pid.HasValue ? ", " + pid.Value : "");
                eval.Run("Grefs grefs;");
                eval.Run(
                    "using (var __source = new System.IO.StreamReader(\"" +
                    files [0] +
                    "\")) grefs = Grefs.Parse(__source" +
                    (pid.HasValue ? (", " + pid.ToString()) : "") + ");");
            }

            eval.InteractiveBaseClass    = typeof(Mono.InteractiveBaseShell);
            eval.DescribeTypeExpressions = true;
            eval.WaitOnTask = true;

            var shell = new Mono.CSharpShell(eval);

            return(shell.Run(new string[0]));
        }
Exemplo n.º 12
0
        /// <summary>
        /// Сконфигурировать чекер.
        /// </summary>
        /// <param name="checker">Чекер.</param>
        public static void Configure(this ICodeChecker checker)
        {
            var section = (AgentConfigurationSection)ConfigurationManager.GetSection("agent");

            log.Trace("Загрузка контекста приложения");
            var applicationContextFactory = new ApplicationContextFactory();

            checker.ContextManager.Load(applicationContextFactory);

            log.Trace("Загрузка контекста разработки");
            var developmentContextFactory = new DevelopmentContextFactory();

            foreach (ContextProviderElement element in section.ContextProviders)
            {
                switch (element.Provider)
                {
                case ContextProviderType.Package:
                    log.Trace($"Найден загрузчик контекста из пакета {element.FilePath}");
                    var packageProvider = new PackageProvider(element.FilePath);
                    developmentContextFactory.Providers.Add(packageProvider);
                    break;

                case ContextProviderType.Database:
                    log.Trace($"Найден загрузчик контекста из базы данных {element.ConnectionString}");
                    var databaseProvider = new DatabaseProvider(element.ConnectionString);
                    developmentContextFactory.Providers.Add(databaseProvider);
                    break;

                case ContextProviderType.Folder:
                    log.Trace($"Найден загрузчик контекста из папки {element.FolderPath}");
                    var folderProvider = new FolderProvider(element.FolderPath);
                    developmentContextFactory.Providers.Add(folderProvider);
                    break;
                }
            }
            checker.ContextManager.Load(developmentContextFactory);

            log.Trace("Загрузка сборок с правилами анализа");
            if (!string.IsNullOrEmpty(section.RuleLibraryPath))
            {
                checker.RuleManager.LoadLibraries(section.RuleLibraryPath);
            }

            log.Trace("Загрузка генераторов отчетов");
            if (section.ReportPrinters != null)
            {
                foreach (ReportPrinterElement element in section.ReportPrinters)
                {
                    switch (element.Printer)
                    {
                    case ReportPrinterType.Console:
                        var consoleReportPrinter = new ConsoleReportPrinter();
                        checker.ReportManager.Printers.Add(consoleReportPrinter);
                        break;

                    case ReportPrinterType.CSV:
                        var csvReportPrinter = new CsvReportPrinter(element.FilePath);
                        checker.ReportManager.Printers.Add(csvReportPrinter);
                        break;
                    }
                }
            }
        }