|
|
@ -104,6 +104,18 @@ module NodesHtml : sig
|
|
|
|
end = struct
|
|
|
|
end = struct
|
|
|
|
let log_files = Hashtbl.create 11
|
|
|
|
let log_files = Hashtbl.create 11
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let pp_node_link fmt node =
|
|
|
|
|
|
|
|
Io_infer.Html.pp_node_link
|
|
|
|
|
|
|
|
[".."]
|
|
|
|
|
|
|
|
(Procdesc.Node.get_proc_name node)
|
|
|
|
|
|
|
|
~description:""
|
|
|
|
|
|
|
|
~preds:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_preds node) :> int list)
|
|
|
|
|
|
|
|
~succs:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_succs node) :> int list)
|
|
|
|
|
|
|
|
~exn:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_exn node) :> int list)
|
|
|
|
|
|
|
|
~isvisited:(is_visited node)
|
|
|
|
|
|
|
|
~isproof:false
|
|
|
|
|
|
|
|
fmt (Procdesc.Node.get_id node :> int)
|
|
|
|
|
|
|
|
|
|
|
|
let start_node nodeid loc proc_name preds succs exns source =
|
|
|
|
let start_node nodeid loc proc_name preds succs exns source =
|
|
|
|
let node_fname = Io_infer.Html.node_filename proc_name nodeid in
|
|
|
|
let node_fname = Io_infer.Html.node_filename proc_name nodeid in
|
|
|
|
let modified = Io_infer.Html.modified_during_analysis source ["nodes"; node_fname] in
|
|
|
|
let modified = Io_infer.Html.modified_during_analysis source ["nodes"; node_fname] in
|
|
|
@ -126,41 +138,11 @@ end = struct
|
|
|
|
(Escape.escape_xml (Typ.Procname.to_string proc_name))
|
|
|
|
(Escape.escape_xml (Typ.Procname.to_string proc_name))
|
|
|
|
(Io_infer.Html.pp_line_link source [".."]) loc.Location.line;
|
|
|
|
(Io_infer.Html.pp_line_link source [".."]) loc.Location.line;
|
|
|
|
F.fprintf fmt "<br>PREDS:@\n";
|
|
|
|
F.fprintf fmt "<br>PREDS:@\n";
|
|
|
|
List.iter ~f:(fun node ->
|
|
|
|
List.iter ~f:(pp_node_link fmt) preds;
|
|
|
|
Io_infer.Html.pp_node_link
|
|
|
|
|
|
|
|
[".."]
|
|
|
|
|
|
|
|
(Procdesc.Node.get_proc_name node)
|
|
|
|
|
|
|
|
~description:""
|
|
|
|
|
|
|
|
~preds:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_preds node) :> int list)
|
|
|
|
|
|
|
|
~succs:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_succs node) :> int list)
|
|
|
|
|
|
|
|
~exn:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_exn node) :> int list)
|
|
|
|
|
|
|
|
~isvisited:(is_visited node)
|
|
|
|
|
|
|
|
~isproof:false
|
|
|
|
|
|
|
|
fmt (Procdesc.Node.get_id node :> int)) preds;
|
|
|
|
|
|
|
|
F.fprintf fmt "<br>SUCCS: @\n";
|
|
|
|
F.fprintf fmt "<br>SUCCS: @\n";
|
|
|
|
List.iter ~f:(fun node ->
|
|
|
|
List.iter ~f:(pp_node_link fmt) succs;
|
|
|
|
Io_infer.Html.pp_node_link
|
|
|
|
|
|
|
|
[".."]
|
|
|
|
|
|
|
|
(Procdesc.Node.get_proc_name node)
|
|
|
|
|
|
|
|
~description:""
|
|
|
|
|
|
|
|
~preds:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_preds node) :> int list)
|
|
|
|
|
|
|
|
~succs:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_succs node) :> int list)
|
|
|
|
|
|
|
|
~exn:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_exn node) :> int list)
|
|
|
|
|
|
|
|
~isvisited:(is_visited node)
|
|
|
|
|
|
|
|
~isproof:false
|
|
|
|
|
|
|
|
fmt (Procdesc.Node.get_id node :> int)) succs;
|
|
|
|
|
|
|
|
F.fprintf fmt "<br>EXN: @\n";
|
|
|
|
F.fprintf fmt "<br>EXN: @\n";
|
|
|
|
List.iter ~f:(fun node ->
|
|
|
|
List.iter ~f:(pp_node_link fmt) exns;
|
|
|
|
Io_infer.Html.pp_node_link
|
|
|
|
|
|
|
|
[".."]
|
|
|
|
|
|
|
|
(Procdesc.Node.get_proc_name node)
|
|
|
|
|
|
|
|
~description:""
|
|
|
|
|
|
|
|
~preds:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_preds node) :> int list)
|
|
|
|
|
|
|
|
~succs:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_succs node) :> int list)
|
|
|
|
|
|
|
|
~exn:(List.map ~f:Procdesc.Node.get_id (Procdesc.Node.get_exn node) :> int list)
|
|
|
|
|
|
|
|
~isvisited:(is_visited node)
|
|
|
|
|
|
|
|
~isproof:false
|
|
|
|
|
|
|
|
fmt (Procdesc.Node.get_id node :> int)) exns;
|
|
|
|
|
|
|
|
F.fprintf fmt "<br>@\n";
|
|
|
|
F.fprintf fmt "<br>@\n";
|
|
|
|
F.pp_print_flush fmt ();
|
|
|
|
F.pp_print_flush fmt ();
|
|
|
|
true
|
|
|
|
true
|
|
|
@ -388,7 +370,7 @@ let start_session node (loc: Location.t) proc_name session source =
|
|
|
|
Io_infer.Html.pp_end_color ());
|
|
|
|
Io_infer.Html.pp_end_color ());
|
|
|
|
F.fprintf !curr_html_formatter "%a%a"
|
|
|
|
F.fprintf !curr_html_formatter "%a%a"
|
|
|
|
Io_infer.Html.pp_hline ()
|
|
|
|
Io_infer.Html.pp_hline ()
|
|
|
|
(Io_infer.Html.pp_session_link source ~with_name: true [".."])
|
|
|
|
(Io_infer.Html.pp_session_link source ~with_name: true [".."] ~proc_name)
|
|
|
|
((node_id :> int), session, loc.Location.line);
|
|
|
|
((node_id :> int), session, loc.Location.line);
|
|
|
|
F.fprintf !curr_html_formatter "<LISTING>%a"
|
|
|
|
F.fprintf !curr_html_formatter "<LISTING>%a"
|
|
|
|
Io_infer.Html.pp_start_color Pp.Black
|
|
|
|
Io_infer.Html.pp_start_color Pp.Black
|
|
|
|