From d8765d1d44e25062cc4d561efd2a4f849658f6f8 Mon Sep 17 00:00:00 2001 From: Dulma Churchill Date: Wed, 13 Sep 2017 09:24:15 -0700 Subject: [PATCH] [linters] Include only base name of ObjC methods in the linters bug hash Reviewed By: ddino Differential Revision: D5815441 fbshipit-source-id: 059ff8d --- infer/src/clang/CProcname.ml | 27 +++++++++--- infer/src/clang/CProcname.mli | 7 ++++ infer/src/clang/cFrontend_errors.ml | 41 ++++++++----------- .../codetoanalyze/objc/ioslints/issues.exp | 14 +++---- .../objc/linters-for-test-only/issues.exp | 38 ++++++++--------- .../codetoanalyze/objc/linters/issues.exp | 2 +- .../objcpp/linters-for-test-only/issues.exp | 24 +++++------ .../codetoanalyze/objcpp/linters/issues.exp | 14 +++---- 8 files changed, 92 insertions(+), 75 deletions(-) diff --git a/infer/src/clang/CProcname.ml b/infer/src/clang/CProcname.ml index a57bc8580..4027552a4 100644 --- a/infer/src/clang/CProcname.ml +++ b/infer/src/clang/CProcname.ml @@ -176,6 +176,12 @@ module NoAstDecl = struct mk_objc_method class_name method_name method_kind end +let objc_method_procname ?tenv decl_info method_name mdi = + let class_typename = get_class_typename ?tenv decl_info in + let is_instance = mdi.Clang_ast_t.omdi_is_instance_method in + let method_kind = Typ.Procname.objc_method_kind_of_bool is_instance in + mk_objc_method class_typename method_name method_kind + let from_decl translation_unit_context ?tenv meth_decl = let open Clang_ast_t in match meth_decl with @@ -192,11 +198,7 @@ let from_decl translation_unit_context ?tenv meth_decl = let class_typename = get_class_typename ?tenv decl_info in mk_cpp_method ?tenv class_typename method_name ~meth_decl mangled | ObjCMethodDecl (decl_info, name_info, mdi) - -> let class_typename = get_class_typename ?tenv decl_info in - let method_name = name_info.Clang_ast_t.ni_name in - let is_instance = mdi.Clang_ast_t.omdi_is_instance_method in - let method_kind = Typ.Procname.objc_method_kind_of_bool is_instance in - mk_objc_method class_typename method_name method_kind + -> objc_method_procname ?tenv decl_info name_info.Clang_ast_t.ni_name mdi | BlockDecl _ -> let name = Config.anonymous_block_prefix ^ Config.anonymous_block_num_sep @@ -206,3 +208,18 @@ let from_decl translation_unit_context ?tenv meth_decl = | _ -> Logging.die InternalError "Expected method decl, but got %s." (Clang_ast_proj.get_decl_kind_string meth_decl) + +let from_decl_for_linters translation_unit_context method_decl = + let open Clang_ast_t in + match method_decl with + | ObjCMethodDecl (decl_info, name_info, mdi) + -> let method_name = + match String.split ~on:':' name_info.Clang_ast_t.ni_name with + | hd :: _ + -> hd + | _ + -> name_info.Clang_ast_t.ni_name + in + objc_method_procname decl_info method_name mdi + | _ + -> from_decl translation_unit_context method_decl diff --git a/infer/src/clang/CProcname.mli b/infer/src/clang/CProcname.mli index 10d55b00a..f1f41304d 100644 --- a/infer/src/clang/CProcname.mli +++ b/infer/src/clang/CProcname.mli @@ -14,6 +14,13 @@ val from_decl : (** Given decl, return its procname. This function should be used for all procedures present in original AST *) +val from_decl_for_linters : + CFrontend_config.translation_unit_context -> Clang_ast_t.decl -> Typ.Procname.t +(** This is used for bug hashing for linters. In ObjC the method names contain the parameter names, + thus if people add new parameters, any bug about the method will be considered different which means + reporting on unchanged code. So, in the ObjC method case, we create the method name only based on the + first part of the name without the parameters *) + (** WARNING: functions from this module should not be used if full decl is available in AST *) module NoAstDecl : sig val c_function_of_string : diff --git a/infer/src/clang/cFrontend_errors.ml b/infer/src/clang/cFrontend_errors.ml index 07e3e212b..f2b21854a 100644 --- a/infer/src/clang/cFrontend_errors.ml +++ b/infer/src/clang/cFrontend_errors.ml @@ -276,7 +276,6 @@ let rec apply_substitution f sub = | ET (ntl, sw, f1) -> ET (sub_list_param ntl, sw, apply_substitution f1 sub) - let expand_formula phi _map _error_msg = let fail_with_circular_macro_definition name error_msg = L.(die ExternalError) "Macro '%s' has a circular definition.@\n Cycle:@\n%s" name error_msg @@ -415,15 +414,15 @@ let get_err_log translation_unit_context method_decl_opt = let procname = match method_decl_opt with | Some method_decl - -> CProcname.from_decl translation_unit_context method_decl + -> CProcname.from_decl_for_linters translation_unit_context method_decl | None -> Typ.Procname.Linters_dummy_method in LintIssues.get_err_log procname (** Add a frontend warning with a description desc at location loc to the errlog of a proc desc *) -let log_frontend_issue translation_unit_context method_decl_opt key (issue_desc: CIssue.issue_desc) - linters_def_file = +let log_frontend_issue translation_unit_context method_decl_opt (node: Ctl_parser_types.ast_node) + (issue_desc: CIssue.issue_desc) linters_def_file = let errlog = get_err_log translation_unit_context method_decl_opt in let err_desc = Errdesc.explain_frontend_warning issue_desc.description issue_desc.suggestion issue_desc.loc @@ -431,32 +430,33 @@ let log_frontend_issue translation_unit_context method_decl_opt key (issue_desc: let exn = Exceptions.Frontend_warning ((issue_desc.id, issue_desc.name), err_desc, __POS__) in let trace = [Errlog.make_trace_element 0 issue_desc.loc "" []] in let err_kind = issue_desc.severity in - let key = Hashtbl.hash key in + let key_str = + match node with + | Decl dec + -> CAst_utils.generate_key_decl dec + | Stmt st + -> CAst_utils.generate_key_stmt st + in + let key = Hashtbl.hash key_str in Reporting.log_issue_from_errlog err_kind errlog exn ~loc:issue_desc.loc ~ltr:trace ~node_id:(0, key) ?linters_def_file ?doc_url:issue_desc.doc_url -let fill_issue_desc_info_and_log context an key issue_desc linters_def_file loc = +let fill_issue_desc_info_and_log context an issue_desc linters_def_file loc = let desc = remove_new_lines (expand_message_string context issue_desc.CIssue.description an) in let issue_desc' = {issue_desc with CIssue.description= desc; CIssue.loc= loc} in log_frontend_issue context.CLintersContext.translation_unit_context - context.CLintersContext.current_method key issue_desc' linters_def_file + context.CLintersContext.current_method an issue_desc' linters_def_file (* Calls the set of hard coded checkers (if any) *) let invoke_set_of_hard_coded_checkers_an context (an: Ctl_parser_types.ast_node) = - let checkers, key = - match an with - | Decl dec - -> (decl_checkers_list, CAst_utils.generate_key_decl dec) - | Stmt st - -> (stmt_checkers_list, CAst_utils.generate_key_stmt st) - in + let checkers = match an with Decl _ -> decl_checkers_list | Stmt _ -> stmt_checkers_list in List.iter ~f:(fun checker -> let issue_desc_list = checker context an in List.iter ~f:(fun issue_desc -> if CIssue.should_run_check issue_desc.CIssue.mode then - fill_issue_desc_info_and_log context an key issue_desc None issue_desc.CIssue.loc) + fill_issue_desc_info_and_log context an issue_desc None issue_desc.CIssue.loc) issue_desc_list) checkers @@ -469,15 +469,8 @@ let invoke_set_of_parsed_checkers_an parsed_linters context (an: Ctl_parser_type | None -> () | Some witness - -> let key = - match witness with - | Decl dec - -> CAst_utils.generate_key_decl dec - | Stmt st - -> CAst_utils.generate_key_stmt st - in - let loc = CFrontend_checkers.location_from_an context witness in - fill_issue_desc_info_and_log context witness key linter.issue_desc linter.def_file loc) + -> let loc = CFrontend_checkers.location_from_an context witness in + fill_issue_desc_info_and_log context witness linter.issue_desc linter.def_file loc) parsed_linters (* We decouple the hardcoded checkers from the parsed ones *) diff --git a/infer/tests/codetoanalyze/objc/ioslints/issues.exp b/infer/tests/codetoanalyze/objc/ioslints/issues.exp index e8f0bfd45..3f0b5b00a 100644 --- a/infer/tests/codetoanalyze/objc/ioslints/issues.exp +++ b/infer/tests/codetoanalyze/objc/ioslints/issues.exp @@ -1,11 +1,11 @@ codetoanalyze/objc/ioslints/unavailable_api_allowed_cases.m, Unavailable_api_allowed_cases_m2, 136, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] -codetoanalyze/objc/ioslints/unavailable_api_allowed_cases.m, Unavailable_api_allowed_cases_m3:, 144, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] -codetoanalyze/objc/ioslints/unavailable_api_allowed_cases.m, Unavailable_api_allowed_cases_uifont_without_respondstoselector:, 118, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] -codetoanalyze/objc/ioslints/unavailable_api_allowed_cases.m, Unavailable_api_allowed_cases_with_responds_to_selector_in_else:, 71, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] +codetoanalyze/objc/ioslints/unavailable_api_allowed_cases.m, Unavailable_api_allowed_cases_m3, 144, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] +codetoanalyze/objc/ioslints/unavailable_api_allowed_cases.m, Unavailable_api_allowed_cases_uifont_without_respondstoselector, 118, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] +codetoanalyze/objc/ioslints/unavailable_api_allowed_cases.m, Unavailable_api_allowed_cases_with_responds_to_selector_in_else, 71, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] codetoanalyze/objc/ioslints/unavailable_api_allowed_cases.m, Unavailable_api_allowed_cases_without_instances_responds_to_selector, 95, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] -codetoanalyze/objc/ioslints/unavailable_api_allowed_cases.m, Unavailable_api_allowed_cases_without_responds_to_selector:, 64, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] +codetoanalyze/objc/ioslints/unavailable_api_allowed_cases.m, Unavailable_api_allowed_cases_without_responds_to_selector, 64, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] codetoanalyze/objc/ioslints/unavailable_api_in_supported_ios_sdk.m, OpenURLOptionsFromSourceApplication, 68, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] -codetoanalyze/objc/ioslints/unavailable_api_in_supported_ios_sdk.m, Unavailable_api_in_supported_ios_sdk_test:and:, 28, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] +codetoanalyze/objc/ioslints/unavailable_api_in_supported_ios_sdk.m, Unavailable_api_in_supported_ios_sdk_test, 28, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] codetoanalyze/objc/ioslints/unavailable_api_in_supported_ios_sdk.m, Unavailable_api_in_supported_ios_sdk_unsupported_class, 34, UNAVAILABLE_CLASS_IN_SUPPORTED_IOS_SDK, [] -codetoanalyze/objc/ioslints/unavailable_api_in_supported_ios_sdk.m, Unavailable_api_in_supported_ios_sdk_unsupported_class_with_attributes:, 53, UNAVAILABLE_CLASS_IN_SUPPORTED_IOS_SDK, [] -codetoanalyze/objc/ioslints/unavailable_property_ios.m, FNFPlayerLayer_initWithConfigs:, 22, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] +codetoanalyze/objc/ioslints/unavailable_api_in_supported_ios_sdk.m, Unavailable_api_in_supported_ios_sdk_unsupported_class_with_attributes, 53, UNAVAILABLE_CLASS_IN_SUPPORTED_IOS_SDK, [] +codetoanalyze/objc/ioslints/unavailable_property_ios.m, FNFPlayerLayer_initWithConfigs, 22, UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK, [] diff --git a/infer/tests/codetoanalyze/objc/linters-for-test-only/issues.exp b/infer/tests/codetoanalyze/objc/linters-for-test-only/issues.exp index 184a916d7..7b4475d02 100644 --- a/infer/tests/codetoanalyze/objc/linters-for-test-only/issues.exp +++ b/infer/tests/codetoanalyze/objc/linters-for-test-only/issues.exp @@ -26,25 +26,25 @@ codetoanalyze/objc/linters-for-test-only/implicit_cast.c, main, 11, TEST_IMPLICI codetoanalyze/objc/linters-for-test-only/implicit_cast.c, main, 11, TEST_VAR_TYPE_CHECK, [] codetoanalyze/objc/linters-for-test-only/namespace.mm, Linters_dummy_method, 9, TEST_DEFINE_NAMESPACE, [] codetoanalyze/objc/linters-for-test-only/namespace.mm, Linters_dummy_method, 17, TEST_USING_NAMESPACE, [] -codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithA:, 24, TEST_INSTANCE_TYPE, [] -codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithA:, 24, TEST_PROTOCOL_TYPE_INHERITANCE, [] -codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithB:, 25, TEST_INSTANCE_TYPE, [] -codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithB:, 25, TEST_PROTOCOL_TYPE_INHERITANCE, [] -codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithC:, 26, TEST_INSTANCE_TYPE, [] -codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithC:, 26, TEST_PROTOCOL_TYPE_INHERITANCE, [] -codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithCs:, 27, TEST_GENERICS_TYPE, [] -codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithCs:, 27, TEST_INSTANCE_TYPE, [] -codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithCs:, 27, TEST_PROTOCOL_TYPE_INHERITANCE, [] -codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithD:, 28, TEST_BUILTIN_TYPE, [] +codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithA, 24, TEST_INSTANCE_TYPE, [] +codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithA, 24, TEST_PROTOCOL_TYPE_INHERITANCE, [] +codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithB, 25, TEST_INSTANCE_TYPE, [] +codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithB, 25, TEST_PROTOCOL_TYPE_INHERITANCE, [] +codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithC, 26, TEST_INSTANCE_TYPE, [] +codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithC, 26, TEST_PROTOCOL_TYPE_INHERITANCE, [] +codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithCs, 27, TEST_GENERICS_TYPE, [] +codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithCs, 27, TEST_INSTANCE_TYPE, [] +codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithCs, 27, TEST_PROTOCOL_TYPE_INHERITANCE, [] +codetoanalyze/objc/linters-for-test-only/protocols.m, Foo_newWithD, 28, TEST_BUILTIN_TYPE, [] codetoanalyze/objc/linters-for-test-only/protocols.m, Linters_dummy_method, 11, TEST_PROTOCOL_DEF_INHERITANCE, [] codetoanalyze/objc/linters-for-test-only/protocols.m, Linters_dummy_method, 14, TEST_PROTOCOL_DEF_INHERITANCE, [] codetoanalyze/objc/linters-for-test-only/protocols.m, Linters_dummy_method, 17, TEST_PROTOCOL_DEF_INHERITANCE, [] -codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo:, 13, TEST_BUILTIN_TYPE, [] -codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo:, 13, TEST_PARAM_TYPE_CHECK2, [] -codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo:, 13, TEST_RETURN_METHOD, [] -codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo:, 19, TEST_BUILTIN_TYPE, [] -codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo:, 19, TEST_PARAM_TYPE_CHECK2, [] -codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo:, 19, TEST_RETURN_METHOD, [] +codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo, 13, TEST_BUILTIN_TYPE, [] +codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo, 13, TEST_PARAM_TYPE_CHECK2, [] +codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo, 13, TEST_RETURN_METHOD, [] +codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo, 19, TEST_BUILTIN_TYPE, [] +codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo, 19, TEST_PARAM_TYPE_CHECK2, [] +codetoanalyze/objc/linters-for-test-only/subclassing.m, A_foo, 19, TEST_RETURN_METHOD, [] codetoanalyze/objc/linters-for-test-only/subclassing.m, B_bar, 28, TEST_BUILTIN_TYPE, [] codetoanalyze/objc/linters-for-test-only/subclassing.m, B_bar, 28, TEST_RETURN_METHOD, [] codetoanalyze/objc/linters-for-test-only/subclassing.m, B_bar, 34, TEST_BUILTIN_TYPE, [] @@ -90,9 +90,9 @@ codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m23, 99, TEST_B codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m24, 100, TEST_BUILTIN_TYPE, [] codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m25, 101, TEST_BUILTIN_TYPE, [] codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m26, 102, TEST_BUILTIN_TYPE, [] -codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m26:pname2:pname3:pname4:, 103, TEST_BUILTIN_TYPE, [] -codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m26:pname2:pname3:pname4:, 103, TEST_NTH_PARAM_TYPE_CHECK, [] -codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m26:pname2:pname3:pname4:, 105, TEST_PARAM_TYPE_CHECK, [] +codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m26, 103, TEST_BUILTIN_TYPE, [] +codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m26, 103, TEST_NTH_PARAM_TYPE_CHECK, [] +codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m26, 105, TEST_PARAM_TYPE_CHECK, [] codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m3, 75, TEST_BUILTIN_TYPE, [] codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m4, 76, TEST_BUILTIN_TYPE, [] codetoanalyze/objc/linters-for-test-only/subclassing.m, TestType_m7, 79, TEST_BUILTIN_TYPE, [] diff --git a/infer/tests/codetoanalyze/objc/linters/issues.exp b/infer/tests/codetoanalyze/objc/linters/issues.exp index 05d4aaa1a..30f0327e0 100644 --- a/infer/tests/codetoanalyze/objc/linters/issues.exp +++ b/infer/tests/codetoanalyze/objc/linters/issues.exp @@ -9,7 +9,7 @@ codetoanalyze/objc/linters/atomic_prop.m, A_readP, 77, POINTER_TO_INTEGRAL_IMPLI codetoanalyze/objc/linters/atomic_prop.m, A_readP, 78, POINTER_TO_INTEGRAL_IMPLICIT_CAST, [] codetoanalyze/objc/linters/atomic_prop.m, A_readQ, 86, DIRECT_ATOMIC_PROPERTY_ACCESS, [] codetoanalyze/objc/linters/atomic_prop.m, A_readQ, 86, POINTER_TO_INTEGRAL_IMPLICIT_CAST, [] -codetoanalyze/objc/linters/atomic_prop.m, A_writeQ:, 82, DIRECT_ATOMIC_PROPERTY_ACCESS, [] +codetoanalyze/objc/linters/atomic_prop.m, A_writeQ, 82, DIRECT_ATOMIC_PROPERTY_ACCESS, [] codetoanalyze/objc/linters/atomic_prop.m, __objc_anonymous_block_______1, 114, DIRECT_ATOMIC_PROPERTY_ACCESS, [] codetoanalyze/objc/linters/badpointer.m, bad1, 17, BAD_POINTER_COMPARISON, [] codetoanalyze/objc/linters/badpointer.m, bad10, 139, BAD_POINTER_COMPARISON, [] diff --git a/infer/tests/codetoanalyze/objcpp/linters-for-test-only/issues.exp b/infer/tests/codetoanalyze/objcpp/linters-for-test-only/issues.exp index 67fbc0d75..4e4603c1f 100644 --- a/infer/tests/codetoanalyze/objcpp/linters-for-test-only/issues.exp +++ b/infer/tests/codetoanalyze/objcpp/linters-for-test-only/issues.exp @@ -1,15 +1,15 @@ -codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithAction:, 27, TEST_REFERENCE, [] -codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithAction:, 44, TEST_REFERENCE, [] -codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithActionRef:, 24, TEST_REFERENCE, [] -codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithActionRef:, 40, TEST_REFERENCE, [] -codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithConstAction:, 21, TEST_REFERENCE, [] -codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithConstAction:, 36, TEST_REFERENCE, [] -codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed1_newImage:, 12, NEW_COMPONENT_USING_MEM_MODEL, [] -codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed1_newImage:, 27, NEW_COMPONENT_USING_MEM_MODEL, [] -codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed1_newMultiParams:image:query:, 20, NEW_COMPONENT_USING_MEM_MODEL, [] -codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed1_newMultiParams:image:query:, 44, NEW_COMPONENT_USING_MEM_MODEL, [] -codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed2_newQuery:, 52, NEW_COMPONENT_USING_MEM_MODEL, [] -codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed2_newQuery:, 58, NEW_COMPONENT_USING_MEM_MODEL, [] +codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithAction, 27, TEST_REFERENCE, [] +codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithAction, 44, TEST_REFERENCE, [] +codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithActionRef, 24, TEST_REFERENCE, [] +codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithActionRef, 40, TEST_REFERENCE, [] +codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithConstAction, 21, TEST_REFERENCE, [] +codetoanalyze/objcpp/linters-for-test-only/ReferenceTest.mm, ReferenceTest_newWithConstAction, 36, TEST_REFERENCE, [] +codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed1_newImage, 12, NEW_COMPONENT_USING_MEM_MODEL, [] +codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed1_newImage, 27, NEW_COMPONENT_USING_MEM_MODEL, [] +codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed1_newMultiParams, 20, NEW_COMPONENT_USING_MEM_MODEL, [] +codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed1_newMultiParams, 44, NEW_COMPONENT_USING_MEM_MODEL, [] +codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed2_newQuery, 52, NEW_COMPONENT_USING_MEM_MODEL, [] +codetoanalyze/objcpp/linters-for-test-only/TestParameterMemModels.mm, FBMemModelUsed2_newQuery, 58, NEW_COMPONENT_USING_MEM_MODEL, [] codetoanalyze/objcpp/linters-for-test-only/TestParamterLabelsChecks.mm, anotherButtonComponent, 41, PARAMETER_TRANS_TYPE, [] codetoanalyze/objcpp/linters-for-test-only/TestParamterLabelsChecks.mm, anotherButtonComponent, 41, TEST_PARAMETER_LABEL, [] codetoanalyze/objcpp/linters-for-test-only/TestParamterLabelsChecks.mm, anotherButtonComponent, 41, TEST_PARAMETER_LABEL_REGEXP, [] diff --git a/infer/tests/codetoanalyze/objcpp/linters/issues.exp b/infer/tests/codetoanalyze/objcpp/linters/issues.exp index 67ef07ca1..a5673d114 100644 --- a/infer/tests/codetoanalyze/objcpp/linters/issues.exp +++ b/infer/tests/codetoanalyze/objcpp/linters/issues.exp @@ -16,15 +16,15 @@ codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, BarCompo codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, BarComponent_new, 92, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, BarComponent_new, 111, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, BarComponent_new, 117, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] -codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, FooComponent_newWithString:, 52, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] -codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, FooComponent_newWithString:, 57, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] -codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, FooComponent_newWithString:, 60, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] -codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, FooComponent_newWithString:, 64, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] -codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, FooComponent_newWithString:, 69, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] +codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, FooComponent_newWithString, 52, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] +codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, FooComponent_newWithString, 57, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] +codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, FooComponent_newWithString, 60, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] +codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, FooComponent_newWithString, 64, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] +codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, FooComponent_newWithString, 69, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] codetoanalyze/objcpp/linters/componentkit/MutableLocalVariablesTest.mm, SomeClass_init, 40, MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE, [] codetoanalyze/objcpp/linters/componentkit/UnconventionalSuperclassTest.h, Linters_dummy_method, 17, COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS, [] -codetoanalyze/objcpp/linters/cxx_reference_in_block/block.mm, A_foo3:param2:, 37, CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK, [] -codetoanalyze/objcpp/linters/cxx_reference_in_block/block.mm, A_foo:, 20, CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK, [] +codetoanalyze/objcpp/linters/cxx_reference_in_block/block.mm, A_foo, 20, CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK, [] +codetoanalyze/objcpp/linters/cxx_reference_in_block/block.mm, A_foo3, 37, CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK, [] codetoanalyze/objcpp/linters/global-var/B.mm, Linters_dummy_method, 30, GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL, [] codetoanalyze/objcpp/linters/global-var/B.mm, Linters_dummy_method, 32, GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL, [] codetoanalyze/objcpp/linters/global-var/B.mm, Linters_dummy_method, 34, GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL, []