/// <summary> /// Tries to read and convert the trace file. Logs and returns null if this fails. /// Empty trace files are archived and null is returned as well. /// </summary> private Dictionary <string, FileCoverage> ConvertTraceFileToLineCoverage(TraceFile trace, Archive archive, Config.ConfigForProcess processConfig) { ParsedTraceFile parsedTraceFile = new ParsedTraceFile(trace.Lines, trace.FilePath); Dictionary <string, FileCoverage> lineCoverage; try { lineCoverage = lineCoverageSynthesizer.ConvertToLineCoverage(parsedTraceFile, processConfig.PdbDirectory, processConfig.AssemblyPatterns); } catch (Exception e) { logger.Error(e, "Failed to convert {traceFile} to line coverage. Will retry later", trace.FilePath); return(null); } if (lineCoverage == null) { logger.Info("Archiving {trace} because it did not produce any line coverage after conversion", trace.FilePath); archive.ArchiveFileWithoutLineCoverage(trace.FilePath); return(null); } return(lineCoverage); }