add view of nasm warnings

This commit is contained in:
Trivalik_cp 2011-06-03 21:41:37 +00:00
parent 83747e6df9
commit 01fc2eeafe
2 changed files with 63 additions and 16 deletions

View file

@ -7,6 +7,13 @@ using System.Diagnostics;
namespace Cosmos.Build.MSBuild
{
public enum WriteType
{
Warning,
Error,
Info
}
public abstract class BaseToolTask : AppDomainIsolatedTask
{
protected bool ExecuteTool(string workingDir, string filename, string arguments, string name)
@ -49,21 +56,24 @@ namespace Cosmos.Build.MSBuild
{
Log.LogError("Error occurred while invoking {0}.", name);
}
foreach (var xError in mErrors)
{
Log.LogError(ExtendLineError(xError));
}
foreach (var xOutput in mOutput)
{
Log.LogError(xOutput);
}
return false;
}
else
WriteType typ;
foreach (var xError in mErrors)
{
foreach (var xOutput in mOutput)
string error = xError;
if(ExtendLineError(xProcess.ExitCode, ref error, out typ))
{
Log.LogMessage(xOutput);
Logs(typ, error);
}
}
foreach (var xOutput in mOutput)
{
string output = xOutput;
if (ExtendLineError(xProcess.ExitCode, ref output, out typ))
{
Logs(typ, output);
}
}
}
@ -73,9 +83,39 @@ namespace Cosmos.Build.MSBuild
private List<string> mErrors;
private List<string> mOutput;
public virtual string ExtendLineError(string errorMessage)
public virtual bool ExtendLineError(int exitCode, ref string errorMessage, out WriteType typ)
{
return errorMessage;
typ = WriteType.Error;
if (exitCode == 0)
return false;
return true;
}
public virtual bool ExtendLineOutput(int exitCode, ref string errorMessage, out WriteType typ)
{
typ = WriteType.Info;
return true;
}
public void Logs(WriteType typ, string message)
{
//TODO remove
Log.LogCommandLine(message);
switch (typ)
{
case WriteType.Warning:
Log.LogWarning(message);
break;
case WriteType.Error:
Log.LogError(message);
break;
case WriteType.Info:
Log.LogMessage(message);
break;
default:
Log.LogError(message);
break;
}
}
}
}

View file

@ -75,21 +75,28 @@ namespace Cosmos.Build.MSBuild
return xResult;
}
public override string ExtendLineError(string errorMessage)
public override bool ExtendLineError(int exitCode, ref string errorMessage, out WriteType typ)
{
typ = WriteType.Error;
try
{
if (errorMessage.StartsWith(InputFile))
{
int IndexFile = errorMessage.LastIndexOf('\\', InputFile.Length);
string file = errorMessage.Substring(IndexFile + 1, InputFile.Length - IndexFile - 1);
string[] split = errorMessage.Substring(InputFile.Length).Split(':');
if(split.Length > 3 && split[2].Contains("warning"))
typ = WriteType.Warning;
uint lineNumber = uint.Parse(split[1]);
return errorMessage + " Code: " + GetLine(InputFile, lineNumber);
errorMessage = file + " Line: " + lineNumber + " Code: " + GetLine(InputFile, lineNumber).Trim();
this.BuildEngine.LogMessageEvent(new BuildMessageEventArgs(errorMessage,"","",MessageImportance.High));
}
}
catch (Exception)
{
}
return base.ExtendLineError(errorMessage);
return true;
}
private static string GetLine(string fileName, uint line)