public void HandleError(BuildError error) { if (error.ErrorCode != "MSB3644") { nextFilter.HandleError(error); } }
public void HandleError(BuildError error) { error.ErrorText = FixEncoding(error.ErrorText); error.FileName = FixEncoding(error.FileName); error.Column = FixColumn(error.FileName, error.Line, error.Column); nextFilter.HandleError(error); }
public void HandleError(BuildError error) { if (insideTask) { baseFilter.HandleError(error); } else { nextFilter.HandleError(error); } }
public void RunJob(BuildJob job, IMSBuildChainedLoggerFilter loggerChain, Action <bool> reportWhenDone, CancellationToken cancellationToken) { Debug.Assert(loggerChain != null); this.loggerChain = loggerChain; this.reportWhenDone = reportWhenDone; try { process.Writer.Write("StartBuild"); job.WriteTo(process.Writer); this.cancellationRegistration = cancellationToken.Register(OnCancel); } catch (IOException ex) { // "Pipe is broken" loggerChain.HandleError(new BuildError(null, 0, 0, null, "Error talking to build worker: " + ex.Message)); BuildDone(false); } }
void process_ProcessExited(object sender, EventArgs e) { bool reportBuildError = false; lock (parentManager.freeWorkers) { if (isFree) { parentManager.freeWorkers.Remove(this); MarkAsInUse(); } else { reportBuildError = (reportWhenDone != null); // only if not done } } if (reportBuildError) { loggerChain.HandleError(new BuildError(null, 0, 0, null, "Build worker process exited unexpectedly.")); BuildDone(false); } process.Dispose(); }
public void RunJob(BuildJob job, IMSBuildChainedLoggerFilter loggerChain, Action<bool> reportWhenDone, CancellationToken cancellationToken) { Debug.Assert(loggerChain != null); this.loggerChain = loggerChain; this.reportWhenDone = reportWhenDone; try { process.Writer.Write("StartBuild"); job.WriteTo(process.Writer); this.cancellationRegistration = cancellationToken.Register(OnCancel); } catch (IOException ex) { // "Pipe is broken" loggerChain.HandleError(new BuildError(null, 0, 0, null, "Error talking to build worker: " + ex.Message)); BuildDone(false); } }
void StartBuild() { Dictionary<string, string> globalProperties = new Dictionary<string, string>(); MSBuildBasedProject.InitializeMSBuildProjectProperties(globalProperties); foreach (KeyValuePair<string, string> pair in options.Properties) { LoggingService.Debug("Setting property " + pair.Key + " to '" + pair.Value + "'"); globalProperties[pair.Key] = pair.Value; } globalProperties["Configuration"] = options.Configuration; if (options.Platform == "Any CPU") globalProperties["Platform"] = "AnyCPU"; else globalProperties["Platform"] = options.Platform; InterestingTasks.AddRange(MSBuildEngine.CompileTaskNames); loggers.Add(new SharpDevelopLogger(this)); if (options.BuildOutputVerbosity == BuildOutputVerbosity.Diagnostic) { this.ReportMessageEvents = true; this.ReportAllTaskFinishedEvents = true; this.ReportAllTaskStartedEvents = true; this.ReportTargetFinishedEvents = true; this.ReportTargetStartedEvents = true; this.ReportUnknownEvents = true; loggers.Add(new SDConsoleLogger(feedbackSink, LoggerVerbosity.Diagnostic)); globalProperties["MSBuildTargetsVerbose"] = "true"; } //loggers.Add(new BuildLogFileLogger(project.FileName + ".log", LoggerVerbosity.Diagnostic)); foreach (IMSBuildAdditionalLogger loggerProvider in MSBuildEngine.AdditionalMSBuildLoggers) { loggers.Add(loggerProvider.CreateLogger(this)); } loggerChain = new EndOfChain(this); foreach (IMSBuildLoggerFilter loggerFilter in MSBuildEngine.MSBuildLoggerFilters) { loggerChain = loggerFilter.CreateFilter(this, loggerChain) ?? loggerChain; } WriteAdditionalTargetsToTempFile(globalProperties); BuildJob job = new BuildJob(); job.ProjectFileName = projectFileName; job.Target = options.Target.TargetName; // First remove the flags for the controllable events. job.EventMask = EventTypes.All & ~ControllableEvents; // Add back active controllable events. if (ReportMessageEvents) job.EventMask |= EventTypes.Message; if (ReportTargetStartedEvents) job.EventMask |= EventTypes.TargetStarted; if (ReportTargetFinishedEvents) job.EventMask |= EventTypes.TargetFinished; if (ReportAllTaskStartedEvents) job.EventMask |= EventTypes.TaskStarted; if (ReportAllTaskFinishedEvents) job.EventMask |= EventTypes.TaskFinished; if (ReportUnknownEvents) job.EventMask |= EventTypes.Unknown; if (!(ReportAllTaskStartedEvents && ReportAllTaskFinishedEvents)) { // just some TaskStarted & TaskFinished events should be reported job.InterestingTaskNames.AddRange(InterestingTasks); } foreach (var pair in globalProperties) { job.Properties.Add(pair.Key, pair.Value); } foreach (ILogger logger in loggers) { logger.Initialize(eventSource); } if (projectMinimumSolutionVersion <= Solution.SolutionVersionVS2008) { if (DotnetDetection.IsDotnet35SP1Installed()) { BuildWorkerManager.MSBuild35.RunBuildJob(job, loggerChain, OnDone, feedbackSink.ProgressMonitor.CancellationToken); } else { loggerChain.HandleError(new BuildError(job.ProjectFileName, ".NET 3.5 SP1 is required to build this project.")); OnDone(false); } } else { BuildWorkerManager.MSBuild40.RunBuildJob(job, loggerChain, OnDone, feedbackSink.ProgressMonitor.CancellationToken); } }
internal Task <bool> RunBuildAsync(CancellationToken cancellationToken) { Dictionary <string, string> globalProperties = new Dictionary <string, string>(); globalProperties.AddRange(SD.MSBuildEngine.GlobalBuildProperties); foreach (KeyValuePair <string, string> pair in options.Properties) { LoggingService.Debug("Setting property " + pair.Key + " to '" + pair.Value + "'"); globalProperties[pair.Key] = pair.Value; } globalProperties["Configuration"] = options.Configuration; if (options.Platform == "Any CPU") { globalProperties["Platform"] = "AnyCPU"; } else { globalProperties["Platform"] = options.Platform; } InterestingTasks.AddRange(parentBuildEngine.CompileTaskNames); loggers.Add(new SharpDevelopLogger(this)); if (options.BuildOutputVerbosity == BuildOutputVerbosity.Diagnostic) { this.ReportMessageEvents = true; this.ReportAllTaskFinishedEvents = true; this.ReportAllTaskStartedEvents = true; this.ReportTargetFinishedEvents = true; this.ReportTargetStartedEvents = true; this.ReportUnknownEvents = true; loggers.Add(new SDConsoleLogger(feedbackSink, LoggerVerbosity.Diagnostic)); globalProperties["MSBuildTargetsVerbose"] = "true"; } //loggers.Add(new BuildLogFileLogger(project.FileName + ".log", LoggerVerbosity.Diagnostic)); foreach (IMSBuildAdditionalLogger loggerProvider in parentBuildEngine.AdditionalMSBuildLoggers) { loggers.Add(loggerProvider.CreateLogger(this)); } loggerChain = new EndOfChain(this); foreach (IMSBuildLoggerFilter loggerFilter in parentBuildEngine.MSBuildLoggerFilters) { loggerChain = loggerFilter.CreateFilter(this, loggerChain) ?? loggerChain; } WriteAdditionalTargetsToTempFile(globalProperties); BuildJob job = new BuildJob(); job.ProjectFileName = projectFileName; job.Target = options.Target.TargetName; // First remove the flags for the controllable events. job.EventMask = EventTypes.All & ~ControllableEvents; // Add back active controllable events. if (ReportMessageEvents) { job.EventMask |= EventTypes.Message; } if (ReportTargetStartedEvents) { job.EventMask |= EventTypes.TargetStarted; } if (ReportTargetFinishedEvents) { job.EventMask |= EventTypes.TargetFinished; } if (ReportAllTaskStartedEvents) { job.EventMask |= EventTypes.TaskStarted; } if (ReportAllTaskFinishedEvents) { job.EventMask |= EventTypes.TaskFinished; } if (ReportUnknownEvents) { job.EventMask |= EventTypes.Unknown; } if (!(ReportAllTaskStartedEvents && ReportAllTaskFinishedEvents)) { // just some TaskStarted & TaskFinished events should be reported job.InterestingTaskNames.AddRange(InterestingTasks); } foreach (var pair in globalProperties) { job.Properties.Add(pair.Key, pair.Value); } foreach (ILogger logger in loggers) { logger.Initialize(eventSource); } tcs = new TaskCompletionSource <bool>(); if (projectMinimumSolutionVersion <= SolutionFormatVersion.VS2008) { if (DotnetDetection.IsDotnet35SP1Installed()) { BuildWorkerManager.MSBuild35.RunBuildJob(job, loggerChain, OnDone, cancellationToken); } else { loggerChain.HandleError(new BuildError(job.ProjectFileName, ".NET 3.5 SP1 is required to build this project.")); tcs.SetResult(false); } } else { BuildWorkerManager.MSBuild40.RunBuildJob(job, loggerChain, OnDone, cancellationToken); } return(tcs.Task); }
public void HandleError(BuildError error) { LoggingService.Debug("FxCopLogger got " + error.ToString()); string[] moreData = (error.Subcategory ?? "").Split('|'); string checkId = error.ErrorCode; error.ErrorCode = (error.ErrorCode != null) ? error.ErrorCode.Split(':')[0] : null; if (FileUtility.IsValidPath(error.FileName) && Path.GetFileName(error.FileName) == "SharpDevelop.CodeAnalysis.targets") { error.FileName = null; } IProject project = ProjectService.GetProject(engineWorker.ProjectFileName); if (project != null) { IProjectContent pc = ParserService.GetProjectContent(project); if (pc != null) { if (error.FileName != null) { int pos = error.FileName.IndexOf("positionof#", StringComparison.Ordinal); if (pos >= 0) { string memberName = error.FileName.Substring(pos + 11); FilePosition filePos = GetPosition(pc, memberName); if (filePos.IsEmpty == false && filePos.CompilationUnit != null) { error.FileName = filePos.FileName ?? ""; error.Line = filePos.Line; error.Column = filePos.Column; } else { error.FileName = null; } } } if (moreData.Length > 1 && !string.IsNullOrEmpty(moreData[0])) { error.Tag = new FxCopTaskTag { ProjectContent = pc, TypeName = moreData[0], MemberName = moreData[1], Category = error.HelpKeyword, CheckID = checkId }; } else { error.Tag = new FxCopTaskTag { ProjectContent = pc, Category = error.HelpKeyword, CheckID = checkId }; } error.ContextMenuAddInTreeEntry = "/SharpDevelop/Pads/ErrorList/CodeAnalysisTaskContextMenu"; if (moreData.Length > 2) { (error.Tag as FxCopTaskTag).MessageID = moreData[2]; } } } nextChainElement.HandleError(error); }