summaryrefslogtreecommitdiffstats
path: root/tester/covoar
diff options
context:
space:
mode:
authorAlex White <alex.white@oarcorp.com>2021-02-25 10:35:39 -0600
committerJoel Sherrill <joel@rtems.org>2021-03-30 13:15:58 -0500
commit4aabd9bbf742f04a53331064dc0692b91d4d3a6c (patch)
tree09846f0dcf54fdfd69af43b5685b8b3e0ddd8d21 /tester/covoar
parentcovoar: Handle periods in symbols from objdump (diff)
downloadrtems-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.cc10
-rw-r--r--tester/covoar/DesiredSymbols.h24
-rw-r--r--tester/covoar/ReportsBase.cc46
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
+ );
}
}