private void ProcessTraceFile(TraceFile trace, Archive archive, Config config, LineCoverageMerger coverageMerger) { if (trace.IsEmpty()) { logger.Info("Archiving {trace} because it does not contain any coverage", trace.FilePath); archive.ArchiveEmptyFile(trace.FilePath); return; } string processPath = trace.FindProcessPath(); if (processPath == null) { logger.Info("Archiving {trace} because it does not contain a Process= line", trace.FilePath); archive.ArchiveFileWithoutProcess(trace.FilePath); return; } Config.ConfigForProcess processConfig = config.CreateConfigForProcess(processPath); IUpload upload = uploadFactory.CreateUpload(processConfig, fileSystem); if (processConfig.PdbDirectory == null) { ProcessMethodCoverage(trace, archive, processConfig, upload); } else { ProcessLineCoverage(trace, archive, config, processConfig, upload, coverageMerger); } }