static IssueStats[] GetScriptIssuesSummary(ProjectReport projectReport) { var statsDict = new Dictionary <int, IssueStats>(); var scriptIssues = projectReport.GetIssues(IssueCategory.Code); var numScriptIssues = scriptIssues.Length; for (var i = 0; i < numScriptIssues; ++i) { var descriptor = scriptIssues[i].descriptor; var id = descriptor.id; IssueStats stats; if (!statsDict.TryGetValue(id, out stats)) { stats = new IssueStats { id = id }; } ++stats.numOccurrences; if (scriptIssues[i].isPerfCriticalContext) { ++stats.numHotPathOccurrences; } statsDict[id] = stats; } return(statsDict.Values.OrderByDescending(x => x.numOccurrences).Take(k_MaxIssuesInAnalyzeSummary).ToArray()); }
private IssueStats GetIssueStats([NotNull] QualityCondition qualityCondition) { IssueStats issueStats; if (!_issueStatsByCondition.TryGetValue(qualityCondition, out issueStats)) { issueStats = new IssueStats(); _issueStatsByCondition.Add(qualityCondition, issueStats); } return(issueStats); }
public void Process([NotNull] QaErrorEventArgs args) { Assert.ArgumentNotNull(args, nameof(args)); QaError qaError = args.QaError; QualitySpecificationElement element = _elementsByTest[qaError.Test]; QualityCondition qualityCondition = element.QualityCondition; if (element.StopOnError) { foreach (InvolvedRow involvedRow in qaError.InvolvedRows) { var stopInfo = new StopInfo(qualityCondition, qaError.Description); _rowsWithStopConditions.Add(involvedRow.TableName, involvedRow.OID, stopInfo); } } if (IsIssueGeometryOutsideTestPerimeter(qaError, qualityCondition)) { args.Cancel = true; return; } IssueStats issueStats = GetIssueStats(qualityCondition); if (ExistsExceptionFor(qaError, element)) { issueStats.AddException(); return; } issueStats.AddIssue(); if (element.AllowErrors) { WarningCount++; } else { ErrorCount++; Fulfilled = false; } _issueWriter.WriteIssue(qaError, element); }
public void AddIssue(Issue issue, IGeometry errorGeometry) { AssertVerifying(); IssueStats issueStats; if (!_issuesByQualityCondition.TryGetValue( issue.QualitySpecificationElement, out issueStats)) { issueStats = new IssueStats(); _issuesByQualityCondition.Add(issue.QualitySpecificationElement, issueStats); } issueStats.IssueCount = issueStats.IssueCount + 1; if (_issueContexts != IssueReportingContexts.None) { issueStats.AddIssue(CreateXmlIssue(issue, errorGeometry)); } }
// ------------------------------------------------------------------------------------------------------------- static IssueStats[] CollectSelectionStats(IssueTableItem[] selectedItems) { var selectionsDict = new Dictionary <int, IssueStats>(); var selectedRoots = selectedItems.Where(item => item.hasChildren); var selectedChildren = selectedItems.Where(item => item.parent != null); foreach (var rootItem in selectedRoots) { var id = rootItem.ProblemDescriptor.id; IssueStats issueStats; if (!selectionsDict.TryGetValue(id, out issueStats)) { issueStats = new IssueStats { id = id, numOccurrences = rootItem.children.Count }; selectionsDict[id] = issueStats; } foreach (var child in rootItem.children) { if (((IssueTableItem)child).ProjectIssue.isPerfCriticalContext) { ++issueStats.numHotPathOccurrences; } } selectionsDict[id] = issueStats; } foreach (var childItem in selectedChildren) { var id = childItem.ProblemDescriptor.id; IssueStats summary; if (!selectionsDict.TryGetValue(id, out summary)) { summary = new IssueStats { id = id }; selectionsDict[id] = summary; } // Ensure that if an issue is selected AND its root/parent issue has been selected // that we don't count the child one. Otherwise we over-report. if (!selectedRoots.Any(item => item.ProblemDescriptor.id == id)) { ++summary.numOccurrences; if (childItem.ProjectIssue.isPerfCriticalContext) { ++summary.numHotPathOccurrences; } } selectionsDict[id] = summary; } var selectionsArray = selectionsDict.Values.OrderByDescending(x => x.numOccurrences).Take(5).ToArray(); return(selectionsArray); }