method print_stats fmt =
let print_item e =
let _, func, (a,b,c,d,e,f,g,h) = e in
Metrics_parameters.debug
"stats: func: %s@\nval: ifs %d@\nassigns %d@\nloops %d@\ncalls %d@\ngotos %d@\nmems %d@\nexits %d@\ncyclo %d"
func a b c d e f g h;
fprintf fmt "<tr>\n";
fprintf fmt "<td> %s </td>\n" func;
fprintf fmt "<td> %d </td>\n" a;
fprintf fmt "<td> %d </td>\n" b;
fprintf fmt "<td> %d </td>\n" c;
fprintf fmt "<td> %d </td>\n" d;
fprintf fmt "<td> %d </td>\n" e;
fprintf fmt "<td> %d </td>\n" f;
fprintf fmt "<td> %d </td>\n" g;
fprintf fmt "<td> %d </td>\n" h;
fprintf fmt "</tr>\n";
in
while List.length !stats > 0 do
let first = List.hd !stats in
let (fic,_,_) = first in
let fic_stats = (self#stats_of_fic fic) in
fprintf fmt "<h3> %s </h3>\n" fic;
fprintf fmt " <br>\n";
fprintf fmt "<table style=\"width: 252px; height: 81px;\" border=\"1\">\n";
fprintf fmt " <tbody>\n";
fprintf fmt " <tr>\n";
fprintf fmt " <th>Function</th>\n";
fprintf fmt " <th>#If stmts<br>\n";
fprintf fmt " <th>#Assignments<br>\n";
fprintf fmt " <th>#Loops<br>\n";
fprintf fmt " <th>#Calls<br>\n";
fprintf fmt " <th>#Gotos<br>\n";
fprintf fmt " <th>#Pointer accesses<br>\n";
fprintf fmt " <th>#Exits<br>\n";
fprintf fmt " <th>Cyclomatic value<br>\n";
fprintf fmt " </th>\n";
fprintf fmt " </tr>\n";
List.iter print_item fic_stats;
fprintf fmt " </tbody>\n";
fprintf fmt "</table>\n"
done