示例#1
0
    def filter(self, filter_input):
        potentials = filter_input.potentials
        scode_reference = filter_input.scode_reference
        context_id = ctx.get_context_id(scode_reference, self.context_level)

        result = FilterResult(self, False, potentials)

        if context_id == -1:
            # This is mainly a performance optimization
            return result

        if self.returnt and not self.hierarchy:
            context_types = ctx.get_context_return_types(context_id,
                    scode_reference.source, self.func,
                    get_codebase(potentials), self.context_level)
        elif self.returnt and self.hierarchy:
            context_types = ctx.get_context_return_types_hierarchy(context_id,
                    scode_reference.source, self.func,
                    get_codebase(potentials), self.context_level)
        elif self.hierarchy:
            context_types = ctx.get_context_types_hierarchy(context_id,
                    scode_reference.source, self.func,
                    get_codebase(potentials), self.context_level)
        else:
            context_types = ctx.get_context_types(context_id,
                    scode_reference.source, self.func,
                    get_codebase(potentials), self.context_level)

        if len(context_types) > 0:
            new_potentials = self._get_potentials(potentials, context_types)

            if len(new_potentials) > 0:
                result = FilterResult(self, True, new_potentials)

        return result
示例#2
0
    def filter(self, filter_input):
        potentials = filter_input.potentials
        scode_reference = filter_input.scode_reference
        context_id = ctx.get_context_id(scode_reference, self.context_level)

        result = FilterResult(self, False, potentials)

        if context_id == -1:
            # This is mainly a performance optimization
            return result

        if self.returnt and not self.hierarchy:
            context_types = ctx.get_context_return_types(
                context_id, scode_reference.source, self.func,
                get_codebase(potentials), self.context_level)
        elif self.returnt and self.hierarchy:
            context_types = ctx.get_context_return_types_hierarchy(
                context_id, scode_reference.source, self.func,
                get_codebase(potentials), self.context_level)
        elif self.hierarchy:
            context_types = ctx.get_context_types_hierarchy(
                context_id, scode_reference.source, self.func,
                get_codebase(potentials), self.context_level)
        else:
            context_types = ctx.get_context_types(context_id,
                                                  scode_reference.source,
                                                  self.func,
                                                  get_codebase(potentials),
                                                  self.context_level)

        if len(context_types) > 0:
            new_potentials = self._get_potentials(potentials, context_types)

            if len(new_potentials) > 0:
                result = FilterResult(self, True, new_potentials)

        return result
示例#3
0
    def test_context(self):
        self.create_codebase()
        self.create_filters()
        self.create_documentation()
        self.create_channel()
        self.create_documentation2()
        self.parse_snippets()
        link_code(self.pname, 'core', self.release, 'javaclass', 'd',
                self.release)
        link_code(self.pname, 'core', self.release, 'javaclass', 's',
                None)
        link_code(self.pname, 'core', self.release, 'javapostclass', '',
                None)

        code_ref20 = self.code_refs[19]
        code_ref20 = SingleCodeReference.objects.get(pk=code_ref20.pk)

        print('DEBUG CONTEXT')
        print(code_ref20.content)

        # Local Context
        context_types = ctx.get_context_types(
                code_ref20.local_object_id,
                code_ref20.source,
                ctx.local_filter,
                self.codebase,
                ctx.LOCAL)
        fqn = [context_type.fqn for context_type in context_types]
        print(fqn)
        self.assertTrue('p1.ChildClazz' in fqn)
        self.assertEqual(1, len(fqn))

        context_types = ctx.get_context_types_hierarchy(
                code_ref20.local_object_id,
                code_ref20.source,
                ctx.local_filter,
                self.codebase,
                ctx.LOCAL)
        fqn = [context_type.fqn for context_type in context_types]
        print(fqn)
        self.assertTrue('p1.InterfaceClazz' in fqn)
        self.assertEqual(3, len(fqn))

        # Mid Context
        context_types = ctx.get_context_types(
                code_ref20.mid_object_id,
                code_ref20.source,
                ctx.mid_filter,
                self.codebase,
                ctx.MIDDLE)
        fqn = [context_type.fqn for context_type in context_types]
        print(fqn)
        self.assertEqual(3, len(fqn))
        self.assertTrue('p1.ChildClazz' in fqn)
        self.assertTrue('p1.Annotation1' in fqn)
        self.assertTrue('p1.Annotation2' in fqn)

        context_types = ctx.get_context_types_hierarchy(
                code_ref20.mid_object_id,
                code_ref20.source,
                ctx.mid_filter,
                self.codebase,
                ctx.MIDDLE)
        fqn = [context_type.fqn for context_type in context_types]
        print(fqn)
        self.assertEqual(5, len(fqn))
        self.assertTrue('p1.InterfaceClazz' in fqn)

        # Global Context
        context_types = ctx.get_context_types(
                code_ref20.global_object_id,
                code_ref20.source,
                ctx.global_filter,
                self.codebase,
                ctx.GLOBAL)
        fqn = [context_type.fqn for context_type in context_types]
        print(fqn)
        self.assertEqual(3, len(fqn))
        self.assertTrue('p1.Annotation2' in fqn)

        context_types = ctx.get_context_types_hierarchy(
                code_ref20.global_object_id,
                code_ref20.source,
                ctx.global_filter,
                self.codebase,
                ctx.GLOBAL)
        fqn = [context_type.fqn for context_type in context_types]
        print(fqn)
        self.assertEqual(5, len(fqn))
        self.assertTrue('p1.InterfaceClazz' in fqn)

        # Snippet
        snippet1 = self.code_snippets[0]
        context_types = ctx.get_context_types(
                snippet1.pk,
                snippet1.source,
                ctx.snippet_filter,
                self.codebase,
                ctx.SNIPPET)
        fqn = [context_type.fqn for context_type in context_types]
        print(fqn)
        self.assertEqual(2, len(fqn))
        self.assertTrue('p3.RecodocClient' in fqn)

        context_types = ctx.get_context_types_hierarchy(
                snippet1.pk,
                snippet1.source,
                ctx.snippet_filter,
                self.codebase,
                ctx.SNIPPET)
        fqn = [context_type.fqn for context_type in context_types]
        print(fqn)
        self.assertEqual(5, len(fqn))
        self.assertTrue('p3.IGeneralClient' in fqn)

        # Return Type
        link_code(self.pname, 'core', self.release, 'javamethod', 'd',
                self.release)
        link_code(self.pname, 'core', self.release, 'javamethod', 's',
                None)
        code_ref14 = self.code_refs[13]
        code_ref14 = SingleCodeReference.objects.get(pk=code_ref14.pk)
        context_types = ctx.get_context_return_types(
                code_ref14.local_object_id,
                code_ref14.source,
                ctx.local_filter,
                self.codebase,
                ctx.LOCAL)
        fqn = [context_type.fqn for context_type in context_types]
        print(fqn)
        self.assertEqual(1, len(fqn))
        self.assertTrue('p3.RecodocClient2' in fqn)

        context_types = ctx.get_context_return_types_hierarchy(
                code_ref14.local_object_id,
                code_ref14.source,
                ctx.local_filter,
                self.codebase,
                ctx.LOCAL)
        fqn = [context_type.fqn for context_type in context_types]
        print(fqn)
        self.assertEqual(2, len(fqn))
        self.assertTrue('p3.RecodocClient2Parent' in fqn)