private void ProbingErrorsInView() { CollectUnexpandedTransfers(); if (unexpandedTransferOutControls.Count != 0) { TraceRecordCellControl traceRecordCellControl = null; foreach (TraceRecordCellControl unexpandedTransferOutControl in unexpandedTransferOutControls) { if (unexpandedTransferOutControl.ExpandingState == ExpandingState.Collapsed) { TraceRecordSetSeverityLevel severityLevel = TraceRecordSetSeverityLevel.Normal; TraceRecord firstErrorTrace = null; ActivityAnalyzerHelper.DetectErrorOrWarningOnActivity(base.CurrentDataSource.Activities[unexpandedTransferOutControl.CurrentTraceRecordItem.CurrentTraceRecord.RelatedActivityID], base.CurrentDataSource.Activities, null, null, true, true, ref severityLevel, ref firstErrorTrace, ActivityAnalyzerHelper.INIT_ACTIVITY_TREE_DEPTH2); if (severityLevel != 0) { unexpandedTransferOutControl.CurrentTraceRecordItem.SeverityLevel = severityLevel; if (traceRecordCellControl == null) { traceRecordCellControl = unexpandedTransferOutControl; base.Container.ScrollControlIntoView(traceRecordCellControl, isCenter: true); } } } } } }
internal static void DetectErrorOrWarningOnActivity(Activity activity, Dictionary <string, Activity> allActivities, List <TraceRecord> traces, ExecutionInfo execution, bool isChild, bool isDetectSeverityLevel, ref TraceRecordSetSeverityLevel severityLevel, ref TraceRecord firstErrorTrace, int depth) { if (activity != null && depth < MAX_ACTIVITY_TREE_DEPTH) { traces = ((traces == null) ? InternalLoadTraceRecordWarpper(activity, execution, containsActivityBoundary: true) : traces); foreach (TraceRecord trace in traces) { if (execution == null || execution.ExecutionID == trace.Execution.ExecutionID) { if (trace.Level == TraceEventType.Critical || trace.Level == TraceEventType.Error) { if (firstErrorTrace == null) { firstErrorTrace = trace; } if (severityLevel < TraceRecordSetSeverityLevel.Error) { severityLevel = TraceRecordSetSeverityLevel.Error; } return; } if (trace.Level == TraceEventType.Warning) { if (firstErrorTrace == null) { firstErrorTrace = trace; } if (isDetectSeverityLevel) { break; } if (severityLevel < TraceRecordSetSeverityLevel.Warning) { severityLevel = TraceRecordSetSeverityLevel.Warning; } } } } if (isChild) { foreach (Activity childActivity in GetChildActivities(activity.Id, traces, allActivities, execution)) { DetectErrorOrWarningOnActivity(childActivity, allActivities, null, null, isChild, isDetectSeverityLevel, ref severityLevel, ref firstErrorTrace, depth + 1); if (firstErrorTrace != null) { switch (isDetectSeverityLevel) { case false: return; } if (severityLevel == TraceRecordSetSeverityLevel.Error) { break; } } } } } }