public void WriteIssuesForProcess(AnalyzerTraceProcess process, List <AnalyzerIssue> issues) { _writer.WriteLine($"<H3>Process {process.DisplayID}: {process.Description}</H3>"); _writer.WriteLine("<Table Border=\"1\">"); _writer.WriteLine("<TR><TH>Issue Title</TH><TH>Notes</TH></TR>"); foreach (AnalyzerIssue issue in issues) { _writer.WriteLine($"<TR><TD>{issue.Title}</TD><TD>{issue.Description}<BR/><BR/>More details: <A HREF=\"{issue.URL}\">{issue.URL}</A></TD></TR>"); } _writer.WriteLine("</Table>"); }
StackView ITrace.GetCPUStacks(AnalyzerTraceProcess process) { StackView stackView = null; TraceProcess traceProcess = TraceLog.Processes[(ProcessIndex)process.UniqueID]; if (traceProcess != null) { StackSource stackSource = TraceLog.CPUStacks(traceProcess); stackView = new StackView(traceProcess.Log, stackSource, SymbolReader); } return(stackView); }
public List <AnalyzerIssue> this[AnalyzerTraceProcess process] { get { List <AnalyzerIssue> issues; if (!_issues.TryGetValue(process, out issues)) { issues = new List <AnalyzerIssue>(); _issues.Add(process, issues); } return(issues); } }
public ProcessContext(AnalyzerExecutionContext executionContext, AnalyzerTraceProcess process) { _executionContext = executionContext; AnalyzerProcess = process; AutomatedAnalysisTraceLog traceLog = executionContext.Trace as AutomatedAnalysisTraceLog; if (traceLog != null) { Process = traceLog.TraceLog.Processes[(ProcessIndex)process.UniqueID]; } Issues = executionContext.Issues[process]; _symbolReader = executionContext.SymbolReader; }
// Keep this for now because GLAD depends on it. public List <AnalyzerIssue> this[TraceProcess process] { get { AnalyzerTraceProcess traceProcess = new AnalyzerTraceProcess((int)process.ProcessIndex, process.ProcessID, process.CommandLine, process.ManagedProcess()); List <AnalyzerIssue> issues; if (!_issues.TryGetValue(traceProcess, out issues)) { issues = new List <AnalyzerIssue>(); _issues.Add(traceProcess, issues); } return(issues); } }