예제 #1
0
파일: Program.cs 프로젝트: nobled/mono
		static void Main (string [] args)
		{
			RewriterOptions options = new RewriterOptions ();

			bool showOptions = false;
			string showMsg = null;

			var optionSet = new OptionSet {
				{ "help", "Show this help.", v => showOptions = v != null },
				{ "debug", "Use MDB or PDB debug information (default=true).", v => options.Debug = v != null },
				{ "level=", "Instrumentation level, 0 - 4 (default=4).", (int var) => options.Level = var},
				{ "writePDBFile", "Write MDB or PDB file (default=true).", v => options.WritePdbFile = v != null },
				{ "rewrite", "Rewrite the assembly (default=true).", v => options.Rewrite = v != null },
				{ "assembly=", "Assembly to rewrite.", v => options.Assembly = v },
				{ "breakIntoDebugger|break", "Break into debugger on contract failure.", v => options.BreakIntoDebugger = v != null },
				{ "throwOnFailure|throw", "Throw ContractException on contract failure.", v => options.ThrowOnFailure = v != null },
				{ "output|out=", "Output filename of rewritten file.", v => options.OutputFile = v },
			};

			try {
				optionSet.Parse (args);
			} catch (OptionException e) {
				showOptions = true;
				showMsg = e.Message;
			}

			if (showOptions) {
				Console.WriteLine ("ccrewrite");
				Console.WriteLine ();
				Console.WriteLine ("Options:");
				optionSet.WriteOptionDescriptions (Console.Out);
				Console.WriteLine ();
				if (showMsg != null) {
					Console.WriteLine (showMsg);
					Console.WriteLine ();
				}
				return;
			}

			var results = Rewriter.Rewrite (options);

			if (results.AnyErrors) {
				foreach (var error in results.Errors) {
					Console.WriteLine ("Error: " + error);
				}
			}
			if (results.AnyWarnings) {
				foreach (var warning in results.Warnings) {
					Console.WriteLine ("Warning: " + warning);
				}
			}

			Console.WriteLine ();
			Console.WriteLine ("*** done ***");
			//Console.ReadKey ();
		}
예제 #2
0
		public ContractsRuntime (ModuleDefinition module, RewriterOptions options)
		{
			this.module = module;
			this.options = options;
		}
예제 #3
0
 public ContractsRuntime(ModuleDefinition module, RewriterOptions options)
 {
     this.module  = module;
     this.options = options;
 }
예제 #4
0
 private Rewriter(RewriterOptions options)
 {
     this.options = options;
 }
예제 #5
0
        public static RewriterResults Rewrite(RewriterOptions options)
        {
            Rewriter rewriter = new Rewriter(options);

            return(rewriter.RewriteImpl());
        }
예제 #6
0
		public PerformRewrite (ISymbolWriter sym, RewriterOptions options)
		{
			this.sym = sym;
			this.options = options;
		}
예제 #7
0
파일: Rewriter.cs 프로젝트: afaerber/mono
		private Rewriter(RewriterOptions options)
		{
			this.options = options;
		}
예제 #8
0
파일: Rewriter.cs 프로젝트: afaerber/mono
		public static RewriterResults Rewrite (RewriterOptions options)
		{
			Rewriter rewriter = new Rewriter(options);
			return rewriter.RewriteImpl();
		}
 public PerformRewrite(RewriterOptions options)
 {
     this.options = options;
 }
예제 #10
0
		public void Load ()
		{
			Assembly assembly = Assembly.GetExecutingAssembly ();
			var appDomainSetup = new AppDomainSetup {
				ApplicationBase = Path.GetDirectoryName(assembly.Location)
			};
			this.testDomain = AppDomain.CreateDomain ("TestDomain", null, appDomainSetup);
			this.testDomain.AssemblyResolve += (s, e) => {
				return Assembly.LoadFrom (e.Name);
			};
			this.loader = (Loader) this.testDomain.CreateInstanceAndUnwrap (assembly.Location, typeof (Loader).FullName);

			using (var rewritten = new MemoryStream ()) {
				RewriterOptions options = new RewriterOptions {
					ForceAssemblyRename = "RewrittenForTest",
					Assembly = assembly.Location,
					OutputFile = rewritten,
					ThrowOnFailure = true,
					WritePdbFile = false,
				};
				Rewriter.Rewrite (options);
				byte [] bytes = rewritten.ToArray ();
				this.loader.Load (bytes);
			}
		}
예제 #11
0
		public PerformRewrite (RewriterOptions options)
		{
			this.options = options;
		}