a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
75 lines
2.1 KiB
C#
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 ();
|
|
}
|
|
|
|
}
|
|
}
|