From cb66e4212b9867058a6f3ec5e8cfccf56f96825e Mon Sep 17 00:00:00 2001 From: Brandon Kieft Date: Wed, 9 May 2018 11:26:55 -0700 Subject: [PATCH] Add predicates for instance and class methods Reviewed By: dulmarod Differential Revision: D7875528 fbshipit-source-id: dce8360 --- infer/src/clang/cPredicates.ml | 34 ++- infer/src/clang/cPredicates.mli | 24 +++ infer/src/clang/cTL.ml | 8 + .../linters-for-test-only/GenericTestClass.m | 5 + .../al_definitions/linters_example.al | 41 +++- .../objc/linters-for-test-only/issues.exp | 200 ++++++++++-------- 6 files changed, 220 insertions(+), 92 deletions(-) diff --git a/infer/src/clang/cPredicates.ml b/infer/src/clang/cPredicates.ml index d40a52cc8..e5cf5c3b9 100644 --- a/infer/src/clang/cPredicates.ml +++ b/infer/src/clang/cPredicates.ml @@ -289,6 +289,22 @@ let is_objc_protocol_named an re = false +let is_objc_class_method_named an name = + match an with + | Ctl_parser_types.Decl (Clang_ast_t.ObjCMethodDecl (_, _, omdi)) -> + declaration_has_name an name && not omdi.omdi_is_instance_method + | _ -> + false + + +let is_objc_instance_method_named an name = + match an with + | Ctl_parser_types.Decl (Clang_ast_t.ObjCMethodDecl (_, _, omdi)) -> + declaration_has_name an name && omdi.omdi_is_instance_method + | _ -> + false + + let is_objc_method_named an name = match an with | Ctl_parser_types.Decl (Clang_ast_t.ObjCMethodDecl _) -> @@ -623,14 +639,26 @@ let is_in_method context name = ALVar.compare_str_with_alexp current_method_name name -let is_in_objc_method context name = +let is_in_objc_class_method context name = match context.CLintersContext.current_method with - | Some (ObjCMethodDecl _) -> - is_in_method context name + | Some (ObjCMethodDecl (_, _, omdi) as objc_method) -> + declaration_has_name (Decl objc_method) name && not omdi.omdi_is_instance_method + | _ -> + false + + +let is_in_objc_instance_method context name = + match context.CLintersContext.current_method with + | Some (ObjCMethodDecl (_, _, omdi) as objc_method) -> + declaration_has_name (Decl objc_method) name && omdi.omdi_is_instance_method | _ -> false +let is_in_objc_method context name = + is_in_objc_class_method context name || is_in_objc_instance_method context name + + let is_in_function context name = match context.CLintersContext.current_method with | Some (FunctionDecl _) -> diff --git a/infer/src/clang/cPredicates.mli b/infer/src/clang/cPredicates.mli index 905dcad9d..7a8d90c94 100644 --- a/infer/src/clang/cPredicates.mli +++ b/infer/src/clang/cPredicates.mli @@ -193,6 +193,18 @@ val is_objc_protocol_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool * whose name matches the provided REGEXP *) +val is_objc_class_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool +(** + * Checks if the current node is an ObjCMethodDecl node whose name + * matches the provided REGEXP and is a class method + *) + +val is_objc_instance_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool +(** + * Checks if the current node is an ObjCMethodDecl node whose name + * matches the provided REGEXP and is an instance method + *) + val is_objc_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool (** * Checks if the current node is an ObjCMethodDecl node @@ -293,6 +305,18 @@ val is_in_objc_protocol_named : CLintersContext.context -> ALVar.alexp -> bool * node whose name matches the provided REGEXP *) +val is_in_objc_class_method : CLintersContext.context -> ALVar.alexp -> bool +(** + * Checks if the current node, or a parent node, is an ObjCMethodDecl node + * whose name matches the provided REGEXP and is a class method + *) + +val is_in_objc_instance_method : CLintersContext.context -> ALVar.alexp -> bool +(** + * Checks if the current node, or a parent node, is an ObjCMethodDecl node + * whose name matches the provided REGEXP and is an instance method + *) + val is_in_objc_method : CLintersContext.context -> ALVar.alexp -> bool (** * Checks if the current node, or a parent node, is an ObjCMethodDecl node diff --git a/infer/src/clang/cTL.ml b/infer/src/clang/cTL.ml index 31b2ec4a1..e6d172ec5 100644 --- a/infer/src/clang/cTL.ml +++ b/infer/src/clang/cTL.ml @@ -1016,6 +1016,10 @@ let rec eval_Atomic pred_name_ args an lcxt = CPredicates.is_in_cxx_method lcxt name | "is_in_function", [name], _ -> CPredicates.is_in_function lcxt name + | "is_in_objc_class_method", [name], _ -> + CPredicates.is_in_objc_class_method lcxt name + | "is_in_objc_instance_method", [name], _ -> + CPredicates.is_in_objc_instance_method lcxt name | "is_in_objc_method", [name], _ -> CPredicates.is_in_objc_method lcxt name | "is_in_objc_interface_named", [name], _ -> @@ -1084,6 +1088,10 @@ let rec eval_Atomic pred_name_ args an lcxt = CPredicates.is_objc_category_on_subclass_of an name | "is_objc_protocol_named", [name], an -> CPredicates.is_objc_protocol_named an name + | "is_objc_class_method_named", [name], an -> + CPredicates.is_objc_class_method_named an name + | "is_objc_instance_method_named", [name], an -> + CPredicates.is_objc_instance_method_named an name | "is_objc_method_named", [name], an -> CPredicates.is_objc_method_named an name | "is_objc_method_overriding", [], 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 ee515b5bb..390e8ecfa 100644 --- a/infer/tests/codetoanalyze/objc/linters-for-test-only/GenericTestClass.m +++ b/infer/tests/codetoanalyze/objc/linters-for-test-only/GenericTestClass.m @@ -14,6 +14,7 @@ @interface MyBaseClass : NSObject @property int myBaseClassProperty; ++ (void)myBaseClassClassMethod; - (void)myBaseClassMethod; @end @@ -26,7 +27,11 @@ @implementation MyBaseClass ++ (void)myBaseClassClassMethod { + int x = 0; +} - (void)myBaseClassMethod { + int x = 0; } - (void)myBaseClassInterfaceExtensionMethod { } 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 d326eff00..d14549d6a 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 @@ -696,12 +696,31 @@ DEFINE-CHECKER TEST_IF_IS_PROTOCOL_NAMED = { }; +DEFINE-CHECKER TEST_IF_IS_CLASS_METHOD_NAMED = { + + SET report_when = + is_objc_class_method_named("myBaseClassClassMethod"); + + SET message = "Node is a class method named myBaseClassClassMethod."; + +}; + +DEFINE-CHECKER TEST_IF_IS_INSTANCE_METHOD_NAMED = { + + SET report_when = + is_objc_instance_method_named("mySubclassMethod"); + + SET message = "Node is an instance method named mySubclassMethod."; + +}; + DEFINE-CHECKER TEST_IF_IS_METHOD_NAMED = { SET report_when = - is_objc_method_named("mySubclassMethod"); + is_objc_method_named("mySubclassMethod") OR + is_objc_method_named("myBaseClassClassMethod"); - SET message = "Node is a method named mySubclassMethod."; + SET message = "Node is a method named mySubclassMethod or myBaseClassClassMethod."; }; @@ -722,3 +741,21 @@ DEFINE-CHECKER TEST_IS_METHOD_EXPOSED = { SET message = "Method %name% is exposed in an interface."; }; + +DEFINE-CHECKER TEST_IN_CLASS_METHOD = { + + SET report_when = + is_in_objc_class_method("myBaseClassClassMethod"); + + SET message = "This node is in a class method named myBaseClassClassMethod."; + +}; + +DEFINE-CHECKER TEST_IN_INSTANCE_METHOD = { + + SET report_when = + is_in_objc_instance_method("myBaseClassMethod"); + + SET message = "This node is in an instance method named myBaseClassClassMethod."; + +}; 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 40f0d50d5..a02b78e87 100644 --- a/infer/tests/codetoanalyze/objc/linters-for-test-only/issues.exp +++ b/infer/tests/codetoanalyze/objc/linters-for-test-only/issues.exp @@ -9,95 +9,121 @@ 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, 21, TEST_IF_IS_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 21, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 27, TEST_IF_IS_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 27, TEST_IF_IS_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 45, TEST_IF_IS_CATEGORY_INTERFACE_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 45, TEST_IF_IS_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 45, TEST_IF_IS_CATEGORY_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 45, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 51, TEST_IF_IS_CATEGORY_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 51, TEST_IF_IS_CATEGORY_IMPLEMENTATION_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 51, TEST_IF_IS_CATEGORY_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 51, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 134, TEST_IF_IS_CATEGORY_INTERFACE_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 134, TEST_IF_IS_CATEGORY_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 140, TEST_IF_IS_CATEGORY_IMPLEMENTATION_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 140, TEST_IF_IS_CATEGORY_ON_SUBCLASS_OF, 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, 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, 47, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 47, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 47, TEST_IF_METHOD_IS_IN_CATEGORY_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 47, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 53, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENATION_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 53, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 53, TEST_IF_METHOD_IS_IN_CATEGORY_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 53, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 53, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 23, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 23, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 31, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 31, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 31, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 17, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 17, TEST_IF_METHOD_IS_IN_INTERFACE_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 29, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 29, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 29, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 37, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 37, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 37, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 37, TEST_RETURN_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 35, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 35, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 35, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 35, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 33, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 33, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 33, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 33, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 40, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 40, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 40, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 40, TEST_PARAM_TYPE_CHECK2, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 113, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 113, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 93, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 93, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 89, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 89, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 105, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 105, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 105, TEST_RETURN_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 101, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 101, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 97, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 97, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 136, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 136, TEST_IF_METHOD_IS_IN_CATEGORY_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 142, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENTATION_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 142, TEST_IF_METHOD_IS_IN_CATEGORY_ON_SUBCLASS_OF, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 142, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 83, TEST_IF_IS_METHOD_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 117, TEST_IF_IS_METHOD_NAMED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 117, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2OptionalMethod, 125, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2OptionalMethod, 125, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2RequiredMethod, 123, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2RequiredMethod, 123, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolOptionalMethod, 121, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolOptionalMethod, 121, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolRequiredMethod, 119, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolRequiredMethod, 119, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2OptionalMethod, 129, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2OptionalMethod, 129, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2RequiredMethod, 127, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2RequiredMethod, 127, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 109, TEST_IS_METHOD_EXPOSED, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 109, TEST_IS_OVERRIDING_METHOD, WARNING, [] -codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 109, TEST_PARAM_TYPE_CHECK2, 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_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/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, []