/*! @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
#include
#include
#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