diff options
author | Alex White <alex.white@oarcorp.com> | 2021-02-25 10:35:39 -0600 |
---|---|---|
committer | Joel Sherrill <joel@rtems.org> | 2021-03-30 13:15:58 -0500 |
commit | 4aabd9bbf742f04a53331064dc0692b91d4d3a6c (patch) | |
tree | 09846f0dcf54fdfd69af43b5685b8b3e0ddd8d21 /tester/covoar | |
parent | covoar: Handle periods in symbols from objdump (diff) | |
download | rtems-tools-4aabd9bbf742f04a53331064dc0692b91d4d3a6c.tar.bz2 |
covoar/reports: Add new statistics to summary
The following new statistics have been added to the summary report:
number of unreferenced symbols, total branch paths found, number of
branch paths not executed, and percentage of branch paths covered.
Diffstat (limited to 'tester/covoar')
-rw-r--r-- | tester/covoar/DesiredSymbols.cc | 10 | ||||
-rw-r--r-- | tester/covoar/DesiredSymbols.h | 24 | ||||
-rw-r--r-- | tester/covoar/ReportsBase.cc | 46 |
3 files changed, 71 insertions, 9 deletions
diff --git a/tester/covoar/DesiredSymbols.cc b/tester/covoar/DesiredSymbols.cc index c97b25c..ffc4f86 100644 --- a/tester/covoar/DesiredSymbols.cc +++ b/tester/covoar/DesiredSymbols.cc @@ -175,6 +175,8 @@ namespace Coverage { s.second.stats.uncoveredBytes++; } } + } else { + stats.unreferencedSymbols++; } } } @@ -470,10 +472,18 @@ namespace Coverage { return stats.branchesNeverTaken; }; + uint32_t DesiredSymbols::getNumberBranchesNotExecuted( void ) const { + return stats.branchesNotExecuted; + }; + uint32_t DesiredSymbols::getNumberUncoveredRanges( void ) const { return stats.uncoveredRanges; }; + uint32_t DesiredSymbols::getNumberUnreferencedSymbols( void ) const { + return stats.unreferencedSymbols; + }; + bool DesiredSymbols::isDesired ( const std::string& symbolName ) const diff --git a/tester/covoar/DesiredSymbols.h b/tester/covoar/DesiredSymbols.h index 367ca95..5cf96e9 100644 --- a/tester/covoar/DesiredSymbols.h +++ b/tester/covoar/DesiredSymbols.h @@ -83,6 +83,11 @@ namespace Coverage { int uncoveredRanges; /*! + * This member variable contains the total number of unreferenced symbols. + */ + int unreferencedSymbols; + + /*! * This method returns the percentage of uncovered instructions. * * @return Returns the percent uncovered instructions @@ -109,7 +114,8 @@ namespace Coverage { sizeInInstructions(0), uncoveredBytes(0), uncoveredInstructions(0), - uncoveredRanges(0) + uncoveredRanges(0), + unreferencedSymbols(0) { } @@ -279,6 +285,14 @@ namespace Coverage { uint32_t getNumberBranchesNeverTaken( void ) const; /*! + * This method returns the total number of branches not executed + * for all analyzed symbols. + * + * @return Returns the total number of branches not executed + */ + uint32_t getNumberBranchesNotExecuted( void ) const; + + /*! * This method returns the total number of uncovered ranges * for all analyzed symbols. * @@ -287,6 +301,14 @@ namespace Coverage { uint32_t getNumberUncoveredRanges( void ) const; /*! + * This method returns the total number of unreferenced symbols + * for all analyzed symbols. + * + * @return Returns the total number of unreferenced symbols + */ + uint32_t getNumberUnreferencedSymbols( void ) const; + + /*! * This method returns an indication of whether or not the specified * symbol is a symbol to analyze. * diff --git a/tester/covoar/ReportsBase.cc b/tester/covoar/ReportsBase.cc index 0244601..0be5567 100644 --- a/tester/covoar/ReportsBase.cc +++ b/tester/covoar/ReportsBase.cc @@ -441,6 +441,7 @@ void ReportsBase::WriteSummaryReport( Coverage::DesiredSymbols::symbolSet_t::iterator itr; uint32_t notExecuted = 0; double percentage; + double percentageBranches; Coverage::CoverageMapBase* theCoverageMap; uint32_t totalBytes = 0; FILE* report; @@ -475,13 +476,26 @@ void ReportsBase::WriteSummaryReport( percentage /= (double) totalBytes; percentage *= 100.0; - fprintf( report, "Bytes Analyzed : %d\n", totalBytes ); - fprintf( report, "Bytes Not Executed : %d\n", notExecuted ); - fprintf( report, "Percentage Executed : %5.4g\n", 100.0 - percentage ); - fprintf( report, "Percentage Not Executed : %5.4g\n", percentage ); + percentageBranches = (double) ( + SymbolsToAnalyze->getNumberBranchesAlwaysTaken() + + SymbolsToAnalyze->getNumberBranchesNeverTaken() + + (SymbolsToAnalyze->getNumberBranchesNotExecuted() * 2) + ); + percentageBranches /= (double) SymbolsToAnalyze->getNumberBranchesFound() * 2; + percentageBranches *= 100.0; + + fprintf( report, "Bytes Analyzed : %d\n", totalBytes ); + fprintf( report, "Bytes Not Executed : %d\n", notExecuted ); + fprintf( report, "Percentage Executed : %5.4g\n", 100.0 - percentage ); + fprintf( report, "Percentage Not Executed : %5.4g\n", percentage ); fprintf( report, - "Uncovered ranges found : %d\n", + "Unreferenced Symbols : %d\n", + SymbolsToAnalyze->getNumberUnreferencedSymbols() + ); + fprintf( + report, + "Uncovered ranges found : %d\n\n", SymbolsToAnalyze->getNumberUncoveredRanges() ); if ((SymbolsToAnalyze->getNumberBranchesFound() == 0) || @@ -490,14 +504,20 @@ void ReportsBase::WriteSummaryReport( } else { fprintf( report, - "Total branches found : %d\n", + "Total conditional branches found : %d\n", SymbolsToAnalyze->getNumberBranchesFound() ); fprintf( report, - "Uncovered branches found : %d\n", + "Total branch paths found : %d\n", + SymbolsToAnalyze->getNumberBranchesFound() * 2 + ); + fprintf( + report, + "Uncovered branch paths found : %d\n", SymbolsToAnalyze->getNumberBranchesAlwaysTaken() + - SymbolsToAnalyze->getNumberBranchesNeverTaken() + SymbolsToAnalyze->getNumberBranchesNeverTaken() + + (SymbolsToAnalyze->getNumberBranchesNotExecuted() * 2) ); fprintf( report, @@ -509,6 +529,16 @@ void ReportsBase::WriteSummaryReport( " %d branches never taken\n", SymbolsToAnalyze->getNumberBranchesNeverTaken() ); + fprintf( + report, + " %d branch paths not executed\n", + SymbolsToAnalyze->getNumberBranchesNotExecuted() * 2 + ); + fprintf( + report, + "Percentage branch paths covered : %4.4g\n", + 100.0 - percentageBranches + ); } } |