

def _get_method_info(self, scode_reference, skip_complex_search=False):
    method_name = fqn_container = nb_params = type_params = None
    if (scode_reference.snippet != None):
        parts = scode_reference.content.split(HANDLE_SEPARATOR)
        (method_name, fqn_container, nb_params, type_params) = self._get_method_info_snippet(parts)
    else:
        content = scode_reference.content
        match1 = je.CALL_CHAIN_RE.search(content)
        match2 = je.METHOD_DECLARATION_RE.search(content)
        match3 = je.METHOD_SIGNATURE_RE.search(content)
        match4 = je.SIMPLE_CALL_RE.search(content)
        if (match1 and (not skip_complex_search)):
            (method_name, fqn_container) = self._get_method_header(match1)
            eindex = content.index(')')
            sindex = content.index('(')
            params_text = content[(sindex + 1):eindex]
            if (len(params_text) == 0):
                nb_params = 0
            else:
                params = params_text.split(',')
                nb_params = len(params)
                type_params = [param.strip() for param in params]
        elif (match2 and (not skip_complex_search)):
            method_name = match2.group('method_name')
            eindex = content.index(')')
            sindex = content.index('(')
            params_text = content[(sindex + 1):eindex]
            if (len(params_text) == 0):
                nb_params = 0
            else:
                params = params_text.split(',')
                nb_params = len(params)
                type_params = [param.strip() for param in params]
        elif (match3 and (not skip_complex_search)):
            (method_name, fqn_container) = self._get_method_header(match3)
            (nb_params, type_params) = self._get_method_params(match3)
        elif (match4 and (not fqn_container)):
            (method_name, fqn_container) = self._get_method_header(match4)
            (nb_params, type_params) = self._get_method_params(match4)
        elif (len(content.strip()) > 0):
            method_name = je.get_clean_name(content)
        if (type_params is not None):
            for (i, type_param) in enumerate(type_params):
                if (type_param is not None):
                    type_param = type_param.strip()
                    atype = je.find_type(type_param)
                    if (atype is not None):
                        type_params[i] = atype
    if (type_params is not None):
        type_params = [su.safe_strip(type_param) for type_param in type_params]
    return MethodInfo(su.safe_strip(method_name), su.safe_strip(fqn_container), nb_params, type_params)

dataset/ETHPy150Open bartdag/recodoc2/recodoc2/apps/codebase/linker/java_linkers.py JavaMethodLinker._get_method_info/VarMisuse@379/532 `skip_complex_search`->`fqn_container`