示例#1
0
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);
}
示例#2
0
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();
}
示例#3
0
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();
}