mirror of
https://git.rtems.org/rtems-tools/
synced 2025-06-12 16:52:50 +08:00
399 lines
11 KiB
C++
399 lines
11 KiB
C++
/*! @file ReportsBase.h
|
|
* @brief Reports Base Class 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 __REPORTSBASE_H__
|
|
#define __REPORTSBASE_H__
|
|
|
|
#include <stdint.h>
|
|
#include <string>
|
|
#include <time.h>
|
|
#include "DesiredSymbols.h"
|
|
|
|
namespace Coverage {
|
|
|
|
/*!
|
|
* This class contains the base information to create a report
|
|
* set. The report set may be text based, html based or some
|
|
* other format to be defined at a future time.
|
|
*/
|
|
class ReportsBase {
|
|
|
|
public:
|
|
ReportsBase( time_t timestamp );
|
|
virtual ~ReportsBase();
|
|
|
|
/*!
|
|
* This method produces an index of the reports generated.
|
|
*
|
|
* @param[in] fileName identifies the report file name
|
|
*/
|
|
virtual void WriteIndex(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method produces an annotated assembly listing report containing
|
|
* the disassembly of each symbol that was not completely covered.
|
|
*
|
|
* @param[in] fileName identifies the annotated report file name
|
|
*/
|
|
void WriteAnnotatedReport(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* 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 char* const 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 char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method produces a summary report that lists each uncovered
|
|
* range of bytes.
|
|
*
|
|
* @param[in] fileName identifies the report file name
|
|
*/
|
|
void WriteSizeReport(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method produces a summary report that lists information on
|
|
* each symbol which did not achieve 100% coverage
|
|
*
|
|
* @param[in] fileName identifies the report file name
|
|
*/
|
|
void WriteSymbolSummaryReport(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method produces a sumary report for the overall test run.
|
|
*/
|
|
static void WriteSummaryReport(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method returns the unique extension for the Report
|
|
* type. If the extension is ".txt" files will be
|
|
* named "annotated.txt", "branch.txt" ......
|
|
*/
|
|
std::string ReportExtension() { return reportExtension_m; }
|
|
|
|
protected:
|
|
|
|
/*!
|
|
* This type is used to track a state during the annotated output.
|
|
*/
|
|
typedef enum {
|
|
A_SOURCE,
|
|
A_EXECUTED,
|
|
A_NEVER_EXECUTED,
|
|
A_BRANCH_TAKEN,
|
|
A_BRANCH_NOT_TAKEN
|
|
} AnnotatedLineState_t;
|
|
|
|
/*!
|
|
* This member variable contains the extension used for all reports.
|
|
*/
|
|
std::string reportExtension_m;
|
|
|
|
/*!
|
|
* This member variable contains the timestamp for the report.
|
|
*/
|
|
time_t timestamp_m;
|
|
|
|
/*!
|
|
* This method Opens a report file and verifies that it opened
|
|
* correctly. Upon failure NULL is returned.
|
|
*
|
|
* @param[in] fileName identifies the report file name
|
|
*/
|
|
static FILE* OpenFile(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method opens a report file and verifies that it opened.
|
|
* Then appedns any necessary header information onto the file.
|
|
*
|
|
* @param[in] fileName identifies the report file name
|
|
*/
|
|
virtual FILE* OpenAnnotatedFile(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method opens a report file and verifies that it opened.
|
|
* Then appedns any necessary header information onto the file.
|
|
*
|
|
* @param[in] fileName identifies the report file name
|
|
* @param[in] hasBranches indicates if there are branches to report
|
|
*/
|
|
virtual FILE* OpenBranchFile(
|
|
const char* const fileName,
|
|
bool hasBranches
|
|
);
|
|
|
|
/*!
|
|
* This method opens a report file and verifies that it opened.
|
|
* Then appedns any necessary header information onto the file.
|
|
*
|
|
* @param[in] fileName identifies the report file name
|
|
*/
|
|
virtual FILE* OpenCoverageFile(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method opens a report file and verifies that it opened.
|
|
* Then appends any necessary header information onto the file.
|
|
*
|
|
* @param[in] fileName identifies the report file name
|
|
*/
|
|
virtual FILE* OpenNoRangeFile(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method opens a report file and verifies that it opened.
|
|
* Then appedns any necessary header information onto the file.
|
|
*
|
|
* @param[in] fileName identifies the report file name
|
|
*/
|
|
virtual FILE* OpenSizeFile(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method opens a report file and verifies that it opened.
|
|
* Then appedns any necessary header information onto the file.
|
|
*
|
|
* @param[in] fileName identifies the report file name
|
|
*/
|
|
virtual FILE* OpenSymbolSummaryFile(
|
|
const char* const fileName
|
|
);
|
|
|
|
/*!
|
|
* This method Closes a report file.
|
|
*
|
|
* @param[in] aFile identifies the report file name
|
|
*/
|
|
static void CloseFile(
|
|
FILE* aFile
|
|
);
|
|
|
|
/*!
|
|
* This method puts any necessary footer information into
|
|
* the report then closes the file.
|
|
*
|
|
* @param[in] aFile identifies the report file name
|
|
*/
|
|
virtual void CloseAnnotatedFile(
|
|
FILE* aFile
|
|
);
|
|
|
|
/*!
|
|
* This method puts any necessary footer information into
|
|
* the report then closes the file.
|
|
*
|
|
* @param[in] aFile identifies the report file name
|
|
* @param[in] hasBranches indicates if there are branches to report
|
|
*/
|
|
virtual void CloseBranchFile(
|
|
FILE* aFile,
|
|
bool hasBranches
|
|
);
|
|
|
|
/*!
|
|
* This method puts any necessary footer information into
|
|
* the report then closes the file.
|
|
*
|
|
* @param[in] aFile identifies the report file name
|
|
*/
|
|
virtual void CloseCoverageFile(
|
|
FILE* aFile
|
|
);
|
|
|
|
/*!
|
|
* This method puts any necessary footer information into
|
|
* the report then closes the file.
|
|
*
|
|
* @param[in] aFile identifies the report file name
|
|
*/
|
|
void CloseNoRangeFile(
|
|
FILE* aFile
|
|
);
|
|
|
|
/*!
|
|
* This method puts any necessary footer information into
|
|
* the report then closes the file.
|
|
*
|
|
* @param[in] aFile identifies the report file name
|
|
*/
|
|
virtual void CloseSizeFile(
|
|
FILE* aFile
|
|
);
|
|
|
|
/*!
|
|
* This method puts any necessary footer information into
|
|
* the report then closes the file.
|
|
*
|
|
* @param[in] aFile identifies the report file name
|
|
*/
|
|
virtual void CloseSymbolSummaryFile(
|
|
FILE* aFile
|
|
);
|
|
|
|
/*!
|
|
* This method puts any necessary a line of annotated
|
|
* data into the file.
|
|
*
|
|
* @param[in] aFile identifies the report file name
|
|
* @param[in] state identifies the state machine state
|
|
* @param[in] line identifies the string to print
|
|
* @param[in] id identifies the branch or range id.
|
|
*/
|
|
virtual void PutAnnotatedLine(
|
|
FILE* aFile,
|
|
AnnotatedLineState_t state,
|
|
std::string line,
|
|
uint32_t id
|
|
)=0;
|
|
|
|
/*!
|
|
* This method puts any necessary header information in
|
|
* front of an annotated section.
|
|
*
|
|
* @param[in] aFile identifies the report file name
|
|
*/
|
|
virtual void AnnotatedStart(
|
|
FILE* aFile
|
|
)=0;
|
|
|
|
/*!
|
|
* This method puts any necessary footer information in
|
|
* front of an annotated section.
|
|
*
|
|
* @param[in] aFile identifies the report file name
|
|
*/
|
|
virtual void AnnotatedEnd(
|
|
FILE* aFile
|
|
)=0;
|
|
|
|
|
|
/*!
|
|
* This method puts any necessary footer information into
|
|
* the report then closes the file.
|
|
*
|
|
* @param[in] report identifies the report file name
|
|
*/
|
|
virtual bool PutNoBranchInfo(
|
|
FILE* report
|
|
) = 0;
|
|
|
|
/*!
|
|
* This method puts a branch entry into the branch report.
|
|
*
|
|
* @param[in] report identifies the report file name
|
|
* @param[in] number identifies the line number.
|
|
* @param[in] symbolPtr is a pointer to the symbol information
|
|
* @param[in] rangePtr is a pointer to the range information.
|
|
*/
|
|
virtual bool PutBranchEntry(
|
|
FILE* report,
|
|
unsigned int number,
|
|
Coverage::DesiredSymbols::symbolSet_t::iterator symbolPtr,
|
|
Coverage::CoverageRanges::ranges_t::iterator rangePtr
|
|
)=0;
|
|
|
|
/*!
|
|
* This method reports when no range is available for
|
|
* a symbol in the coverage report.
|
|
*
|
|
* @param[in] report identifies the report file name
|
|
* @param[in] number identifies the line number.
|
|
* @param[in] symbol is a pointer to the symbol information
|
|
*/
|
|
virtual void putCoverageNoRange(
|
|
FILE* report,
|
|
FILE* noRangeFile,
|
|
unsigned int number,
|
|
std::string symbol
|
|
)=0;
|
|
|
|
/*!
|
|
* This method puts a line in the coverage report.
|
|
*
|
|
* @param[in] report identifies the report file name
|
|
* @param[in] number identifies the line number.
|
|
* @param[in] ditr is a iterator to the symbol information
|
|
* @param[in] ritr is a iterator to the range information.
|
|
*/
|
|
virtual bool PutCoverageLine(
|
|
FILE* report,
|
|
unsigned int number,
|
|
Coverage::DesiredSymbols::symbolSet_t::iterator ditr,
|
|
Coverage::CoverageRanges::ranges_t::iterator ritr
|
|
)=0;
|
|
|
|
/*!
|
|
* This method method puts a line into the size report.
|
|
*
|
|
* @param[in] report identifies the size report file name
|
|
* @param[in] number identifies the line number.
|
|
* @param[in] symbol is a pointer to the symbol information
|
|
* @param[in] range is a iterator to the range information.
|
|
*/
|
|
virtual bool PutSizeLine(
|
|
FILE* report,
|
|
unsigned int number,
|
|
Coverage::DesiredSymbols::symbolSet_t::iterator symbol,
|
|
Coverage::CoverageRanges::ranges_t::iterator range
|
|
)=0;
|
|
|
|
/*!
|
|
* This method method puts a line into the symbol summary report.
|
|
*
|
|
* @param[in] report identifies the report file name
|
|
* @param[in] number identifies the line number.
|
|
* @param[in] symbol is a pointer to the symbol information
|
|
*/
|
|
virtual bool PutSymbolSummaryLine(
|
|
FILE* report,
|
|
unsigned int number,
|
|
Coverage::DesiredSymbols::symbolSet_t::iterator symbol
|
|
)=0;
|
|
};
|
|
|
|
/*!
|
|
* This method iterates over all report set types and generates
|
|
* all reports.
|
|
*/
|
|
void GenerateReports();
|
|
|
|
}
|
|
|
|
#endif
|