diff --git a/src/plugins/metrics/dune b/src/plugins/metrics/dune index 83e510199b1e6d2fc0a4ed1fddd7a2096ff9edc3..e0fb2335869122adc9941094d10b1586c7df1252 100644 --- a/src/plugins/metrics/dune +++ b/src/plugins/metrics/dune @@ -1,7 +1,7 @@ ( library (name metrics) (public_name frama-c-metrics.core) - (modules metrics_parameters css_html metrics_base metrics_acsl + (modules metrics metrics_parameters css_html metrics_base metrics_acsl metrics_cabs metrics_cilast metrics_coverage register) (flags -open Frama_c_kernel) diff --git a/src/plugins/metrics/register_gui.ml b/src/plugins/metrics/register_gui.ml index efec0263fc675d20e7e329db4d5dea90e62ba7dd..50dadd3fe7d342249e23879656d1cf9a9c3cf8a2 100644 --- a/src/plugins/metrics/register_gui.ml +++ b/src/plugins/metrics/register_gui.ml @@ -40,8 +40,8 @@ let mk_bi_label (parent:GPack.box) l1 = module HalsteadMetricsGUI = struct - let compute = Metrics_cabs.compute_on_cabs - let name = "Halstead" + let compute = Metrics__Metrics_cabs.compute_on_cabs + let name = "Halstead" let display_result (main_ui:Design.main_window_extension_points) (parent_win:GPack.box) = try @@ -52,8 +52,8 @@ module HalsteadMetricsGUI = struct ignore(GMisc.label ~markup:(Printf.sprintf "<b>%s</b>" name) ~justify:`LEFT ~packing:box#pack ()); ignore(GMisc.separator `HORIZONTAL ~packing:box#pack ()); - let metrics = Metrics_cabs.Halstead.get_metrics () in - let table_contents = Metrics_cabs.Halstead.to_list metrics in + let metrics = Metrics__Metrics_cabs.Halstead.get_metrics () in + let table_contents = Metrics__Metrics_cabs.Halstead.to_list metrics in Metrics_gui_panels.display_as_table table_contents box with | Ast.NoUntypedAst -> @@ -77,7 +77,7 @@ module CyclomaticMetricsGUI = struct val mutable checked_fun = Kernel_function.dummy () method get_data = - let checker = (new Metrics_cilast.slocVisitor ~libc) in + let checker = (new Metrics__Metrics_cilast.slocVisitor ~libc) in ignore (visitFramacGlobal (checker :> frama_c_visitor) (Kernel_function.get_global checked_fun)); checker#get_global_metrics @@ -144,7 +144,7 @@ module CyclomaticMetricsGUI = struct ignore(GMisc.label ~markup:(Printf.sprintf "<b>%s</b>" fname) ~justify:`LEFT ~packing:vbox#pack ()); ignore(GMisc.separator `HORIZONTAL ~packing:vbox#pack ()); - let metrics_data = BasicMetrics.to_list self#get_data in + let metrics_data = Metrics__Metrics_base.BasicMetrics.to_list self#get_data in Metrics_gui_panels.display_as_table metrics_data vbox; let close_button = GButton.button ~stock:`OK ~packing:vbox#pack () in close_button#set_border_width 10; @@ -167,16 +167,16 @@ module CyclomaticMetricsGUI = struct match localizable with | PVDecl (Some kf, _,_) -> let callback1 () = - Metrics_parameters.debug "cyclo_selector - callback"; + Metrics__Metrics_parameters.debug "cyclo_selector - callback"; self#display_localizable localizable () in let callback2 () = (* function selected is kf *) - Metrics_coverage.compute_coverage_by_fun (); + Metrics__Metrics_coverage.compute_coverage_by_fun (); (* Got a list of (kf,value,total,percent). Now let's scan this list *) try - let valeur,total,percent = Metrics_coverage.get_coverage kf in + let valeur,total,percent = Metrics__Metrics_coverage.get_coverage kf in self#do_value main_ui localizable valeur total percent with Not_found -> () in @@ -192,7 +192,7 @@ module CyclomaticMetricsGUI = struct main_ui#register_source_selector self#cyclo_selector end - let compute ~libc () = Metrics_cilast.compute_on_cilast ~libc + let compute ~libc () = Metrics__Metrics_cilast.compute_on_cilast ~libc let display_result ~libc (parent_win:GPack.box) = let padder = GBin.alignment @@ -202,8 +202,8 @@ module CyclomaticMetricsGUI = struct ignore(GMisc.label ~markup:(Printf.sprintf "<b>%s</b>" name) ~justify:`LEFT ~packing:box#pack ()); ignore(GMisc.separator `HORIZONTAL ~packing:box#pack ()); - let metrics = Metrics_cilast.get_global_metrics ~libc in - let table_contents = BasicMetrics.to_list metrics in + let metrics = Metrics__Metrics_cilast.get_global_metrics ~libc in + let table_contents = Metrics__Metrics_base.BasicMetrics.to_list metrics in Metrics_gui_panels.display_as_table table_contents box let register ~libc main_ui = @@ -226,7 +226,7 @@ module ValueCoverageGUI = struct let filetree_enabled = ref true let filetree_visible () = - !filetree_enabled && Metrics_coverage.is_computed_by_fun () + !filetree_enabled && Metrics__Metrics_coverage.is_computed_by_fun () (* TODO : Metrics data structure must be projectified ? *) let compute ~libc = @@ -234,10 +234,10 @@ module ValueCoverageGUI = struct match !result with | None -> !Db.Value.compute (); - result := Some (Metrics_coverage.compute ~libc) + result := Some (Metrics__Metrics_coverage.compute ~libc) | Some _ -> () end; - Metrics_coverage.compute_coverage_by_fun (); + Metrics__Metrics_coverage.compute_coverage_by_fun (); !update_filetree `Contents; Extlib.the !result @@ -247,7 +247,7 @@ module ValueCoverageGUI = struct begin try let kf = Globals.Functions.get v in - get (Metrics_coverage.get_coverage kf) + get (Metrics__Metrics_coverage.get_coverage kf) with Not_found -> -1 end | _ -> -1 @@ -293,7 +293,7 @@ module ValueCoverageGUI = struct let () = Db.Value.Table_By_Callstack.add_hook_on_update (fun _ -> - Metrics_coverage.clear_coverage_by_fun (); + Metrics__Metrics_coverage.clear_coverage_by_fun (); !update_filetree `Visibility) (* Functions are highlighted using different colors according to the @@ -340,12 +340,12 @@ module ValueCoverageGUI = struct ~justify:`LEFT ~packing:box#pack ()); ignore(GMisc.separator `HORIZONTAL ~packing:box#pack ()); let metrics = compute ~libc in - let pcent = Metrics_coverage.percent_coverage ~libc metrics in + let pcent = Metrics__Metrics_coverage.percent_coverage ~libc metrics in let progress_bar = GRange.progress_bar ~packing:box#pack () in progress_bar#set_fraction (pcent /. 100.0); ignore(GMisc.label ~markup:(Format.sprintf "%s%% functions reached" - (Metrics_base.float_to_string pcent)) + (Metrics__Metrics_base.float_to_string pcent)) ~justify:`LEFT ~packing:box#pack ()); let _ignore = Gtk_helper.on_bool box "Highlight results" (fun () -> !highlight) @@ -361,11 +361,11 @@ module ValueCoverageGUI = struct let register ~libc main_ui = Design.register_reset_extension (fun _ -> result := None); main_ui#register_source_highlighter highlighter; - let apply = Metrics_parameters.ValueCoverage.get () in + let apply = Metrics__Metrics_parameters.ValueCoverage.get () in Metrics_gui_panels.register_metrics ~apply name (display_result ~libc main_ui); end -let register_final ?(libc=Metrics_parameters.Libc.get ()) main_ui = +let register_final ?(libc=Metrics__Metrics_parameters.Libc.get ()) main_ui = let box = Metrics_gui_panels.init_panel main_ui in Design.register_reset_extension Metrics_gui_panels.reset_panel; HalsteadMetricsGUI.register main_ui; diff --git a/src/plugins/scope/dune b/src/plugins/scope/dune index 9a571a95c5e47f05817f8a5405c5100ee92e5ca2..abce421f6401225cfee17dfeb43f4a9b0464c539 100644 --- a/src/plugins/scope/dune +++ b/src/plugins/scope/dune @@ -1,13 +1,13 @@ (library - (name Scope) + (name scope) (public_name frama-c-scope.core) - (modules datascope zones defs) + (modules scope datascope zones defs) (flags -open Frama_c_kernel) (libraries frama-c.kernel) ) (library - (name Scope_gui) + (name scope_gui) (public_name frama-c-scope.gui) (optional) (modules dpds_gui) diff --git a/src/plugins/scope/scope.mli b/src/plugins/scope/scope.mli index 6fcce5df2b8df895a9a7493e6ba1d2a1d71d0a41..b6da9fef8d6889887dcf37cbeb76f928ffd5d6f1 100644 --- a/src/plugins/scope/scope.mli +++ b/src/plugins/scope/scope.mli @@ -45,7 +45,12 @@ module Defs : sig a call. Also returns the zone that is possibly not defined. Can return [None] when the information is not available (Pdg missing). - *) +*) + + val compute_with_def_type_zone: + Cil_types.kernel_function -> Cil_types.stmt -> Locations.Zone.t -> + ((bool * bool) Cil_datatype.Stmt.Map.t * Locations.Zone.t option) option + (** internal use *) end module Datascope : sig @@ -72,6 +77,15 @@ module Datascope : sig val rm_asserts : unit -> unit (** Same analysis than [check_asserts] but mark the assertions as proven. *) + + (** for internal use *) + module R: Plugin.General_services + + val get_lval_zones: + for_writing:bool -> + Cil_types.stmt -> + Cil_types.lval -> + Locations.Zone.t * bool * Locations.Zone.t end (** {3 Zones} *)