CBMC
symex_coverage.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Record and print code coverage of symbolic execution
4 
5 Author: Michael Tautschnig
6 
7 Date: March 2016
8 
9 \*******************************************************************/
10 
13 
14 #ifndef CPROVER_CBMC_SYMEX_COVERAGE_H
15 #define CPROVER_CBMC_SYMEX_COVERAGE_H
16 
17 #include <iosfwd>
18 #include <map>
19 #include <string>
20 
22 
23 class coverage_recordt;
24 class goto_functionst;
25 class namespacet;
26 class xmlt;
27 
29 {
30 public:
31  explicit symex_coveraget(const namespacet &_ns) : ns(_ns)
32  {
33  }
34 
35  void
37  {
38  std::pair<coverage_innert::iterator, bool> entry =
39  coverage[from].insert({to, coverage_infot(from, to, 1)});
40 
41  if(!entry.second)
42  ++(entry.first->second.num_executions);
43  }
44 
45  bool generate_report(
46  const goto_functionst &goto_functions,
47  const std::string &path) const;
48 
49 protected:
50  const namespacet &ns;
51 
53  {
57  unsigned _num_executions)
58  : location(_from), num_executions(_num_executions), succ(_to)
59  {
60  }
61 
63  unsigned num_executions;
65  };
66 
67  typedef std::map<goto_programt::const_targett, coverage_infot>
69  typedef std::map<goto_programt::const_targett, coverage_innert> coveraget;
71 
72  bool
73  output_report(const goto_functionst &goto_functions, std::ostream &os) const;
74 
75  void build_cobertura(
76  const goto_functionst &goto_functions,
77  xmlt &xml_coverage) const;
78 
80  const goto_functionst &goto_functions,
81  coverage_recordt &dest) const;
82 
84 };
85 
86 #endif // CPROVER_CBMC_SYMEX_COVERAGE_H
symex_coveraget::compute_overall_coverage
void compute_overall_coverage(const goto_functionst &goto_functions, coverage_recordt &dest) const
Definition: symex_coverage.cpp:291
symex_coveraget
Definition: symex_coverage.h:28
symex_coveraget::coverage_innert
std::map< goto_programt::const_targett, coverage_infot > coverage_innert
Definition: symex_coverage.h:68
symex_coveraget::coveraget
std::map< goto_programt::const_targett, coverage_innert > coveraget
Definition: symex_coverage.h:69
symex_coveraget::build_cobertura
void build_cobertura(const goto_functionst &goto_functions, xmlt &xml_coverage) const
Definition: symex_coverage.cpp:368
symex_coveraget::coverage
coveraget coverage
Definition: symex_coverage.h:70
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition: namespace.h:90
symex_coveraget::symex_coveraget
symex_coveraget(const namespacet &_ns)
Definition: symex_coverage.h:31
symex_coveraget::output_report
bool output_report(const goto_functionst &goto_functions, std::ostream &os) const
Definition: symex_coverage.cpp:412
symex_coveraget::generate_report
bool generate_report(const goto_functionst &goto_functions, const std::string &path) const
Definition: symex_coverage.cpp:427
symex_coveraget::coverage_infot::location
goto_programt::const_targett location
Definition: symex_coverage.h:62
symex_coveraget::covered
void covered(goto_programt::const_targett from, goto_programt::const_targett to)
Definition: symex_coverage.h:36
symex_coveraget::coverage_infot::coverage_infot
coverage_infot(goto_programt::const_targett _from, goto_programt::const_targett _to, unsigned _num_executions)
Definition: symex_coverage.h:54
xmlt
Definition: xml.h:20
goto_program.h
goto_functionst
A collection of goto functions.
Definition: goto_functions.h:24
symex_coveraget::ns
const namespacet & ns
Definition: symex_coverage.h:50
symex_coveraget::coverage_infot
Definition: symex_coverage.h:52
goto_programt::const_targett
instructionst::const_iterator const_targett
Definition: goto_program.h:587
symex_coveraget::coverage_infot::num_executions
unsigned num_executions
Definition: symex_coverage.h:63
coverage_recordt
Definition: symex_coverage.cpp:31
goto_program_coverage_recordt
Definition: symex_coverage.cpp:50
symex_coveraget::coverage_infot::succ
goto_programt::const_targett succ
Definition: symex_coverage.h:64