diff options
author | Alex White <alex.white@oarcorp.com> | 2021-04-02 16:21:43 -0500 |
---|---|---|
committer | Joel Sherrill <joel@rtems.org> | 2021-04-06 14:18:55 -0500 |
commit | b02600a6bbc4d0524b731e504c91bc293d70a354 (patch) | |
tree | 3a3156d9013552231fd89ddc203dda3032b7def0 /tester/covoar/ReportsHtml.cc | |
parent | covoar: Fix off-by-one in Coverage::finalizeSymbol() (diff) | |
download | rtems-tools-b02600a6bbc4d0524b731e504c91bc293d70a354.tar.bz2 |
covoar: Split symbols by symbol set
This changes the way covoar organizes the symbols. Instead of treating
all symbols as one set, covoar is now aware of multiple symbol sets and
tracks statistics for each set. It now also generates reports for each
symbol set.
This change relieves the caller of covoar of the reponsibility of
managing the symbol sets. As a result, covoar can minimize the work
done for each symbol set, yielding a significant speedup.
Updates #4374
Diffstat (limited to 'tester/covoar/ReportsHtml.cc')
-rw-r--r-- | tester/covoar/ReportsHtml.cc | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/tester/covoar/ReportsHtml.cc b/tester/covoar/ReportsHtml.cc index 6406a48..7137016 100644 --- a/tester/covoar/ReportsHtml.cc +++ b/tester/covoar/ReportsHtml.cc @@ -31,8 +31,8 @@ namespace Coverage { - ReportsHtml::ReportsHtml( time_t timestamp ): - ReportsBase( timestamp ) + ReportsHtml::ReportsHtml( time_t timestamp, std::string symbolSetName ): + ReportsBase( timestamp, symbolSetName ) { reportExtension_m = ".html"; } @@ -113,7 +113,7 @@ namespace Coverage { FILE* aFile; // Open the file - aFile = ReportsBase::OpenFile( fileName ); + aFile = ReportsBase::OpenFile( fileName, symbolSetName_m.c_str() ); // Put Header information on the file fprintf( @@ -488,7 +488,8 @@ namespace Coverage { FILE* report ) { - if (BranchInfoAvailable && SymbolsToAnalyze->getNumberBranchesFound() != 0) + if (BranchInfoAvailable && + SymbolsToAnalyze->getNumberBranchesFound(symbolSetName_m) != 0) fprintf( report, "All branch paths taken.\n" ); else fprintf( report, "No branch information found.\n" ); @@ -498,7 +499,8 @@ namespace Coverage { bool ReportsHtml::PutBranchEntry( FILE* report, unsigned int count, - Coverage::DesiredSymbols::symbolSet_t::iterator symbolPtr, + const std::string& symbolName, + const SymbolInformation& symbolInfo, Coverage::CoverageRanges::ranges_t::iterator rangePtr ) { @@ -519,7 +521,7 @@ namespace Coverage { fprintf( report, "<td class=\"covoar-td\" align=\"center\">%s</td>\n", - symbolPtr->first.c_str() + symbolName.c_str() ); // line @@ -562,8 +564,8 @@ namespace Coverage { // Taken / Not taken counts lowAddress = rangePtr->lowAddress; - bAddress = symbolPtr->second.baseAddress; - theCoverageMap = symbolPtr->second.unifiedCoverageMap; + bAddress = symbolInfo.baseAddress; + theCoverageMap = symbolInfo.unifiedCoverageMap; fprintf( report, "<td class=\"covoar-td\" align=\"center\">%d</td>\n", @@ -703,7 +705,8 @@ namespace Coverage { bool ReportsHtml::PutCoverageLine( FILE* report, unsigned int count, - Coverage::DesiredSymbols::symbolSet_t::iterator symbolPtr, + const std::string& symbolName, + const SymbolInformation& symbolInfo, Coverage::CoverageRanges::ranges_t::iterator rangePtr ) { @@ -721,7 +724,7 @@ namespace Coverage { fprintf( report, "<td class=\"covoar-td\" align=\"center\">%s</td>\n", - symbolPtr->first.c_str() + symbolName.c_str() ); // Range @@ -790,7 +793,7 @@ namespace Coverage { bool ReportsHtml::PutSizeLine( FILE* report, unsigned int count, - Coverage::DesiredSymbols::symbolSet_t::iterator symbol, + const std::string& symbolName, Coverage::CoverageRanges::ranges_t::iterator range ) { @@ -814,7 +817,7 @@ namespace Coverage { fprintf( report, "<td class=\"covoar-td\" align=\"center\">%s</td>\n", - symbol->first.c_str() + symbolName.c_str() ); // line @@ -842,7 +845,8 @@ namespace Coverage { bool ReportsHtml::PutSymbolSummaryLine( FILE* report, unsigned int count, - Coverage::DesiredSymbols::symbolSet_t::iterator symbol + const std::string& symbolName, + const SymbolInformation& symbolInfo ) { @@ -856,10 +860,10 @@ namespace Coverage { fprintf( report, "<td class=\"covoar-td\" align=\"center\">%s</td>\n", - symbol->first.c_str() + symbolName.c_str() ); - if (symbol->second.stats.sizeInBytes == 0) { + if (symbolInfo.stats.sizeInBytes == 0) { // The symbol has never been seen. Write "unknown" for all columns. fprintf( report, @@ -879,60 +883,60 @@ namespace Coverage { fprintf( report, "<td class=\"covoar-td\" align=\"center\">%d</td>\n", - symbol->second.stats.sizeInBytes + symbolInfo.stats.sizeInBytes ); // Total Size in Instructions fprintf( report, "<td class=\"covoar-td\" align=\"center\">%d</td>\n", - symbol->second.stats.sizeInInstructions + symbolInfo.stats.sizeInInstructions ); // Total Uncovered Ranges fprintf( report, "<td class=\"covoar-td\" align=\"center\">%d</td>\n", - symbol->second.stats.uncoveredRanges + symbolInfo.stats.uncoveredRanges ); // Uncovered Size in Bytes fprintf( report, "<td class=\"covoar-td\" align=\"center\">%d</td>\n", - symbol->second.stats.uncoveredBytes + symbolInfo.stats.uncoveredBytes ); // Uncovered Size in Instructions fprintf( report, "<td class=\"covoar-td\" align=\"center\">%d</td>\n", - symbol->second.stats.uncoveredInstructions + symbolInfo.stats.uncoveredInstructions ); // Total number of branches fprintf( report, "<td class=\"covoar-td\" align=\"center\">%d</td>\n", - symbol->second.stats.branchesNotExecuted + symbol->second.stats.branchesExecuted + symbolInfo.stats.branchesNotExecuted + symbolInfo.stats.branchesExecuted ); // Total Always Taken fprintf( report, "<td class=\"covoar-td\" align=\"center\">%d</td>\n", - symbol->second.stats.branchesAlwaysTaken + symbolInfo.stats.branchesAlwaysTaken ); // Total Never Taken fprintf( report, "<td class=\"covoar-td\" align=\"center\">%d</td>\n", - symbol->second.stats.branchesNeverTaken + symbolInfo.stats.branchesNeverTaken ); // % Uncovered Instructions - if ( symbol->second.stats.sizeInInstructions == 0 ) + if ( symbolInfo.stats.sizeInInstructions == 0 ) fprintf( report, "<td class=\"covoar-td\" align=\"center\">100.00</td>\n" @@ -941,12 +945,12 @@ namespace Coverage { fprintf( report, "<td class=\"covoar-td\" align=\"center\">%.2f</td>\n", - (symbol->second.stats.uncoveredInstructions*100.0)/ - symbol->second.stats.sizeInInstructions + (symbolInfo.stats.uncoveredInstructions*100.0)/ + symbolInfo.stats.sizeInInstructions ); // % Uncovered Bytes - if ( symbol->second.stats.sizeInBytes == 0 ) + if ( symbolInfo.stats.sizeInBytes == 0 ) fprintf( report, "<td class=\"covoar-td\" align=\"center\">100.00</td>\n" @@ -955,8 +959,8 @@ namespace Coverage { fprintf( report, "<td class=\"covoar-td\" align=\"center\">%.2f</td>\n", - (symbol->second.stats.uncoveredBytes*100.0)/ - symbol->second.stats.sizeInBytes + (symbolInfo.stats.uncoveredBytes*100.0)/ + symbolInfo.stats.sizeInBytes ); } |