[ConfigImpact] Ignore class number when reading config impact data

Reviewed By: ezgicicek

Differential Revision: D28569516

fbshipit-source-id: 45a9083a7
master
Sungkeun Cho 4 years ago committed by Facebook GitHub Bot
parent a577d5fe0f
commit 75e09f7563

@ -879,24 +879,28 @@ let java_inner_class_prefix_regex = Str.regexp "\\$[0-9]+"
let csharp_inner_class_prefix_regex = Str.regexp "\\$[0-9]+"
let replace_regex regex tgt name =
match Str.search_forward regex name 0 with
| _ ->
Str.global_replace regex tgt name
| exception Caml.Not_found ->
name
let replace_java_inner_class_prefix_regex = replace_regex java_inner_class_prefix_regex "$_"
let replace_csharp_inner_class_prefix_regex = replace_regex csharp_inner_class_prefix_regex "$_"
let hashable_name proc_name =
match proc_name with
| Java pname -> (
| Java pname ->
(* Strip autogenerated anonymous inner class numbers in order to keep the bug hash
invariant when introducing new anonymous classes *)
let name = F.asprintf "%a" (Java.pp ~withclass:true Simple) pname in
match Str.search_forward java_inner_class_prefix_regex name 0 with
| _ ->
Str.global_replace java_inner_class_prefix_regex "$_" name
| exception Caml.Not_found ->
name )
| CSharp pname -> (
replace_java_inner_class_prefix_regex name
| CSharp pname ->
let name = F.asprintf "%a" (CSharp.pp ~withclass:true Simple) pname in
match Str.search_forward csharp_inner_class_prefix_regex name 0 with
| _ ->
Str.global_replace csharp_inner_class_prefix_regex "$_" name
| exception Caml.Not_found ->
name )
replace_csharp_inner_class_prefix_regex name
| ObjC_Cpp osig when ObjC_Cpp.is_objc_method osig ->
(* In Objective C, the list of parameters is part of the method name. To prevent the bug
hash to change when a parameter is introduced or removed, only the part of the name

@ -390,6 +390,9 @@ val to_simplified_string : ?withclass:bool -> t -> string
val from_string_c_fun : string -> t
(** Convert a string to a c function name. *)
val replace_java_inner_class_prefix_regex : string -> string
(** Replace "$\[0-9\]+" index into "$_" in Java proc name. *)
val hashable_name : t -> string
(** Convert the procedure name in a format suitable for computing the bug hash. *)

@ -26,7 +26,10 @@ let read_file_config_data fname =
in
List.fold config_list ~init:ConfigProcnameSet.empty
~f:(fun acc {Config_impact_data_t.method_name; class_name} ->
ConfigProcnameSet.add {method_name= cut_objc_parameters method_name; class_name} acc )
ConfigProcnameSet.add
{ method_name= cut_objc_parameters method_name
; class_name= Procname.replace_java_inner_class_prefix_regex class_name }
acc )
let is_in_config_data_file =
@ -37,6 +40,8 @@ let is_in_config_data_file =
fun proc_name ->
let config_item =
{ Config_impact_data_t.method_name= Procname.get_method proc_name |> cut_objc_parameters
; class_name= Procname.get_class_name proc_name |> Option.value ~default:"" }
; class_name=
Procname.get_class_name proc_name
|> Option.value_map ~default:"" ~f:Procname.replace_java_inner_class_prefix_regex }
in
ConfigProcnameSet.mem config_item config_data

Loading…
Cancel
Save