Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

75 lines
2.1 KiB
C#

#define CONTRACTS_FULL
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
using System.IO;
using Mono.CodeContracts.Rewrite;
using Mono.Options;
namespace ccrewrite {
class Program {
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 ();
}
}
}