[PATCH v1 10/13] Remove BranchInfoAvailable global variable

Ryan Long ryan.long at oarcorp.com
Sun Aug 1 23:23:44 UTC 2021


- Removed BranchInfoAvailable from app_common
- Created member variable in CoverageReaderBase and ReportsBase and a function
  to get the value of the member variable
---
 tester/covoar/CoverageReaderBase.cc |  5 +++++
 tester/covoar/CoverageReaderBase.h  | 10 ++++++++++
 tester/covoar/CoverageReaderQEMU.cc |  2 +-
 tester/covoar/CoverageReaderTSIM.cc |  4 ++--
 tester/covoar/ReportsBase.cc        | 27 +++++++++++++++++----------
 tester/covoar/ReportsBase.h         | 15 ++++++++++++---
 tester/covoar/ReportsHtml.cc        |  8 +++++---
 tester/covoar/ReportsHtml.h         |  3 ++-
 tester/covoar/ReportsText.cc        |  8 +++++---
 tester/covoar/ReportsText.h         |  3 ++-
 tester/covoar/app_common.cc         |  1 -
 tester/covoar/app_common.h          |  1 -
 tester/covoar/covoar.cc             |  6 +++++-
 13 files changed, 66 insertions(+), 27 deletions(-)

diff --git a/tester/covoar/CoverageReaderBase.cc b/tester/covoar/CoverageReaderBase.cc
index 3ebcc8d..e226964 100644
--- a/tester/covoar/CoverageReaderBase.cc
+++ b/tester/covoar/CoverageReaderBase.cc
@@ -16,4 +16,9 @@ namespace Coverage {
   CoverageReaderBase::~CoverageReaderBase()
   {
   }
+
+  bool CoverageReaderBase::getBranchInfoAvailable() const
+  {
+    return branchInfoAvailable_m;
+  }
 }
diff --git a/tester/covoar/CoverageReaderBase.h b/tester/covoar/CoverageReaderBase.h
index 81090c0..ba909e6 100644
--- a/tester/covoar/CoverageReaderBase.h
+++ b/tester/covoar/CoverageReaderBase.h
@@ -42,6 +42,16 @@ namespace Coverage {
       const char* const     file,
       ExecutableInfo* const executableInformation
     ) = 0;
+
+  /*!
+   *  This method retrieves the branchInfoAvailable_m variable
+   */
+  bool getBranchInfoAvailable() const;
+
+  /*!
+   * This member variable tells whether the branch info is available.
+   */
+  bool branchInfoAvailable_m = false;
   };
 
 }
diff --git a/tester/covoar/CoverageReaderQEMU.cc b/tester/covoar/CoverageReaderQEMU.cc
index d3c6abe..802d862 100644
--- a/tester/covoar/CoverageReaderQEMU.cc
+++ b/tester/covoar/CoverageReaderQEMU.cc
@@ -31,7 +31,7 @@ namespace Coverage {
 
   CoverageReaderQEMU::CoverageReaderQEMU()
   {
-    BranchInfoAvailable = true;
+    branchInfoAvailable_m = true;
   }
 
   CoverageReaderQEMU::~CoverageReaderQEMU()
diff --git a/tester/covoar/CoverageReaderTSIM.cc b/tester/covoar/CoverageReaderTSIM.cc
index 03bf7a8..32e3aa7 100644
--- a/tester/covoar/CoverageReaderTSIM.cc
+++ b/tester/covoar/CoverageReaderTSIM.cc
@@ -90,11 +90,11 @@ namespace Coverage {
           aCoverageMap->setWasExecuted( a + 3 );
           if ( cover & 0x08 ) {
             aCoverageMap->setWasTaken( a );
-            BranchInfoAvailable = true;
+            branchInfoAvailable_m = true;
           }
           if ( cover & 0x10 ) {
             aCoverageMap->setWasNotTaken( a );
-            BranchInfoAvailable = true;
+            branchInfoAvailable_m = true;
           }
         }
       }
diff --git a/tester/covoar/ReportsBase.cc b/tester/covoar/ReportsBase.cc
index 11c22c9..f4df64c 100644
--- a/tester/covoar/ReportsBase.cc
+++ b/tester/covoar/ReportsBase.cc
@@ -29,14 +29,16 @@ ReportsBase::ReportsBase(
   Coverage::Explanations& allExplanations,
   const std::string&      projectName,
   const std::string&      outputDirectory,
-  const DesiredSymbols&   symbolsToAnalyze
+  const DesiredSymbols&   symbolsToAnalyze,
+  bool                    branchInfoAvailable
 ): reportExtension_m( "" ),
    symbolSetName_m( symbolSetName ),
    timestamp_m( timestamp ),
    allExplanations_m( allExplanations ),
    projectName_m( projectName ),
    outputDirectory_m( outputDirectory ),
-   symbolsToAnalyze_m( symbolsToAnalyze )
+   symbolsToAnalyze_m( symbolsToAnalyze ),
+   branchInfoAvailable_m( branchInfoAvailable )
 {
 }
 
@@ -311,7 +313,7 @@ void ReportsBase::WriteBranchReport( const std::string& fileName )
 
   if (
     ( symbolsToAnalyze_m.getNumberBranchesFound( symbolSetName_m ) == 0 ) ||
-    ( BranchInfoAvailable == false )
+    ( branchInfoAvailable_m == false )
   ) {
      hasBranches = false;
   }
@@ -325,7 +327,7 @@ void ReportsBase::WriteBranchReport( const std::string& fileName )
   // If no branches were found then branch coverage is not supported
   if (
     ( symbolsToAnalyze_m.getNumberBranchesFound( symbolSetName_m ) != 0 ) &&
-    ( BranchInfoAvailable == true )
+    ( branchInfoAvailable_m == true )
   ) {
     // Process uncovered branches for each symbol in the set.
     const std::vector<std::string>& symbols =
@@ -476,7 +478,8 @@ void  ReportsBase::WriteSummaryReport(
   const std::string&              fileName,
   const std::string&              symbolSetName,
   const std::string&              outputDirectory,
-  const Coverage::DesiredSymbols& symbolsToAnalyze
+  const Coverage::DesiredSymbols& symbolsToAnalyze,
+  bool                            branchInfoAvailable
 )
 {
     // Calculate coverage statistics and output results.
@@ -546,7 +549,7 @@ void  ReportsBase::WriteSummaryReport(
 
   if (
     ( symbolsToAnalyze.getNumberBranchesFound( symbolSetName ) == 0 ) ||
-    ( BranchInfoAvailable == false )
+    ( branchInfoAvailable == false )
   ) {
     report << "No branch information available" << std::endl;
   } else {
@@ -580,7 +583,8 @@ void GenerateReports(
   bool                            verbose,
   const std::string&              projectName,
   const std::string&              outputDirectory,
-  const Coverage::DesiredSymbols& symbolsToAnalyze
+  const Coverage::DesiredSymbols& symbolsToAnalyze,
+  bool                            branchInfoAvailable
 )
 {
   typedef std::list<ReportsBase *> reportList_t;
@@ -599,7 +603,8 @@ void GenerateReports(
     allExplanations,
     projectName,
     outputDirectory,
-    symbolsToAnalyze
+    symbolsToAnalyze,
+    branchInfoAvailable
   );
   reportList.push_back( reports );
   reports = new ReportsHtml(
@@ -608,7 +613,8 @@ void GenerateReports(
     allExplanations,
     projectName,
     outputDirectory,
-    symbolsToAnalyze
+    symbolsToAnalyze,
+    branchInfoAvailable
   );
   reportList.push_back( reports );
 
@@ -661,7 +667,8 @@ void GenerateReports(
     "summary.txt",
     symbolSetName,
     outputDirectory,
-    symbolsToAnalyze
+    symbolsToAnalyze,
+    branchInfoAvailable
   );
 }
 
diff --git a/tester/covoar/ReportsBase.h b/tester/covoar/ReportsBase.h
index a6cf3bc..8883ccb 100644
--- a/tester/covoar/ReportsBase.h
+++ b/tester/covoar/ReportsBase.h
@@ -33,7 +33,8 @@ class ReportsBase {
       Coverage::Explanations& allExplanations,
       const std::string&      projectName,
       const std::string&      outputDirectory,
-      const DesiredSymbols&   symbolsToAnalyze
+      const DesiredSymbols&   symbolsToAnalyze,
+      bool                    branchInfoAvailable
     );
     virtual ~ReportsBase();
 
@@ -95,7 +96,8 @@ class ReportsBase {
       const std::string&              fileName,
       const std::string&              symbolSetName,
       const std::string&              outputDirectory,
-      const Coverage::DesiredSymbols& symbolsToAnalyze
+      const Coverage::DesiredSymbols& symbolsToAnalyze,
+      bool                            branchInfoAvailable
     );
 
     /*!
@@ -154,6 +156,11 @@ class ReportsBase {
     const Coverage::DesiredSymbols& symbolsToAnalyze_m;
 
     /*!
+     * This member variable tells whether the branch info is available
+     */
+    bool branchInfoAvailable_m = false;
+
+    /*!
      *  This method Opens a report file and verifies that it opened
      *  correctly.  Upon failure NULL is returned.
      *
@@ -430,6 +437,7 @@ class ReportsBase {
  *  @param[in] projectName specifies the name of the project
  *  @param[in] outputDirectory specifies the directory for the output
  *  @param[in] symbolsToAnalyze the symbols to be analyzed
+ *  @param[in] branchInfoAvailable tells if branch info is available
  */
 void GenerateReports(
   const std::string&              symbolSetName,
@@ -437,7 +445,8 @@ void GenerateReports(
   bool                            verbose,
   const std::string&              projectName,
   const std::string&              outputDirectory,
-  const Coverage::DesiredSymbols& symbolsToAnalyze
+  const Coverage::DesiredSymbols& symbolsToAnalyze,
+  bool                            branchInfoAvailable
 );
 
 }
diff --git a/tester/covoar/ReportsHtml.cc b/tester/covoar/ReportsHtml.cc
index 2142139..ce8d24b 100644
--- a/tester/covoar/ReportsHtml.cc
+++ b/tester/covoar/ReportsHtml.cc
@@ -43,14 +43,16 @@ namespace Coverage {
     Coverage::Explanations&         allExplanations,
     const std::string&              projectName,
     const std::string&              outputDirectory,
-    const Coverage::DesiredSymbols& symbolsToAnalyze
+    const Coverage::DesiredSymbols& symbolsToAnalyze,
+    bool                            branchInfoAvailable
   ): ReportsBase(
        timestamp,
        symbolSetName,
        allExplanations,
        projectName,
        outputDirectory,
-       symbolsToAnalyze
+       symbolsToAnalyze,
+       branchInfoAvailable
      )
   {
     reportExtension_m = ".html";
@@ -442,7 +444,7 @@ namespace Coverage {
   bool ReportsHtml::PutNoBranchInfo( std::ofstream& report )
   {
     if (
-      BranchInfoAvailable &&
+      branchInfoAvailable_m &&
       symbolsToAnalyze_m.getNumberBranchesFound( symbolSetName_m ) != 0
     ) {
       report << "All branch paths taken." << std::endl;
diff --git a/tester/covoar/ReportsHtml.h b/tester/covoar/ReportsHtml.h
index e9df060..406eefc 100644
--- a/tester/covoar/ReportsHtml.h
+++ b/tester/covoar/ReportsHtml.h
@@ -31,7 +31,8 @@ class ReportsHtml: public ReportsBase {
       Coverage::Explanations&         allExplanations,
       const std::string&              projectName,
       const std::string&              outputDirectory,
-      const Coverage::DesiredSymbols& symbolsToAnalyze
+      const Coverage::DesiredSymbols& symbolsToAnalyze,
+      bool                            branchInfoAvailable
     );
    ~ReportsHtml();
 
diff --git a/tester/covoar/ReportsText.cc b/tester/covoar/ReportsText.cc
index ab2b5f7..6541be2 100644
--- a/tester/covoar/ReportsText.cc
+++ b/tester/covoar/ReportsText.cc
@@ -22,14 +22,16 @@ ReportsText::ReportsText(
   Coverage::Explanations& allExplanations,
   const std::string&      projectName,
   const std::string&      outputDirectory,
-  const DesiredSymbols&   symbolsToAnalyze
+  const DesiredSymbols&   symbolsToAnalyze,
+  bool                    branchInfoAvailable
 ): ReportsBase(
      timestamp,
      symbolSetName,
      allExplanations,
      projectName,
      outputDirectory,
-     symbolsToAnalyze
+     symbolsToAnalyze,
+     branchInfoAvailable
    )
 {
   reportExtension_m = ".txt";
@@ -62,7 +64,7 @@ void ReportsText::PutAnnotatedLine(
 bool ReportsText::PutNoBranchInfo( std::ofstream& report )
 {
   if (
-    BranchInfoAvailable &&
+    branchInfoAvailable_m &&
     symbolsToAnalyze_m.getNumberBranchesFound( symbolSetName_m ) != 0
   ) {
     report << "All branch paths taken." << std::endl;
diff --git a/tester/covoar/ReportsText.h b/tester/covoar/ReportsText.h
index 0d993c0..1aa30b0 100644
--- a/tester/covoar/ReportsText.h
+++ b/tester/covoar/ReportsText.h
@@ -27,7 +27,8 @@ class ReportsText: public ReportsBase {
       Coverage::Explanations& allExplanations,
       const std::string&      projectName,
       const std::string&      outputDirectory,
-      const DesiredSymbols&   symbolsToAnalyze
+      const DesiredSymbols&   symbolsToAnalyze,
+      bool                    branchInfoAvailable
     );
     virtual ~ReportsText();
 
diff --git a/tester/covoar/app_common.cc b/tester/covoar/app_common.cc
index 847fbf8..8f05464 100644
--- a/tester/covoar/app_common.cc
+++ b/tester/covoar/app_common.cc
@@ -56,7 +56,6 @@
 /*
  *  Global variables for the program
  */
-bool                        BranchInfoAvailable = false;
 Target::TargetBase*         TargetInfo          = NULL;
 
 
diff --git a/tester/covoar/app_common.h b/tester/covoar/app_common.h
index 0cef74a..6649905 100644
--- a/tester/covoar/app_common.h
+++ b/tester/covoar/app_common.h
@@ -12,7 +12,6 @@
 #include "Explanations.h"
 #include "TargetBase.h"
 
-extern bool                         BranchInfoAvailable;
 extern Target::TargetBase*          TargetInfo;
 
 
diff --git a/tester/covoar/covoar.cc b/tester/covoar/covoar.cc
index 16cc4e1..ef22362 100644
--- a/tester/covoar/covoar.cc
+++ b/tester/covoar/covoar.cc
@@ -183,6 +183,7 @@ int covoar(
   std::string                   projectName;
   std::string                   outputDirectory = ".";
   Coverage::DesiredSymbols      symbolsToAnalyze;
+  bool                          branchInfoAvailable = false;
   Coverage::ObjdumpProcessor    objdumpProcessor( symbolsToAnalyze );
 
   //
@@ -486,13 +487,16 @@ int covoar(
     std::cerr << "Generate Reports" << std::endl;
 
   for (const auto& setName : symbolsToAnalyze.getSetNames()) {
+    branchInfoAvailable = coverageReader->getBranchInfoAvailable();
+
     Coverage::GenerateReports(
       setName,
       allExplanations,
       verbose,
       projectName,
       outputDirectory,
-      symbolsToAnalyze
+      symbolsToAnalyze,
+      branchInfoAvailable
     );
   }
 
-- 
1.8.3.1



More information about the devel mailing list