[PATCH v2 01/13] Remove AllExplanations global variable
Ryan Long
ryan.long at oarcorp.com
Mon Aug 2 20:44:17 UTC 2021
- Replaced AllExplanations in app_common with a local variable in covoar()
- Added the allExplanations_m member variable to ReportsBase
- Added a parameter to ReportsBase and its derived classes' constructors
to initialize allExplanations_m
- Added parameter to GenerateReports() to pass the variable from
covoar() to the constructors for Reports*
---
tester/covoar/ReportsBase.cc | 21 ++++++++++++++-------
tester/covoar/ReportsBase.h | 18 ++++++++++++++++--
tester/covoar/ReportsHtml.cc | 11 ++++++-----
tester/covoar/ReportsHtml.h | 6 +++++-
tester/covoar/ReportsText.cc | 11 +++++++----
tester/covoar/ReportsText.h | 6 +++++-
tester/covoar/app_common.cc | 1 -
tester/covoar/app_common.h | 1 -
tester/covoar/covoar.cc | 8 ++++----
9 files changed, 57 insertions(+), 26 deletions(-)
diff --git a/tester/covoar/ReportsBase.cc b/tester/covoar/ReportsBase.cc
index cd65c53..62229c0 100644
--- a/tester/covoar/ReportsBase.cc
+++ b/tester/covoar/ReportsBase.cc
@@ -23,10 +23,14 @@
namespace Coverage {
-ReportsBase::ReportsBase( time_t timestamp, const std::string& symbolSetName ):
- reportExtension_m( "" ),
- symbolSetName_m( symbolSetName ),
- timestamp_m( timestamp )
+ReportsBase::ReportsBase(
+ time_t timestamp,
+ const std::string& symbolSetName,
+ Coverage::Explanations& allExplanations
+): reportExtension_m( "" ),
+ symbolSetName_m( symbolSetName ),
+ timestamp_m( timestamp ),
+ allExplanations_m( allExplanations )
{
}
@@ -558,7 +562,10 @@ void ReportsBase::WriteSummaryReport(
CloseFile( report );
}
-void GenerateReports( const std::string& symbolSetName )
+void GenerateReports(
+ const std::string& symbolSetName,
+ Coverage::Explanations& allExplanations
+)
{
typedef std::list<ReportsBase *> reportList_t;
@@ -570,9 +577,9 @@ void GenerateReports( const std::string& symbolSetName )
timestamp = time( NULL ); /* get current cal time */
- reports = new ReportsText( timestamp, symbolSetName );
+ reports = new ReportsText( timestamp, symbolSetName, allExplanations );
reportList.push_back( reports );
- reports = new ReportsHtml( timestamp, symbolSetName );
+ reports = new ReportsHtml( timestamp, symbolSetName, allExplanations );
reportList.push_back( reports );
for ( ritr = reportList.begin(); ritr != reportList.end(); ritr++ ) {
diff --git a/tester/covoar/ReportsBase.h b/tester/covoar/ReportsBase.h
index 41add8e..a2856e3 100644
--- a/tester/covoar/ReportsBase.h
+++ b/tester/covoar/ReportsBase.h
@@ -15,6 +15,7 @@
#include <fstream>
#include <time.h>
#include "DesiredSymbols.h"
+#include "Explanations.h"
namespace Coverage {
@@ -26,7 +27,11 @@ namespace Coverage {
class ReportsBase {
public:
- ReportsBase( time_t timestamp, const std::string& symbolSetName );
+ ReportsBase(
+ time_t timestamp,
+ const std::string& symbolSetName,
+ Coverage::Explanations& allExplanations
+ );
virtual ~ReportsBase();
/*!
@@ -120,6 +125,11 @@ class ReportsBase {
time_t timestamp_m;
/*!
+ * This member variable contains the explanations to report on.
+ */
+ Coverage::Explanations& allExplanations_m;
+
+ /*!
* This method Opens a report file and verifies that it opened
* correctly. Upon failure NULL is returned.
*
@@ -389,8 +399,12 @@ class ReportsBase {
* all reports.
*
* @param[in] symbolSetName is the name of the symbol set to report on.
+ * @param[in] allExplanations is the explanations to report on.
*/
-void GenerateReports( const std::string& symbolSetName );
+void GenerateReports(
+ const std::string& symbolSetName,
+ Coverage::Explanations& allExplanations
+);
}
diff --git a/tester/covoar/ReportsHtml.cc b/tester/covoar/ReportsHtml.cc
index e276732..88ea25b 100644
--- a/tester/covoar/ReportsHtml.cc
+++ b/tester/covoar/ReportsHtml.cc
@@ -38,9 +38,10 @@ typedef rtems::utils::ostream_guard ostream_guard;
namespace Coverage {
ReportsHtml::ReportsHtml(
- time_t timestamp,
- const std::string& symbolSetName
- ): ReportsBase( timestamp, symbolSetName )
+ time_t timestamp,
+ const std::string& symbolSetName,
+ Coverage::Explanations& allExplanations
+ ): ReportsBase( timestamp, symbolSetName, allExplanations )
{
reportExtension_m = ".html";
}
@@ -506,7 +507,7 @@ namespace Coverage {
// See if an explanation is available and write the Classification and
// the Explination Columns.
- explanation = AllExplanations->lookupExplanation( range.lowSourceLine );
+ explanation = allExplanations_m.lookupExplanation( range.lowSourceLine );
if ( !explanation ) {
// Write Classificationditr->second.baseAddress
report << "<td class=\"covoar-td\" align=\"center\">NONE</td>"
@@ -654,7 +655,7 @@ namespace Coverage {
<< range.instructionCount << "</td>" << std::endl;
// See if an explanation is available
- explanation = AllExplanations->lookupExplanation( range.lowSourceLine );
+ explanation = allExplanations_m.lookupExplanation( range.lowSourceLine );
if ( !explanation ) {
report << "<td class=\"covoar-td\" align=\"center\">NONE</td>"
<< std::endl
diff --git a/tester/covoar/ReportsHtml.h b/tester/covoar/ReportsHtml.h
index a7ed0af..711c48b 100644
--- a/tester/covoar/ReportsHtml.h
+++ b/tester/covoar/ReportsHtml.h
@@ -25,7 +25,11 @@ namespace Coverage {
class ReportsHtml: public ReportsBase {
public:
- ReportsHtml( time_t timestamp, const std::string& symbolSetName );
+ ReportsHtml(
+ time_t timestamp,
+ const std::string& symbolSetName,
+ Coverage::Explanations& allExplanations
+ );
~ReportsHtml();
/*!
diff --git a/tester/covoar/ReportsText.cc b/tester/covoar/ReportsText.cc
index c4a5dbc..0b0d9df 100644
--- a/tester/covoar/ReportsText.cc
+++ b/tester/covoar/ReportsText.cc
@@ -16,8 +16,11 @@ typedef rtems::utils::ostream_guard ostream_guard;
namespace Coverage {
-ReportsText::ReportsText( time_t timestamp, const std::string& symbolSetName ):
- ReportsBase( timestamp, symbolSetName )
+ReportsText::ReportsText(
+ time_t timestamp,
+ const std::string& symbolSetName,
+ Coverage::Explanations& allExplanations
+): ReportsBase( timestamp, symbolSetName, allExplanations )
{
reportExtension_m = ".txt";
}
@@ -95,7 +98,7 @@ bool ReportsText::PutBranchEntry(
}
// See if an explanation is available
- explanation = AllExplanations->lookupExplanation( range.lowSourceLine );
+ explanation = allExplanations_m.lookupExplanation( range.lowSourceLine );
if ( !explanation ) {
report << "Classification: NONE" << std::endl << std::endl
@@ -164,7 +167,7 @@ bool ReportsText::PutCoverageLine(
<< "Size in Instructions : " << range.instructionCount
<< std::endl << std::endl;
- explanation = AllExplanations->lookupExplanation( range.lowSourceLine );
+ explanation = allExplanations_m.lookupExplanation( range.lowSourceLine );
if ( !explanation ) {
report << "Classification: NONE" << std::endl << std::endl
diff --git a/tester/covoar/ReportsText.h b/tester/covoar/ReportsText.h
index 9ad80ef..48528b0 100644
--- a/tester/covoar/ReportsText.h
+++ b/tester/covoar/ReportsText.h
@@ -21,7 +21,11 @@ namespace Coverage {
class ReportsText: public ReportsBase {
public:
- ReportsText( time_t timestamp, const std::string& symbolSetName );
+ ReportsText(
+ time_t timestamp,
+ const std::string& symbolSetName,
+ Coverage::Explanations& allExplanations
+ );
virtual ~ReportsText();
/*!
diff --git a/tester/covoar/app_common.cc b/tester/covoar/app_common.cc
index 8b490ed..f878fb6 100644
--- a/tester/covoar/app_common.cc
+++ b/tester/covoar/app_common.cc
@@ -56,7 +56,6 @@
/*
* Global variables for the program
*/
-Coverage::Explanations* AllExplanations = NULL;
Coverage::ObjdumpProcessor* objdumpProcessor = NULL;
Coverage::DesiredSymbols* SymbolsToAnalyze = NULL;
bool Verbose = false;
diff --git a/tester/covoar/app_common.h b/tester/covoar/app_common.h
index ac32bbd..921bb71 100644
--- a/tester/covoar/app_common.h
+++ b/tester/covoar/app_common.h
@@ -12,7 +12,6 @@
#include "Explanations.h"
#include "TargetBase.h"
-extern Coverage::Explanations* AllExplanations;
extern Coverage::ObjdumpProcessor* objdumpProcessor;
extern Coverage::DesiredSymbols* SymbolsToAnalyze;
extern bool Verbose;
diff --git a/tester/covoar/covoar.cc b/tester/covoar/covoar.cc
index 8d63132..9295519 100644
--- a/tester/covoar/covoar.cc
+++ b/tester/covoar/covoar.cc
@@ -174,6 +174,7 @@ int covoar(
std::string symbolSet;
std::string option;
int opt;
+ Coverage::Explanations allExplanations;
//
// Process command line options.
@@ -354,9 +355,8 @@ int covoar(
<< " symbols" << std::endl;
// Create explanations.
- AllExplanations = new Coverage::Explanations();
if ( explanations )
- AllExplanations->load( explanations );
+ allExplanations.load( explanations );
// Create coverage map reader.
coverageFormat = Coverage::CoverageFormatToEnum(format);
@@ -474,7 +474,7 @@ int covoar(
std::cerr << "Generate Reports" << std::endl;
for (const auto& setName : SymbolsToAnalyze->getSetNames()) {
- Coverage::GenerateReports(setName);
+ Coverage::GenerateReports( setName, allExplanations );
}
// Write explanations that were not found.
@@ -488,7 +488,7 @@ int covoar(
if (Verbose)
std::cerr << "Writing Not Found Report (" << notFound<< ')' << std::endl;
- AllExplanations->writeNotFound( notFound.c_str() );
+ allExplanations.writeNotFound( notFound.c_str() );
}
//Leave tempfiles around if debug flag (-d) is enabled.
--
1.8.3.1
More information about the devel
mailing list