logging_format/visitor.py
def visit_Call(self, node):
        """
        Visit a function call.

        We expect every logging statement and string format to be a function call.

        """
        # CASE 1: We're in a logging statement
        if self.within_logging_statement():
            if self.within_logging_argument() and self.is_format_call(node):
                self.violations.append((node, STRING_FORMAT_VIOLATION))
                super(LoggingVisitor, self).generic_visit(node)
                return

        logging_level = self.detect_logging_level(node)

        if logging_level and self.current_logging_level is None:
            self.current_logging_level = logging_level

        # CASE 2: We're in some other statement
        if logging_level is None:
            super(LoggingVisitor, self).generic_visit(node)
            return

        # CASE 3: We're entering a new logging statement
        self.current_logging_call = node

        if logging_level == "warn":
            self.violations.append((node, WARN_VIOLATION))

        self.check_exc_info(node)

        for index, child in enumerate(iter_child_nodes(node)):
            if index == 1:
                self.current_logging_argument = child
            if index >= 1:
                self.check_exception_arg(child)
            if index > 1 and isinstance(child, keyword) and child.arg == "extra":
                self.current_extra_keyword = child

            super(LoggingVisitor, self).visit(child)

            self.current_logging_argument = None
            self.current_extra_keyword = None

        self.current_logging_call = None
        self.current_logging_level = None
def visit_Call(self, node):
        # CASE 1: We're in a logging statement
        if self.within_logging_statement():
            if self.within_logging_argument() and self.is_format_call(node):
                self.violations.append((node, STRING_FORMAT_VIOLATION))
                super(LoggingVisitor, self).generic_visit(node)
                return

        logging_level = self.detect_logging_level(node)

        if logging_level and self.current_logging_level is None:
            self.current_logging_level = logging_level

        # CASE 2: We're in some other statement
        if logging_level is None:
            super(LoggingVisitor, self).generic_visit(node)
            return

        # CASE 3: We're entering a new logging statement
        self.current_logging_call = node

        if logging_level == "warn":
            self.violations.append((node, WARN_VIOLATION))

        self.check_exc_info(node)

        for index, child in enumerate(iter_child_nodes(node)):
            if index == 1:
                self.current_logging_argument = child
            if index >= 1:
                self.check_exception_arg(child)
            if index > 1 and isinstance(child, keyword) and child.arg == "extra":
                self.current_extra_keyword = child

            super(LoggingVisitor, self).visit(child)

            self.current_logging_argument = None
            self.current_extra_keyword = None

        self.current_logging_call = None
        self.current_logging_level = None
def visit_Call ( self , node ) : # CASE 1: We're in a logging statement if self . within_logging_statement ( ) : if self . within_logging_argument ( ) and self . is_format_call ( node ) : self . violations . append ( ( node , STRING_FORMAT_VIOLATION ) ) super ( LoggingVisitor , self ) . generic_visit ( node ) return logging_level = self . detect_logging_level ( node ) if logging_level and self . current_logging_level is None : self . current_logging_level = logging_level # CASE 2: We're in some other statement if logging_level is None : super ( LoggingVisitor , self ) . generic_visit ( node ) return # CASE 3: We're entering a new logging statement self . current_logging_call = node if logging_level == "warn" : self . violations . append ( ( node , WARN_VIOLATION ) ) self . check_exc_info ( node ) for index , child in enumerate ( iter_child_nodes ( node ) ) : if index == 1 : self . current_logging_argument = child if index >= 1 : self . check_exception_arg ( child ) if index > 1 and isinstance ( child , keyword ) and child . arg == "extra" : self . current_extra_keyword = child super ( LoggingVisitor , self ) . visit ( child ) self . current_logging_argument = None self . current_extra_keyword = None self . current_logging_call = None self . current_logging_level = None
Visit a function call.

        We expect every logging statement and string format to be a function call.
Visit a function call .