diff --git a/infer/lib/linter_rules/linters.al b/infer/lib/linter_rules/linters.al index 91dacbbfc..ce29fa3aa 100644 --- a/infer/lib/linter_rules/linters.al +++ b/infer/lib/linter_rules/linters.al @@ -221,8 +221,8 @@ DEFINE-CHECKER CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK = { SET report_when = WHEN ((class_unavailable_in_supported_ios_sdk()) AND NOT within_available_class_block() AND - (call_class_method(REGEXP(".*"), "alloc") OR - call_class_method(REGEXP(".*"), "new"))) + (call_class_method("alloc") OR + call_class_method("new"))) HOLDS-IN-NODE ObjCMessageExpr; SET message = diff --git a/infer/src/clang/cAst_utils.mli b/infer/src/clang/cAst_utils.mli index c6f121244..ee39525af 100644 --- a/infer/src/clang/cAst_utils.mli +++ b/infer/src/clang/cAst_utils.mli @@ -62,6 +62,8 @@ val get_decl_from_typ_ptr : Clang_ast_t.type_ptr -> Clang_ast_t.decl option val name_of_typedef_type_info : Clang_ast_t.typedef_type_info -> QualifiedCppName.t +val name_opt_of_typedef_qual_type : Clang_ast_t.qual_type -> QualifiedCppName.t option + val string_of_qual_type : Clang_ast_t.qual_type -> string type qual_type_to_sil_type = Tenv.t -> Clang_ast_t.qual_type -> Typ.t diff --git a/infer/src/clang/cPredicates.ml b/infer/src/clang/cPredicates.ml index e5cf5c3b9..527798d15 100644 --- a/infer/src/clang/cPredicates.ml +++ b/infer/src/clang/cPredicates.ml @@ -381,24 +381,70 @@ let is_objc_method_exposed context an = false -(* checks whether an object is of a certain class *) -let is_object_of_class_named receiver cname = - let open Clang_ast_t in - match receiver with - | PseudoObjectExpr (_, _, ei) | ImplicitCastExpr (_, _, ei, _) | ParenExpr (_, _, ei) -> ( - match CAst_utils.qual_type_to_objc_interface ei.ei_qual_type with - | Some interface -> - is_objc_interface_named (Ctl_parser_types.Decl interface) cname - | _ -> - false ) +let get_selector an = + match an with + | Ctl_parser_types.Stmt (Clang_ast_t.ObjCMessageExpr (_, _, _, omei)) -> + Some omei.omei_selector + | _ -> + None + + +let receiver_objc_type_name an = + match an with + | Ctl_parser_types.Stmt (ObjCMessageExpr (_, receiver :: _, _, {omei_receiver_kind= `Instance})) -> + Clang_ast_proj.get_expr_tuple receiver + |> Option.bind ~f:(fun (_, _, expr_info) -> + CAst_utils.name_opt_of_typedef_qual_type expr_info.Clang_ast_t.ei_qual_type ) + |> Option.map ~f:QualifiedCppName.to_qual_string | _ -> + None + + +let is_receiver_objc_class_type an = + match receiver_objc_type_name an with + | Some type_name -> + String.equal type_name "Class" + | None -> false -let get_selector an = +let is_receiver_objc_id_type an = + match receiver_objc_type_name an with + | Some type_name -> + String.equal type_name "id" + | None -> + false + + +let objc_message_receiver context an = match an with - | Ctl_parser_types.Stmt (Clang_ast_t.ObjCMessageExpr (_, _, _, omei)) -> - Some omei.omei_selector + | Ctl_parser_types.Stmt (ObjCMessageExpr (_, args, _, omei)) -> ( + match omei.omei_receiver_kind with + | `SuperClass | `SuperInstance -> ( + match current_objc_container context with + | Some container -> + let decl_ref_opt = CAst_utils.get_superclass_curr_class_objc_from_decl container in + CAst_utils.get_decl_opt_with_decl_ref decl_ref_opt + | _ -> + None ) + | `Class qt -> + CAst_utils.get_decl_from_typ_ptr qt.qt_type_ptr + | `Instance -> + match args with + | receiver :: _ -> ( + match receiver with + | ObjCMessageExpr (_, _, _, sub_omei) -> ( + match CAst_utils.get_decl_opt sub_omei.omei_decl_pointer with + | Some (ObjCMethodDecl (_, _, omdi)) -> + CAst_utils.qual_type_to_objc_interface omdi.omdi_result_type + | _ -> + None ) + | PseudoObjectExpr (_, _, ei) | ImplicitCastExpr (_, _, ei, _) | ParenExpr (_, _, ei) -> + CAst_utils.qual_type_to_objc_interface ei.ei_qual_type + | _ -> + None ) + | [] -> + None ) | _ -> None @@ -412,39 +458,38 @@ let call_method an m = false -let is_receiver_kind_class omei cname = - let open Clang_ast_t in - match omei.omei_receiver_kind with - | `Class ptr -> ( - match CAst_utils.get_desugared_type ptr.Clang_ast_t.qt_type_ptr with - | Some (ObjCInterfaceType (_, ptr)) -> ( - match CAst_utils.get_decl ptr with - | Some (ObjCInterfaceDecl (_, ndi, _, _, _)) -> - ALVar.compare_str_with_alexp ndi.ni_name cname - | _ -> - false ) +let call_class_method an mname = + match an with + | Ctl_parser_types.Stmt (Clang_ast_t.ObjCMessageExpr (_, _, _, omei)) -> ( + match omei.omei_receiver_kind with + | `SuperClass | `Class _ -> + ALVar.compare_str_with_alexp omei.omei_selector mname + | `Instance -> + (* The ObjC class type, 'Class', is treated as an instance receiver kind. + We need to check if the receiver is the class type to catch cases like + [[self class] myClassMethod] *) + ALVar.compare_str_with_alexp omei.omei_selector mname && is_receiver_objc_class_type an | _ -> false ) | _ -> false -let call_class_method an cname mname = - match an with - | Ctl_parser_types.Stmt (Clang_ast_t.ObjCMessageExpr (_, _, _, omei)) -> - is_receiver_kind_class omei cname && ALVar.compare_str_with_alexp omei.omei_selector mname - | _ -> - false - - -(* an is a node calling method whose name contains mname of a - class whose name contains cname. -*) -let call_instance_method an cname mname = +(* an is a node calling method whose name contains mname of a class. *) +let call_instance_method an mname = match an with - | Ctl_parser_types.Stmt (Clang_ast_t.ObjCMessageExpr (_, receiver :: _, _, omei)) -> - is_object_of_class_named receiver cname - && ALVar.compare_str_with_alexp omei.omei_selector mname + | Ctl_parser_types.Stmt (Clang_ast_t.ObjCMessageExpr (_, _, _, omei)) -> ( + match omei.omei_receiver_kind with + | `SuperInstance -> + ALVar.compare_str_with_alexp omei.omei_selector mname + | `Instance -> + (* The ObjC class type, 'Class', is treated as an instance receiver kind. + We need to verify the receiver is not the class type to avoid cases like + [[self class] myClassMethod] *) + ALVar.compare_str_with_alexp omei.omei_selector mname + && not (is_receiver_objc_class_type an) + | _ -> + false ) | _ -> false @@ -807,6 +852,31 @@ let is_in_objc_protocol_named context name = false +let is_receiver_subclass_of context an cname = + match objc_message_receiver context an with + | Some receiver -> + is_subclass_of receiver cname + | _ -> + false + + +let is_receiver_class_named context an cname = + match objc_message_receiver context an with + | Some receiver -> + declaration_has_name (Decl receiver) cname + | _ -> + false + + +let is_receiver_super an = + match an with + | Ctl_parser_types.Stmt + (ObjCMessageExpr (_, _, _, {omei_receiver_kind= `SuperClass | `SuperInstance})) -> + true + | _ -> + false + + let captures_cxx_references an = List.length (captured_variables_cxx_ref an) > 0 let is_binop_with_kind an alexp_kind = @@ -891,7 +961,6 @@ let isa an classname = let is_class an re = is_objc_class_named an re - (* an is an expression @selector with whose name in the language of re *) let is_at_selector_with_name an re = match an with diff --git a/infer/src/clang/cPredicates.mli b/infer/src/clang/cPredicates.mli index 7a8d90c94..be9fcd490 100644 --- a/infer/src/clang/cPredicates.mli +++ b/infer/src/clang/cPredicates.mli @@ -19,14 +19,13 @@ val captured_variables_cxx_ref : Ctl_parser_types.ast_node -> Clang_ast_t.named_ val call_method : Ctl_parser_types.ast_node -> ALVar.alexp -> bool (** 'call_method an m an' is true iff node an is a call to an ObjC method with name containing string m *) -val call_class_method : Ctl_parser_types.ast_node -> ALVar.alexp -> ALVar.alexp -> bool -(** 'call_class_method an cname mname' is true iff node an is a call to an ObjC method of class cname -and the name of the method contains mname *) +val call_class_method : Ctl_parser_types.ast_node -> ALVar.alexp -> bool +(** 'call_class_method an mname' is true iff node an is a call to an ObjC + class method with name containing mname *) -val call_instance_method : Ctl_parser_types.ast_node -> ALVar.alexp -> ALVar.alexp -> bool -(** 'call_instance_method an cname mname' is true iff an is a node calling an ObjC method of an - object of class cname and the method name contains mname -*) +val call_instance_method : Ctl_parser_types.ast_node -> ALVar.alexp -> bool +(** 'call_instance_method an mname' is true iff node an is a call to an ObjC + instance method with name containing mname *) val declaration_name : Clang_ast_t.decl -> string option (** 'declaration_name d' returns the name of declaration d *) @@ -402,6 +401,40 @@ val receiver_class_method_call : Ctl_parser_types.ast_node -> Clang_ast_t.decl o val receiver_method_call : Ctl_parser_types.ast_node -> Clang_ast_t.decl option +val is_receiver_objc_class_type : Ctl_parser_types.ast_node -> bool +(** + * Checks if the current node is an ObjCMessageExpr node and has a + * receiver equivalent to the 'Class' type. + *) + +val is_receiver_objc_id_type : Ctl_parser_types.ast_node -> bool +(** + * Checks if the current node is an ObjCMessageExpr node and has a + * receiver equivalent to the 'id' type. + *) + +val is_receiver_subclass_of : + CLintersContext.context -> Ctl_parser_types.ast_node -> ALVar.alexp -> bool +(** + * Checks if the current node is an ObjCMessageExpr node and has a receiver + * which inherits from a class whose name matches the provided REGEXP. + *) + +val is_receiver_class_named : + CLintersContext.context -> Ctl_parser_types.ast_node -> ALVar.alexp -> bool +(** + * Checks if the current node is an ObjCMessageExpr node and has a + * receiver whose class name matches the provided REGEXP. + *) + +val is_receiver_super : Ctl_parser_types.ast_node -> bool +(** + * Checks if the current node is an ObjCMessageExpr node and has a + * receiver which is equal to 'super'. + * + * Matches on [super myMethod]; + *) + val is_at_selector_with_name : Ctl_parser_types.ast_node -> ALVar.alexp -> bool (** an is an expression @selector with whose name in the language of re *) diff --git a/infer/src/clang/cTL.ml b/infer/src/clang/cTL.ml index e6d172ec5..0cfc8a2a6 100644 --- a/infer/src/clang/cTL.ml +++ b/infer/src/clang/cTL.ml @@ -962,12 +962,12 @@ let choose_witness_opt witness_opt1 witness_opt2 = let rec eval_Atomic pred_name_ args an lcxt = let pred_name = ALVar.formula_id_to_string pred_name_ in match (pred_name, args, an) with - | "call_class_method", [c; m], an -> - CPredicates.call_class_method an c m + | "call_class_method", [m], an -> + CPredicates.call_class_method an m | "call_function", [m], an -> CPredicates.call_function an m - | "call_instance_method", [c; m], an -> - CPredicates.call_instance_method an c m + | "call_instance_method", [m], an -> + CPredicates.call_instance_method an m | "call_method", [m], an -> CPredicates.call_method an m | "captures_cxx_references", [], _ -> @@ -1108,6 +1108,16 @@ let rec eval_Atomic pred_name_ args an lcxt = CPredicates.is_unop_with_kind an kind | "is_weak_property", [], an -> CPredicates.is_weak_property an + | "is_receiver_objc_class_type", [], an -> + CPredicates.is_receiver_objc_class_type an + | "is_receiver_objc_id_type", [], an -> + CPredicates.is_receiver_objc_id_type an + | "is_receiver_subclass_of", [name], an -> + CPredicates.is_receiver_subclass_of lcxt an name + | "is_receiver_class_named", [name], an -> + CPredicates.is_receiver_class_named lcxt an name + | "is_receiver_super", [], an -> + CPredicates.is_receiver_super an | "iphoneos_target_sdk_version_greater_or_equal", [version], _ -> CPredicates.iphoneos_target_sdk_version_greater_or_equal lcxt (ALVar.alexp_to_string version) | "method_return_type", [typ], an -> diff --git a/infer/tests/codetoanalyze/objc/linters-for-test-only/GenericTestClass.m b/infer/tests/codetoanalyze/objc/linters-for-test-only/GenericTestClass.m index 390e8ecfa..c423cdbb4 100644 --- a/infer/tests/codetoanalyze/objc/linters-for-test-only/GenericTestClass.m +++ b/infer/tests/codetoanalyze/objc/linters-for-test-only/GenericTestClass.m @@ -15,6 +15,8 @@ @property int myBaseClassProperty; + (void)myBaseClassClassMethod; ++ (void)myBaseClassClassAndInstanceMethod; +- (void)myBaseClassClassAndInstanceMethod; - (void)myBaseClassMethod; @end @@ -30,6 +32,10 @@ + (void)myBaseClassClassMethod { int x = 0; } ++ (void)myBaseClassClassAndInstanceMethod { +} +- (void)myBaseClassClassAndInstanceMethod { +} - (void)myBaseClassMethod { int x = 0; } @@ -45,6 +51,21 @@ - (void)setMyBaseClassProperty:(int)value { } +- (void)myBaseClassTestReceiver { + [self myBaseClassClassAndInstanceMethod]; + [[self class] myBaseClassClassAndInstanceMethod]; + [MyBaseClass myBaseClassClassMethod]; + + [self respondsToSelector:@selector(myBaseClassMethod)]; + [[self class] respondsToSelector:@selector(myBaseClassClassMethod)]; + [MyBaseClass respondsToSelector:@selector(myBaseClassClassMethod)]; + + MyBaseClass* myBaseClass = [MyBaseClass new]; + [(id)myBaseClass myBaseClassProtocolOptionalMethod]; + Class myBaseClassClass = [myBaseClass class]; + [myBaseClassClass myBaseClassClassMethod]; +} + @end @interface MyBaseClass (MyBaseClassCategory) @@ -91,6 +112,10 @@ @implementation MySubclass ++ (void)myBaseClassClassMethod { + [super myBaseClassClassMethod]; +} + - (void)myBaseClassMethod { [super myBaseClassMethod]; } @@ -134,6 +159,20 @@ - (void)mySubclassSubprotocol2OptionalMethod { } +- (void)mySubclassTestReceiver { + [super myBaseClassMethod]; + [self myBaseClassMethod]; + [(MyBaseClass*)self myBaseClassMethod]; + + [[self superclass] myBaseClassClassMethod]; + [[self class] myBaseClassClassMethod]; + [MySubclass myBaseClassClassMethod]; + + MySubclass* mySubclass = [MySubclass new]; + [[mySubclass class] myBaseClassClassMethod]; + [mySubclass mySubclassMethod]; +} + @end @interface MySubclass (MySubclassCategory) diff --git a/infer/tests/codetoanalyze/objc/linters-for-test-only/al_definitions/linters_example.al b/infer/tests/codetoanalyze/objc/linters-for-test-only/al_definitions/linters_example.al index d14549d6a..c0754c51f 100644 --- a/infer/tests/codetoanalyze/objc/linters-for-test-only/al_definitions/linters_example.al +++ b/infer/tests/codetoanalyze/objc/linters-for-test-only/al_definitions/linters_example.al @@ -57,7 +57,7 @@ DEFINE-CHECKER MACRO_TEST1 = { // Test reverse parameter of macro DEFINE-CHECKER MACRO_TEST2 = { - LET my_macro_to_call_method_of_class(x,y) = call_instance_method(y,x); + LET my_macro_to_call_method_of_class(x,y) = call_instance_method(x) AND is_receiver_class_named(y); SET report_when = my_macro_to_call_method_of_class("foo:", "A"); @@ -68,7 +68,7 @@ DEFINE-CHECKER MACRO_TEST2 = { // Test macro call macro DEFINE-CHECKER MACRO_TEST3 = { - LET my_macro_to_call_method_of_class(x,y) = call_instance_method(y,x); + LET my_macro_to_call_method_of_class(x,y) = call_instance_method(x) AND is_receiver_class_named(y); LET call_my_macro(t,v) = my_macro_to_call_method_of_class(t,v); @@ -107,7 +107,7 @@ DEFINE-CHECKER GLOBAL_MACRO_SUBCLASS = { DEFINE-CHECKER TEST_ALL_METHODS = { - SET report_when = call_class_method(REGEXP(".*"), REGEXP(".*")); + SET report_when = call_class_method(REGEXP(".*")); SET message = "Method call..."; @@ -759,3 +759,48 @@ DEFINE-CHECKER TEST_IN_INSTANCE_METHOD = { SET message = "This node is in an instance method named myBaseClassClassMethod."; }; + +DEFINE-CHECKER TEST_IS_RECEIVER_CLASS_TYPE = { + + SET report_when = + is_receiver_objc_class_type; + + SET message = "This node is a method call to 'Class'."; + +}; + +DEFINE-CHECKER TEST_IS_RECEIVER_ID_TYPE = { + + SET report_when = + is_receiver_objc_id_type; + + SET message = "This node is a method call to 'id'."; + +}; + +DEFINE-CHECKER TEST_IS_RECEIVER_SUBCLASS_OF = { + + SET report_when = + is_receiver_subclass_of("MyBaseClass"); + + SET message = "This node is a method call to an object which inherits from 'MyBaseClass'."; + +}; + +DEFINE-CHECKER TEST_IS_RECEIVER_CLASS_NAMED = { + + SET report_when = + is_receiver_class_named("MyBaseClass"); + + SET message = "This node is a method call to an object of class 'MyBaseClass'."; + +}; + +DEFINE-CHECKER TEST_IS_RECEIVER_SUPER = { + + SET report_when = + is_receiver_super(); + + SET message = "This node is a method call to 'super'."; + +}; 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 a02b78e87..e23fb506c 100644 --- a/infer/tests/codetoanalyze/objc/linters-for-test-only/issues.exp +++ b/infer/tests/codetoanalyze/objc/linters-for-test-only/issues.exp @@ -1,5 +1,6 @@ codetoanalyze/objc/linters-for-test-only/CallingAMethodWithSelf.m, CallingAMethodWithSelfBase_testView, 16, TEST_IS_METHOD_EXPOSED, WARNING, [] codetoanalyze/objc/linters-for-test-only/CallingAMethodWithSelf.m, CallingAMethodWithSelfBase_testView, 17, TEST_VAR_TYPE_CHECK, WARNING, [] +codetoanalyze/objc/linters-for-test-only/CallingAMethodWithSelf.m, CallingAMethodWithSelf_methodThatShallBeOkaySuper, 37, TEST_IS_RECEIVER_SUPER, WARNING, [] codetoanalyze/objc/linters-for-test-only/CallingAMethodWithSelf.m, CallingAMethodWithSelf_methodThatShallComplain, 40, TEST_IS_METHOD_EXPOSED, WARNING, [] codetoanalyze/objc/linters-for-test-only/CallingAMethodWithSelf.m, CallingAMethodWithSelf_methodThatShallComplain, 41, TEST_IF_VIEW_METHOD_IS_NOT_CALLED_WITH_SUPER, WARNING, [] codetoanalyze/objc/linters-for-test-only/CallingAMethodWithSelf.m, CallingAMethodWithSelf_testView, 27, TEST_IS_METHOD_EXPOSED, WARNING, [] @@ -9,121 +10,192 @@ codetoanalyze/objc/linters-for-test-only/CallingAMethodWithSelf.m, CallingAMetho codetoanalyze/objc/linters-for-test-only/CallingAMethodWithSelf.m, CallingAMethodWithSelf_testView, 45, TEST_VAR_TYPE_CHECK, WARNING, [] codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 7, TEST_IF_IS_PROTOCOL_NAMED, WARNING, [] codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 14, TEST_IF_IS_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 22, TEST_IF_IS_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 22, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 28, TEST_IF_IS_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 28, TEST_IF_IS_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 50, TEST_IF_IS_CATEGORY_INTERFACE_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 50, TEST_IF_IS_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 50, TEST_IF_IS_CATEGORY_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 50, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 56, TEST_IF_IS_CATEGORY_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 56, TEST_IF_IS_CATEGORY_IMPLEMENTATION_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 56, TEST_IF_IS_CATEGORY_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 56, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 139, TEST_IF_IS_CATEGORY_INTERFACE_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 139, TEST_IF_IS_CATEGORY_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 145, TEST_IF_IS_CATEGORY_IMPLEMENTATION_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 145, TEST_IF_IS_CATEGORY_ON_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 24, TEST_IF_IS_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 24, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 30, TEST_IF_IS_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 30, TEST_IF_IS_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 71, TEST_IF_IS_CATEGORY_INTERFACE_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 71, TEST_IF_IS_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 71, TEST_IF_IS_CATEGORY_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 71, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 77, TEST_IF_IS_CATEGORY_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 77, TEST_IF_IS_CATEGORY_IMPLEMENTATION_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 77, TEST_IF_IS_CATEGORY_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 77, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 178, TEST_IF_IS_CATEGORY_INTERFACE_ON_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 178, TEST_IF_IS_CATEGORY_ON_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 184, TEST_IF_IS_CATEGORY_IMPLEMENTATION_ON_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 184, TEST_IF_IS_CATEGORY_ON_SUBCLASS_OF, WARNING, [] codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClassProtocol_myBaseClassProtocolOptionalMethod, 11, TEST_IF_METHOD_IS_IN_PROTOCOL_NAMED, WARNING, [] codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClassProtocol_myBaseClassProtocolRequiredMethod, 9, TEST_IF_METHOD_IS_IN_PROTOCOL_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 52, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 52, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 52, TEST_IF_METHOD_IS_IN_CATEGORY_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 52, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 58, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENATION_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 58, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 58, TEST_IF_METHOD_IS_IN_CATEGORY_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 58, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 58, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 73, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 73, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 73, TEST_IF_METHOD_IS_IN_CATEGORY_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 73, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 79, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENATION_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 79, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 79, TEST_IF_METHOD_IS_IN_CATEGORY_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 79, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 79, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassAndInstanceMethod, 18, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassAndInstanceMethod, 18, TEST_IF_METHOD_IS_IN_INTERFACE_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassAndInstanceMethod, 19, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassAndInstanceMethod, 19, TEST_IF_METHOD_IS_IN_INTERFACE_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassAndInstanceMethod, 35, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassAndInstanceMethod, 35, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassAndInstanceMethod, 35, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassAndInstanceMethod, 37, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassAndInstanceMethod, 37, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassAndInstanceMethod, 37, TEST_IS_METHOD_EXPOSED, WARNING, [] codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 17, TEST_IF_IS_CLASS_METHOD_NAMED, WARNING, [] codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 17, TEST_IF_IS_METHOD_NAMED, WARNING, [] codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 17, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 17, TEST_IF_METHOD_IS_IN_INTERFACE_NAMED, WARNING, [] codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 17, TEST_IN_CLASS_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IF_IS_CLASS_METHOD_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IF_IS_METHOD_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IN_CLASS_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IN_CLASS_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 31, TEST_IN_CLASS_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 31, TEST_IN_CLASS_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 31, TEST_VAR_TYPE_CHECK, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 24, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 24, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 36, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 36, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 36, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 18, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 18, TEST_IF_METHOD_IS_IN_INTERFACE_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 18, TEST_IN_INSTANCE_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 33, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 33, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 33, TEST_IN_INSTANCE_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 33, TEST_IN_INSTANCE_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 33, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 34, TEST_IN_INSTANCE_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 34, TEST_IN_INSTANCE_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 34, TEST_VAR_TYPE_CHECK, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 42, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 42, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 42, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 42, TEST_RETURN_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 40, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 40, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 40, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 40, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 38, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 38, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 38, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 38, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 45, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 45, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 45, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 45, TEST_PARAM_TYPE_CHECK2, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 118, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 118, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 98, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 98, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 94, TEST_IN_INSTANCE_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 94, TEST_IN_INSTANCE_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 94, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 94, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 95, TEST_IN_INSTANCE_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 110, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 110, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 110, TEST_RETURN_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 106, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 106, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 102, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 102, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 141, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 141, TEST_IF_METHOD_IS_IN_CATEGORY_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 147, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENTATION_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 147, TEST_IF_METHOD_IS_IN_CATEGORY_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 147, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 88, TEST_IF_IS_INSTANCE_METHOD_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 88, TEST_IF_IS_METHOD_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 122, TEST_IF_IS_INSTANCE_METHOD_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 122, TEST_IF_IS_METHOD_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 122, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2OptionalMethod, 130, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2OptionalMethod, 130, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2RequiredMethod, 128, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2RequiredMethod, 128, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolOptionalMethod, 126, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolOptionalMethod, 126, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolRequiredMethod, 124, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolRequiredMethod, 124, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2OptionalMethod, 134, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2OptionalMethod, 134, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2RequiredMethod, 132, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2RequiredMethod, 132, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 114, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 114, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 114, TEST_PARAM_TYPE_CHECK2, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 32, TEST_IF_IS_CLASS_METHOD_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 32, TEST_IF_IS_METHOD_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 32, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 32, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 32, TEST_IN_CLASS_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 32, TEST_IN_CLASS_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 32, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 33, TEST_IN_CLASS_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 33, TEST_IN_CLASS_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 33, TEST_VAR_TYPE_CHECK, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 26, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 26, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 42, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 42, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 42, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 20, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 20, TEST_IF_METHOD_IS_IN_INTERFACE_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 20, TEST_IN_INSTANCE_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 39, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 39, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 39, TEST_IN_INSTANCE_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 39, TEST_IN_INSTANCE_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 39, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 40, TEST_IN_INSTANCE_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 40, TEST_IN_INSTANCE_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 40, TEST_VAR_TYPE_CHECK, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 48, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 48, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 48, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 48, TEST_RETURN_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 46, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 46, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 46, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 46, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 44, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 44, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 44, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 44, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 54, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 54, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 55, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 56, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 56, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 56, TEST_IS_RECEIVER_CLASS_TYPE, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 57, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 57, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 59, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 60, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 60, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 60, TEST_IS_RECEIVER_CLASS_TYPE, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 61, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 61, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 63, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 63, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 64, TEST_IS_RECEIVER_ID_TYPE, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 65, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 66, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassTestReceiver, 66, TEST_IS_RECEIVER_CLASS_TYPE, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 51, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 51, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 51, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 51, TEST_PARAM_TYPE_CHECK2, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 143, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 143, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 144, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 144, TEST_IS_RECEIVER_SUPER, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassClassMethod, 115, TEST_IF_IS_CLASS_METHOD_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassClassMethod, 115, TEST_IF_IS_METHOD_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassClassMethod, 115, TEST_IN_CLASS_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassClassMethod, 115, TEST_IN_CLASS_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassClassMethod, 115, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassClassMethod, 115, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassClassMethod, 116, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassClassMethod, 116, TEST_IN_CLASS_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassClassMethod, 116, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassClassMethod, 116, TEST_IS_RECEIVER_SUPER, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 123, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 123, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 124, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 124, TEST_IS_RECEIVER_SUPER, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 119, TEST_IN_INSTANCE_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 119, TEST_IN_INSTANCE_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 119, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 119, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 120, TEST_IN_INSTANCE_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 120, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 120, TEST_IS_RECEIVER_SUPER, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 135, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 135, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 135, TEST_RETURN_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 136, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 136, TEST_IS_RECEIVER_SUPER, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 131, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 131, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 132, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 132, TEST_IS_RECEIVER_SUPER, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 127, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 127, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 128, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 128, TEST_IS_RECEIVER_SUPER, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 180, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 180, TEST_IF_METHOD_IS_IN_CATEGORY_ON_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 186, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENTATION_ON_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 186, TEST_IF_METHOD_IS_IN_CATEGORY_ON_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 186, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 109, TEST_IF_IS_INSTANCE_METHOD_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 109, TEST_IF_IS_METHOD_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 147, TEST_IF_IS_INSTANCE_METHOD_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 147, TEST_IF_IS_METHOD_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 147, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2OptionalMethod, 155, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2OptionalMethod, 155, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2RequiredMethod, 153, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2RequiredMethod, 153, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolOptionalMethod, 151, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolOptionalMethod, 151, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolRequiredMethod, 149, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolRequiredMethod, 149, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2OptionalMethod, 159, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2OptionalMethod, 159, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2RequiredMethod, 157, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2RequiredMethod, 157, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 163, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 163, TEST_IS_RECEIVER_SUPER, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 164, TEST_IS_RECEIVER_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 167, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 167, TEST_IS_RECEIVER_CLASS_TYPE, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 167, TEST_IS_RECEIVER_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 168, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 168, TEST_IS_RECEIVER_CLASS_TYPE, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 168, TEST_IS_RECEIVER_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 169, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 169, TEST_IS_RECEIVER_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 171, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 171, TEST_IS_RECEIVER_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 172, TEST_ALL_METHODS, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 172, TEST_IS_RECEIVER_CLASS_TYPE, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 172, TEST_IS_RECEIVER_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassTestReceiver, 173, TEST_IS_RECEIVER_SUBCLASS_OF, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 139, TEST_IS_METHOD_EXPOSED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 139, TEST_IS_OVERRIDING_METHOD, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 139, TEST_PARAM_TYPE_CHECK2, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 140, TEST_IS_RECEIVER_CLASS_NAMED, WARNING, [] +codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 140, TEST_IS_RECEIVER_SUPER, WARNING, [] codetoanalyze/objc/linters-for-test-only/InContextOfMethodsTest.m, InContextOfMethodsTest_method, 16, TEST_IN_METHOD_CONTEXT, WARNING, [] codetoanalyze/objc/linters-for-test-only/InContextOfMethodsTest.m, InContextOfMethodsTest_method, 16, TEST_VAR_TYPE_CHECK, WARNING, [] codetoanalyze/objc/linters-for-test-only/InContextOfMethodsTest.m, function, 27, TEST_IN_FUNCTION_CONTEXT, WARNING, []