def _check_docstring(self, node_type, node, report_missing=True, confidence=interfaces.HIGH):
    'check the node has a non empty docstring'
    docstring = node.doc
    if (docstring is None):
        docstring = _infer_dunder_doc_attribute(node)
    if (docstring is None):
        if (not report_missing):
            return
        lines = (utils.get_node_last_lineno(node) - node.lineno)
        if ((node_type == 'module') and (not lines)):
            return
        max_lines = self.config.docstring_min_length
        if ((node_type != 'module') and (max_lines > (- 1)) and (lines < max_lines)):
            return
        self.stats[('undocumented_' + node_type)] += 1
        if (node.body and isinstance(node.body[0], astroid.Expr) and isinstance(node.body[0].value, astroid.Call)):
            func = utils.safe_infer(node.body[0].value.func)
            if (isinstance(func, astroid.BoundMethod) and isinstance(func.bound, astroid.Instance)):
                if (func.bound.name in ('str', 'unicode', 'bytes')):
                    return
        if (node_type == 'module'):
            message = 'missing-module-docstring'
        elif (node_type == 'class'):
            message = 'missing-class-docstring'
        else:
            message = 'missing-function-docstring'
        self.add_message(message, node=node, confidence=confidence)
    elif (not docstring.strip()):
        self.stats[('undocumented_' + node_type)] += 1
        self.add_message('empty-docstring', node=node, args=(node_type,), confidence=confidence)
check the node has a non empty docstring
def _check_docstring(self, node_type, node, report_missing=True, confidence=interfaces.HIGH):
    
    docstring = node.doc
    if (docstring is None):
        docstring = _infer_dunder_doc_attribute(node)
    if (docstring is None):
        if (not report_missing):
            return
        lines = (utils.get_node_last_lineno(node) - node.lineno)
        if ((node_type == 'module') and (not lines)):
            return
        max_lines = self.config.docstring_min_length
        if ((node_type != 'module') and (max_lines > (- 1)) and (lines < max_lines)):
            return
        self.stats[('undocumented_' + node_type)] += 1
        if (node.body and isinstance(node.body[0], astroid.Expr) and isinstance(node.body[0].value, astroid.Call)):
            func = utils.safe_infer(node.body[0].value.func)
            if (isinstance(func, astroid.BoundMethod) and isinstance(func.bound, astroid.Instance)):
                if (func.bound.name in ('str', 'unicode', 'bytes')):
                    return
        if (node_type == 'module'):
            message = 'missing-module-docstring'
        elif (node_type == 'class'):
            message = 'missing-class-docstring'
        else:
            message = 'missing-function-docstring'
        self.add_message(message, node=node, confidence=confidence)
    elif (not docstring.strip()):
        self.stats[('undocumented_' + node_type)] += 1
        self.add_message('empty-docstring', node=node, args=(node_type,), confidence=confidence)