summaryrefslogtreecommitdiffstats
path: root/tester/covoar/ReportsHtml.h
blob: af9f19ab7f8518dc2fa5337af16507d1186000d2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
/*! @file ReportsHtml.h
 *  @brief Reports in HTML Specification
 *
 *  This file contains the specification of the Reports methods.  This
 *  collection of methods is used to generate the various reports of
 *  the analysis results.
 */

#ifndef __REPORTSHTML_H__
#define __REPORTSHTML_H__

#include <string>
#include <fstream>

#include <stdint.h>
#include "ReportsBase.h"
#include "Explanations.h"

namespace Coverage {

/*!
 *   This class contains all methods and data necessary to
 *   do all of the HTML style reports.
 */
class ReportsHtml: public ReportsBase {

  public:
    ReportsHtml(
      time_t                          timestamp,
      const std::string&              symbolSetName,
      Coverage::Explanations&         allExplanations,
      const std::string&              projectName,
      const std::string&              outputDirectory,
      const Coverage::DesiredSymbols& symbolsToAnalyze,
      bool                            branchInfoAvailable
    );
   ~ReportsHtml();

   /*!
    *  This method produces an index file.
    *
    *  @param[in] fileName identifies the file name.
    */
   void WriteIndex( const std::string& fileName ) override;

   /*!
    *  This method produces a report that contains information about each
    *  uncovered branch statement.
    *
    *  @param[in] fileName identifies the branch report file name
    */
   void WriteBranchReport( const std::string& fileName );

   /*!
    *  This method produces a report that contains information about each
    *  uncovered range of bytes.
    *
    *  @param[in] fileName identifies the coverage report file name
    */
   void WriteCoverageReport( const std::string& fileName );

   /*!
    *  This method produces a summary report that lists each uncovered
    *  range of bytes.
    *
    *  @param[in] fileName identifies the size report file name
    */
   void WriteSizeReport( const std::string& fileName );

  protected:

    /*!
     *  This variable tracks the annotated state at the time the
     *  last line was output.  This allows the text formating to change
     *  based upon the type of lines being put out: source code or assembly
     *  object dump line....
     */
    AnnotatedLineState_t lastState_m;

    /* Inherit documentation from base class. */
    virtual void  OpenAnnotatedFile(
      const std::string& fileName,
      std::ofstream&     aFile
    ) override;

    /* Inherit documentation from base class. */
    virtual void OpenBranchFile(
      const std::string& fileName,
      bool               hasBranches,
      std::ofstream&     aFile
    ) override;

    /* Inherit documentation from base class. */
    virtual void OpenCoverageFile(
      const std::string& fileName,
      std::ofstream&     aFile
    ) override;

    /* Inherit documentation from base class. */
    virtual void OpenNoRangeFile(
      const std::string& fileName,
      std::ofstream&     aFile
    ) override;

    /* Inherit documentation from base class. */
    virtual void OpenSizeFile(
      const std::string& fileName,
      std::ofstream&     aFile
    ) override;

    /* Inherit documentation from base class. */
    virtual void OpenSymbolSummaryFile(
      const std::string& fileName,
      std::ofstream&     aFile
    ) override;

    /* Inherit documentation from base class. */
    virtual void CloseAnnotatedFile(
      std::ofstream& aFile
    ) override;

    /* Inherit documentation from base class. */
    virtual void CloseBranchFile(
      std::ofstream& aFile,
      bool           hasBranches
    ) override;

    /* Inherit documentation from base class. */
    virtual void CloseCoverageFile(
      std::ofstream& aFile
    ) override;

    /* Inherit documentation from base class. */
    void CloseNoRangeFile( std::ofstream& aFile );

    /* Inherit documentation from base class. */
    virtual void CloseSizeFile(
      std::ofstream& aFile
    ) override;

    /* Inherit documentation from base class. */
    virtual void CloseSymbolSummaryFile(
      std::ofstream& aFile
    ) override;

    /* Inherit documentation from base class. */
    virtual void PutAnnotatedLine(
      std::ofstream&       aFile,
      AnnotatedLineState_t state,
      const std::string&   line,
      uint32_t             id
    ) override;

    /* Inherit documentation from base class. */
     virtual void AnnotatedStart(
       std::ofstream& aFile
     ) override;

    /* Inherit documentation from base class. */
     virtual void AnnotatedEnd(
       std::ofstream& aFile
     ) override;

    /* Inherit documentation from base class. */
    virtual bool PutNoBranchInfo(
      std::ofstream& report
    ) override;

    /* Inherit documentation from base class. */
    virtual bool PutBranchEntry(
      std::ofstream&                         report,
      unsigned int                           number,
      const std::string&                     symbolName,
      const SymbolInformation&               symbolInfo,
      const CoverageRanges::coverageRange_t& range
    ) override;

    /* Inherit documentation from base class. */
    virtual void putCoverageNoRange(
      std::ofstream&     report,
      std::ofstream&     noRangeFile,
      unsigned int       number,
      const std::string& symbol
    ) override;

    /* Inherit documentation from base class. */
    virtual bool PutCoverageLine(
      std::ofstream&                         report,
      unsigned int                           number,
      const std::string&                     symbolName,
      const SymbolInformation&               symbolInfo,
      const CoverageRanges::coverageRange_t& range
    ) override;

    /* Inherit documentation from base class. */
    virtual bool PutSizeLine(
      std::ofstream&                         report,
      unsigned int                           number,
      const std::string&                     symbolName,
      const CoverageRanges::coverageRange_t& range
    ) override;

    /* Inherit documentation from base class. */
    virtual bool PutSymbolSummaryLine(
      std::ofstream&           report,
      unsigned int             number,
      const std::string&       symbolName,
      const SymbolInformation& symbolInfo
    ) override;

    /* Inherit documentation from base class. */
    virtual void OpenFile(
      const std::string& fileName,
      std::ofstream&     aFile
    );

    /* Inherit documentation from base class. */
    virtual bool WriteExplanationFile(
      const std::string&           fileName,
      const Coverage::Explanation* explanation
    );
  };

}

#endif