From de185fe1a97d9640810d9e882cae511f512bc992 Mon Sep 17 00:00:00 2001 From: Alex White Date: Mon, 5 Apr 2021 11:29:25 -0500 Subject: covoar: Use range-based for loops in ReportsBase Some of the loops in the ReportsBase::Write* methods contained both regular and range-based for loops. This changes them to use only range- based for loops. Closes #4374 --- tester/covoar/Explanations.cc | 2 +- tester/covoar/Explanations.h | 2 +- tester/covoar/ReportsBase.cc | 87 +++++++++++++++++-------------------------- tester/covoar/ReportsBase.h | 12 +++--- tester/covoar/ReportsHtml.cc | 54 +++++++++++++-------------- tester/covoar/ReportsHtml.h | 6 +-- tester/covoar/ReportsText.cc | 38 +++++++++---------- tester/covoar/ReportsText.h | 6 +-- 8 files changed, 95 insertions(+), 112 deletions(-) diff --git a/tester/covoar/Explanations.cc b/tester/covoar/Explanations.cc index 2050b84..7b0f95a 100644 --- a/tester/covoar/Explanations.cc +++ b/tester/covoar/Explanations.cc @@ -115,7 +115,7 @@ done: } const Explanation *Explanations::lookupExplanation( - std::string& start + const std::string& start ) { if (set.find( start ) == set.end()) { diff --git a/tester/covoar/Explanations.h b/tester/covoar/Explanations.h index ce0e4d4..de0c051 100644 --- a/tester/covoar/Explanations.h +++ b/tester/covoar/Explanations.h @@ -99,7 +99,7 @@ namespace Coverage { * which to search */ const Explanation *lookupExplanation( - std::string& start + const std::string& start ); /*! diff --git a/tester/covoar/ReportsBase.cc b/tester/covoar/ReportsBase.cc index fea776c..d904f8d 100644 --- a/tester/covoar/ReportsBase.cc +++ b/tester/covoar/ReportsBase.cc @@ -197,15 +197,12 @@ std::string expand_tabs(const std::string& in) { void ReportsBase::WriteAnnotatedReport( const char* const fileName ) { - FILE* aFile = NULL; - Coverage::CoverageRanges* theBranches; - Coverage::CoverageRanges* theRanges; - Coverage::CoverageMapBase* theCoverageMap = NULL; - uint32_t bAddress = 0; - AnnotatedLineState_t state; - const std::list* theInstructions; - std::list< - Coverage::ObjdumpProcessor::objdumpLine_t>::const_iterator itr; + FILE* aFile = NULL; + Coverage::CoverageRanges* theBranches; + Coverage::CoverageRanges* theRanges; + Coverage::CoverageMapBase* theCoverageMap = NULL; + uint32_t bAddress = 0; + AnnotatedLineState_t state; aFile = OpenAnnotatedFile(fileName); if (!aFile) @@ -231,16 +228,12 @@ void ReportsBase::WriteAnnotatedReport( theCoverageMap = info.unifiedCoverageMap; bAddress = info.baseAddress; - theInstructions = &(info.instructions); theRanges = info.uncoveredRanges; theBranches = info.uncoveredBranches; // Add annotations to each line where necessary AnnotatedStart( aFile ); - for (itr = theInstructions->begin(); - itr != theInstructions->end(); - itr++ ) { - + for (const auto& instruction : info.instructions) { uint32_t id = 0; std::string annotation = ""; std::string line; @@ -249,17 +242,19 @@ void ReportsBase::WriteAnnotatedReport( state = A_SOURCE; - if ( itr->isInstruction ) { - if (!theCoverageMap->wasExecuted( itr->address - bAddress )){ + if ( instruction.isInstruction ) { + if (!theCoverageMap->wasExecuted( instruction.address - bAddress )){ annotation = "<== NOT EXECUTED"; state = A_NEVER_EXECUTED; - id = theRanges->getId( itr->address ); - } else if (theCoverageMap->isBranch( itr->address - bAddress )) { - id = theBranches->getId( itr->address ); - if (theCoverageMap->wasAlwaysTaken( itr->address - bAddress )){ + id = theRanges->getId( instruction.address ); + } else if (theCoverageMap->isBranch( instruction.address - bAddress )) { + id = theBranches->getId( instruction.address ); + if (theCoverageMap->wasAlwaysTaken( instruction.address - bAddress )){ annotation = "<== ALWAYS TAKEN"; state = A_BRANCH_TAKEN; - } else if (theCoverageMap->wasNeverTaken( itr->address - bAddress )){ + } else if ( + theCoverageMap->wasNeverTaken( instruction.address - bAddress ) + ) { annotation = "<== NEVER TAKEN"; state = A_BRANCH_NOT_TAKEN; } @@ -268,7 +263,7 @@ void ReportsBase::WriteAnnotatedReport( } } - std::string textLineWithoutTabs = expand_tabs(itr->line); + std::string textLineWithoutTabs = expand_tabs(instruction.line); snprintf( textLine, LINE_LENGTH, "%-90s", textLineWithoutTabs.c_str() ); line = textLine + annotation; @@ -287,11 +282,10 @@ void ReportsBase::WriteAnnotatedReport( void ReportsBase::WriteBranchReport( const char* const fileName ) { - FILE* report = NULL; - Coverage::CoverageRanges::ranges_t::iterator ritr; - Coverage::CoverageRanges* theBranches; - unsigned int count; - bool hasBranches = true; + FILE* report = NULL; + Coverage::CoverageRanges* theBranches; + unsigned int count; + bool hasBranches = true; if ((SymbolsToAnalyze->getNumberBranchesFound(symbolSetName_m) == 0) || (BranchInfoAvailable == false) ) @@ -315,12 +309,9 @@ void ReportsBase::WriteBranchReport( theBranches = info.uncoveredBranches; if (theBranches && !theBranches->set.empty()) { - - for (ritr = theBranches->set.begin() ; - ritr != theBranches->set.end() ; - ritr++ ) { + for (const auto& range : theBranches->set) { count++; - PutBranchEntry( report, count, symbol, info, ritr ); + PutBranchEntry( report, count, symbol, info, range ); } } } @@ -336,12 +327,11 @@ void ReportsBase::WriteCoverageReport( const char* const fileName ) { - FILE* report; - Coverage::CoverageRanges::ranges_t::iterator ritr; - Coverage::CoverageRanges* theRanges; - unsigned int count; - FILE* NoRangeFile; - std::string NoRangeName; + FILE* report; + Coverage::CoverageRanges* theRanges; + unsigned int count; + FILE* NoRangeFile; + std::string NoRangeName; // Open special file that captures NoRange informaiton NoRangeName = "no_range_"; @@ -374,11 +364,8 @@ void ReportsBase::WriteCoverageReport( putCoverageNoRange( report, NoRangeFile, count, symbol ); count++; } else if (!theRanges->set.empty()) { - - for (ritr = theRanges->set.begin() ; - ritr != theRanges->set.end() ; - ritr++ ) { - PutCoverageLine( report, count, symbol, info, ritr ); + for (const auto& range : theRanges->set) { + PutCoverageLine( report, count, symbol, info, range ); count++; } } @@ -396,10 +383,9 @@ void ReportsBase::WriteSizeReport( const char* const fileName ) { - FILE* report; - Coverage::CoverageRanges::ranges_t::iterator ritr; - Coverage::CoverageRanges* theRanges; - unsigned int count; + FILE* report; + Coverage::CoverageRanges* theRanges; + unsigned int count; // Open the report file. report = OpenSizeFile( fileName ); @@ -417,11 +403,8 @@ void ReportsBase::WriteSizeReport( theRanges = info.uncoveredRanges; if (theRanges && !theRanges->set.empty()) { - - for (ritr = theRanges->set.begin() ; - ritr != theRanges->set.end() ; - ritr++ ) { - PutSizeLine( report, count, symbol, ritr ); + for (const auto& range : theRanges->set) { + PutSizeLine( report, count, symbol, range ); count++; } } diff --git a/tester/covoar/ReportsBase.h b/tester/covoar/ReportsBase.h index 5eff76c..ab8f8dd 100644 --- a/tester/covoar/ReportsBase.h +++ b/tester/covoar/ReportsBase.h @@ -328,14 +328,14 @@ class ReportsBase { * @param[in] number identifies the line number. * @param[in] symbolName is the symbol's name. * @param[in] symbolInfo is the symbol's information. - * @param[in] rangePtr is a pointer to the range information. + * @param[in] range is the range information. */ virtual bool PutBranchEntry( FILE* report, unsigned int number, const std::string& symbolName, const SymbolInformation& symbolInfo, - Coverage::CoverageRanges::ranges_t::iterator rangePtr + const CoverageRanges::coverageRange_t& range )=0; /*! @@ -360,14 +360,14 @@ class ReportsBase { * @param[in] number identifies the line number. * @param[in] symbolName is the symbol's name. * @param[in] symbolInfo is the symbol's information. - * @param[in] ritr is a iterator to the range information. + * @param[in] range is the range information. */ virtual bool PutCoverageLine( FILE* report, unsigned int number, const std::string& symbolName, const SymbolInformation& symbolInfo, - Coverage::CoverageRanges::ranges_t::iterator ritr + const CoverageRanges::coverageRange_t& range )=0; /*! @@ -376,13 +376,13 @@ class ReportsBase { * @param[in] report identifies the size report file name * @param[in] number identifies the line number. * @param[in] symbolName is the symbol's name. - * @param[in] range is a iterator to the range information. + * @param[in] range is the range information. */ virtual bool PutSizeLine( FILE* report, unsigned int number, const std::string& symbolName, - Coverage::CoverageRanges::ranges_t::iterator range + const CoverageRanges::coverageRange_t& range )=0; /*! diff --git a/tester/covoar/ReportsHtml.cc b/tester/covoar/ReportsHtml.cc index fa1ebf6..fe75cdd 100644 --- a/tester/covoar/ReportsHtml.cc +++ b/tester/covoar/ReportsHtml.cc @@ -501,7 +501,7 @@ namespace Coverage { unsigned int count, const std::string& symbolName, const SymbolInformation& symbolInfo, - Coverage::CoverageRanges::ranges_t::iterator rangePtr + const CoverageRanges::coverageRange_t& range ) { const Coverage::Explanation* explanation; @@ -528,13 +528,13 @@ namespace Coverage { fprintf( report, "%s\n", - rangePtr->id, - rangePtr->lowSourceLine.c_str() + range.id, + range.lowSourceLine.c_str() ); // File - i = rangePtr->lowSourceLine.find(":"); - temp = rangePtr->lowSourceLine.substr (0, i); + i = range.lowSourceLine.find(":"); + temp = range.lowSourceLine.substr (0, i); fprintf( report, "%s\n", @@ -545,17 +545,17 @@ namespace Coverage { fprintf( report, "%d\n", - rangePtr->highAddress - rangePtr->lowAddress + 1 + range.highAddress - range.lowAddress + 1 ); // Reason Branch was uncovered - if (rangePtr->reason == + if (range.reason == Coverage::CoverageRanges::UNCOVERED_REASON_BRANCH_ALWAYS_TAKEN) fprintf( report, "Always Taken\n" ); - else if (rangePtr->reason == + else if (range.reason == Coverage::CoverageRanges::UNCOVERED_REASON_BRANCH_NEVER_TAKEN) fprintf( report, @@ -563,7 +563,7 @@ namespace Coverage { ); // Taken / Not taken counts - lowAddress = rangePtr->lowAddress; + lowAddress = range.lowAddress; bAddress = symbolInfo.baseAddress; theCoverageMap = symbolInfo.unifiedCoverageMap; fprintf( @@ -579,7 +579,7 @@ namespace Coverage { // See if an explanation is available and write the Classification and // the Explination Columns. - explanation = AllExplanations->lookupExplanation( rangePtr->lowSourceLine ); + explanation = AllExplanations->lookupExplanation( range.lowSourceLine ); if ( !explanation ) { // Write Classificationditr->second.baseAddress fprintf( @@ -589,7 +589,7 @@ namespace Coverage { ); } else { char explanationFile[48]; - sprintf( explanationFile, "explanation%d.html", rangePtr->id ); + sprintf( explanationFile, "explanation%d.html", range.id ); fprintf( report, "%s\n" @@ -707,7 +707,7 @@ namespace Coverage { unsigned int count, const std::string& symbolName, const SymbolInformation& symbolInfo, - Coverage::CoverageRanges::ranges_t::iterator rangePtr + const CoverageRanges::coverageRange_t& range ) { const Coverage::Explanation* explanation; @@ -731,14 +731,14 @@ namespace Coverage { fprintf( report, "%s
%s\n", - rangePtr->id, - rangePtr->lowSourceLine.c_str(), - rangePtr->highSourceLine.c_str() + range.id, + range.lowSourceLine.c_str(), + range.highSourceLine.c_str() ); // File - i = rangePtr->lowSourceLine.find(":"); - temp = rangePtr->lowSourceLine.substr (0, i); + i = range.lowSourceLine.find(":"); + temp = range.lowSourceLine.substr (0, i); fprintf( report, "%s\n", @@ -749,18 +749,18 @@ namespace Coverage { fprintf( report, "%d\n", - rangePtr->highAddress - rangePtr->lowAddress + 1 + range.highAddress - range.lowAddress + 1 ); // Size in instructions fprintf( report, "%d\n", - rangePtr->instructionCount + range.instructionCount ); // See if an explanation is available - explanation = AllExplanations->lookupExplanation( rangePtr->lowSourceLine ); + explanation = AllExplanations->lookupExplanation( range.lowSourceLine ); if ( !explanation ) { fprintf( report, @@ -773,7 +773,7 @@ namespace Coverage { } else { char explanationFile[48]; - sprintf( explanationFile, "explanation%d.html", rangePtr->id ); + sprintf( explanationFile, "explanation%d.html", range.id ); fprintf( report, "%s\n" @@ -794,7 +794,7 @@ namespace Coverage { FILE* report, unsigned int count, const std::string& symbolName, - Coverage::CoverageRanges::ranges_t::iterator range + const CoverageRanges::coverageRange_t& range ) { std::string temp; @@ -810,7 +810,7 @@ namespace Coverage { fprintf( report, "%d\n", - range->highAddress - range->lowAddress + 1 + range.highAddress - range.lowAddress + 1 ); // symbol @@ -824,13 +824,13 @@ namespace Coverage { fprintf( report, "
%s\n", - range->id, - range->lowSourceLine.c_str() + range.id, + range.lowSourceLine.c_str() ); // File - i = range->lowSourceLine.find(":"); - temp = range->lowSourceLine.substr (0, i); + i = range.lowSourceLine.find(":"); + temp = range.lowSourceLine.substr (0, i); fprintf( report, "%s\n", diff --git a/tester/covoar/ReportsHtml.h b/tester/covoar/ReportsHtml.h index 60c5dc8..8d209ae 100644 --- a/tester/covoar/ReportsHtml.h +++ b/tester/covoar/ReportsHtml.h @@ -165,7 +165,7 @@ class ReportsHtml: public ReportsBase { unsigned int number, const std::string& symbolName, const SymbolInformation& symbolInfo, - Coverage::CoverageRanges::ranges_t::iterator rangePtr + const CoverageRanges::coverageRange_t& range ); /* Inherit documentation from base class. */ @@ -182,7 +182,7 @@ class ReportsHtml: public ReportsBase { unsigned int number, const std::string& symbolName, const SymbolInformation& symbolInfo, - Coverage::CoverageRanges::ranges_t::iterator ritr + const CoverageRanges::coverageRange_t& range ); /* Inherit documentation from base class. */ @@ -190,7 +190,7 @@ class ReportsHtml: public ReportsBase { FILE* report, unsigned int number, const std::string& symbolName, - Coverage::CoverageRanges::ranges_t::iterator range + const CoverageRanges::coverageRange_t& range ); /* Inherit documentation from base class. */ diff --git a/tester/covoar/ReportsText.cc b/tester/covoar/ReportsText.cc index f56580a..33be32f 100644 --- a/tester/covoar/ReportsText.cc +++ b/tester/covoar/ReportsText.cc @@ -66,7 +66,7 @@ bool ReportsText::PutBranchEntry( unsigned int number, const std::string& symbolName, const SymbolInformation& symbolInfo, - Coverage::CoverageRanges::ranges_t::iterator rangePtr + const CoverageRanges::coverageRange_t& range ) { const Coverage::Explanation* explanation; @@ -80,22 +80,22 @@ bool ReportsText::PutBranchEntry( "Size in Bytes : %d\n", symbolName.c_str(), symbolInfo.baseAddress, - rangePtr->lowSourceLine.c_str(), - rangePtr->lowAddress, - rangePtr->highAddress - rangePtr->lowAddress + 1 + range.lowSourceLine.c_str(), + range.lowAddress, + range.highAddress - range.lowAddress + 1 ); - if (rangePtr->reason == + if (range.reason == Coverage::CoverageRanges::UNCOVERED_REASON_BRANCH_ALWAYS_TAKEN) fprintf( report, "Reason : %s\n\n", "ALWAYS TAKEN" ); - else if (rangePtr->reason == + else if (range.reason == Coverage::CoverageRanges::UNCOVERED_REASON_BRANCH_NEVER_TAKEN) fprintf( report, "Reason : %s\n\n", "NEVER TAKEN" ); // See if an explanation is available - explanation = AllExplanations->lookupExplanation( rangePtr->lowSourceLine ); + explanation = AllExplanations->lookupExplanation( range.lowSourceLine ); if ( !explanation ) { fprintf( @@ -159,7 +159,7 @@ bool ReportsText::PutCoverageLine( unsigned int number, const std::string& symbolName, const SymbolInformation& symbolInfo, - Coverage::CoverageRanges::ranges_t::iterator ritr + const CoverageRanges::coverageRange_t& range ) { const Coverage::Explanation* explanation; @@ -173,18 +173,18 @@ bool ReportsText::PutCoverageLine( "Ending Line : %s (0x%x)\n" "Size in Bytes : %d\n" "Size in Instructions : %d\n\n", - ritr->id, + range.id, symbolName.c_str(), symbolInfo.baseAddress, - ritr->lowSourceLine.c_str(), - ritr->lowAddress, - ritr->highSourceLine.c_str(), - ritr->highAddress, - ritr->highAddress - ritr->lowAddress + 1, - ritr->instructionCount + range.lowSourceLine.c_str(), + range.lowAddress, + range.highSourceLine.c_str(), + range.highAddress, + range.highAddress - range.lowAddress + 1, + range.instructionCount ); - explanation = AllExplanations->lookupExplanation( ritr->lowSourceLine ); + explanation = AllExplanations->lookupExplanation( range.lowSourceLine ); if ( !explanation ) { fprintf( @@ -216,15 +216,15 @@ bool ReportsText::PutSizeLine( FILE* report, unsigned int number, const std::string& symbolName, - Coverage::CoverageRanges::ranges_t::iterator range + const CoverageRanges::coverageRange_t& range ) { fprintf( report, "%d\t%s\t%s\n", - range->highAddress - range->lowAddress + 1, + range.highAddress - range.lowAddress + 1, symbolName.c_str(), - range->lowSourceLine.c_str() + range.lowSourceLine.c_str() ); return true; } diff --git a/tester/covoar/ReportsText.h b/tester/covoar/ReportsText.h index 91366b5..23a1003 100644 --- a/tester/covoar/ReportsText.h +++ b/tester/covoar/ReportsText.h @@ -85,7 +85,7 @@ class ReportsText: public ReportsBase { unsigned int number, const std::string& symbolName, const SymbolInformation& symbolInfo, - Coverage::CoverageRanges::ranges_t::iterator rangePtr + const CoverageRanges::coverageRange_t& range ); /* Inherit documentation from base class. */ @@ -102,7 +102,7 @@ class ReportsText: public ReportsBase { unsigned int number, const std::string& symbolName, const SymbolInformation& symbolInfo, - Coverage::CoverageRanges::ranges_t::iterator ritr + const CoverageRanges::coverageRange_t& range ); /* Inherit documentation from base class. */ @@ -110,7 +110,7 @@ class ReportsText: public ReportsBase { FILE* report, unsigned int number, const std::string& symbolName, - Coverage::CoverageRanges::ranges_t::iterator range + const CoverageRanges::coverageRange_t& range ); /* Inherit documentation from base class. */ -- cgit v1.2.3