void CoverageReport::renderFileReports(raw_ostream &OS, ArrayRef<StringRef> Files) const { FileCoverageSummary Totals("TOTAL"); auto FileReports = prepareFileReports(Coverage, Totals, Files); std::vector<StringRef> Filenames; for (const FileCoverageSummary &FCS : FileReports) Filenames.emplace_back(FCS.Name); adjustColumnWidths(Filenames, {}); OS << column("Filename", FileReportColumns[0]) << column("Regions", FileReportColumns[1], Column::RightAlignment) << column("Missed Regions", FileReportColumns[2], Column::RightAlignment) << column("Cover", FileReportColumns[3], Column::RightAlignment) << column("Functions", FileReportColumns[4], Column::RightAlignment) << column("Missed Functions", FileReportColumns[5], Column::RightAlignment) << column("Executed", FileReportColumns[6], Column::RightAlignment) << column("Instantiations", FileReportColumns[7], Column::RightAlignment) << column("Missed Insts.", FileReportColumns[8], Column::RightAlignment) << column("Executed", FileReportColumns[9], Column::RightAlignment) << column("Lines", FileReportColumns[10], Column::RightAlignment) << column("Missed Lines", FileReportColumns[11], Column::RightAlignment) << column("Cover", FileReportColumns[12], Column::RightAlignment) << "\n"; renderDivider(FileReportColumns, OS); OS << "\n"; for (const FileCoverageSummary &FCS : FileReports) render(FCS, OS); renderDivider(FileReportColumns, OS); OS << "\n"; render(Totals, OS); }
void VolumeListingDialog::setOrigins(const std::vector<VolumeURL>& origins, VolumeReader* reader) { origins_ = origins; reader_ = reader; QString labelText; if (selectionMode_ == SINGLE_SELECTION) labelText = tr("The selected file contains %1 volumes. Please select the volume to load:").arg(origins.size()); else { tgtAssert(selectionMode_ == MULTI_SELECTION, "unknown selection mode"); labelText = tr("The selected file contains %1 volumes. Please select one or multiple volumes to load:").arg(origins.size()); } titleLabel_->setText(labelText); // clear table and search widgets table_->blockSignals(true); filterTextBox_->blockSignals(true); comboBoxFilterAttribute_->blockSignals(true); table_->clear(); filterTextBox_->clear(); comboBoxFilterAttribute_->clear(); metaDataKeys_.clear(); filteredOrigins_.clear(); // determine key set of origin meta data std::set<std::string> keySet; for (size_t i=0; i<origins_.size(); i++) { std::vector<std::string> keys = origins_.at(i).getMetaDataContainer().getKeys(); keySet.insert(keys.begin(), keys.end()); } for (std::set<std::string>::iterator it = keySet.begin(); it != keySet.end(); ++it) metaDataKeys_.push_back(QString::fromStdString(*it)); metaDataKeys_.sort(); // add keys to attribute combobox comboBoxFilterAttribute_->addItem(tr("All attributes")); comboBoxFilterAttribute_->addItems(metaDataKeys_); comboBoxFilterAttribute_->addItem("URL"); // initialize table QStringList headers(metaDataKeys_); headers.push_back("URL"); table_->setColumnCount(headers.size()); table_->setHorizontalHeaderLabels(headers); table_->blockSignals(false); filterTextBox_->blockSignals(false); comboBoxFilterAttribute_->blockSignals(false); updateTableRows(); adjustColumnWidths(); }
void CoverageReport::renderFunctionReports(ArrayRef<StringRef> Files, raw_ostream &OS) { bool isFirst = true; for (StringRef Filename : Files) { auto Functions = Coverage.getCoveredFunctions(Filename); if (isFirst) isFirst = false; else OS << "\n"; std::vector<StringRef> Funcnames; for (const auto &F : Functions) Funcnames.emplace_back(F.Name); adjustColumnWidths({}, Funcnames); OS << "File '" << Filename << "':\n"; OS << column("Name", FunctionReportColumns[0]) << column("Regions", FunctionReportColumns[1], Column::RightAlignment) << column("Miss", FunctionReportColumns[2], Column::RightAlignment) << column("Cover", FunctionReportColumns[3], Column::RightAlignment) << column("Lines", FunctionReportColumns[4], Column::RightAlignment) << column("Miss", FunctionReportColumns[5], Column::RightAlignment) << column("Cover", FunctionReportColumns[6], Column::RightAlignment); OS << "\n"; renderDivider(FunctionReportColumns, OS); OS << "\n"; FunctionCoverageSummary Totals("TOTAL"); for (const auto &F : Functions) { FunctionCoverageSummary Function = FunctionCoverageSummary::get(F); ++Totals.ExecutionCount; Totals.RegionCoverage += Function.RegionCoverage; Totals.LineCoverage += Function.LineCoverage; render(Function, OS); } if (Totals.ExecutionCount) { renderDivider(FunctionReportColumns, OS); OS << "\n"; render(Totals, OS); } } }
void VolumeListingDialog::showEvent(QShowEvent* event) { QWidget::showEvent(event); adjustColumnWidths(); }