Path 1: 5609 calls (0.98)

Call (5609)

None (5609)

1def visit_call(self, node: nodes.Call) -> None:
2        """Checks calls to logging methods."""
3
4        def is_logging_name() -> bool:
5            return (
6                isinstance(node.func, nodes.Attribute)
7                and isinstance(node.func.expr, nodes.Name)
8                and node.func.expr.name in self._logging_names
9            )
10
11        def is_logger_class() -> tuple[bool, str | None]:
12            for inferred in infer_all(node.func):
13                if isinstance(inferred, astroid.BoundMethod):
14                    parent = inferred._proxied.parent
15                    if isinstance(parent, nodes.ClassDef) and (
16                        parent.qname() == "logging.Logger"
17                        or any(
18                            ancestor.qname() == "logging.Logger"
19                            for ancestor in parent.ancestors()
20                        )
21                    ):
22                        return True, inferred._proxied.name
23            return False, None
24
25        if is_logging_name():
26            name = node.func.attrname
27        else:
28            result, name = is_logger_class()
29            if not result:
30                return
31        self._check_log_method(node, name)
            

Path 2: 91 calls (0.02)

Call (91)

1def visit_call(self, node: nodes.Call) -> None:
2        """Checks calls to logging methods."""
3
4        def is_logging_name() -> bool:
5            return (
6                isinstance(node.func, nodes.Attribute)
7                and isinstance(node.func.expr, nodes.Name)
8                and node.func.expr.name in self._logging_names
9            )
10
11        def is_logger_class() -> tuple[bool, str | None]:
12            for inferred in infer_all(node.func):
13                if isinstance(inferred, astroid.BoundMethod):
14                    parent = inferred._proxied.parent
15                    if isinstance(parent, nodes.ClassDef) and (
16                        parent.qname() == "logging.Logger"
17                        or any(
18                            ancestor.qname() == "logging.Logger"
19                            for ancestor in parent.ancestors()
20                        )
21                    ):
22                        return True, inferred._proxied.name
23            return False, None
24
25        if is_logging_name():
26            name = node.func.attrname
27        else:
28            result, name = is_logger_class()
29            if not result:
30                return
31        self._check_log_method(node, name)
            

Path 3: 8 calls (0.0)

Call (8)

1def visit_call(self, node: nodes.Call) -> None:
2        """Checks calls to logging methods."""
3
4        def is_logging_name() -> bool:
5            return (
6                isinstance(node.func, nodes.Attribute)
7                and isinstance(node.func.expr, nodes.Name)
8                and node.func.expr.name in self._logging_names
9            )
10
11        def is_logger_class() -> tuple[bool, str | None]:
12            for inferred in infer_all(node.func):
13                if isinstance(inferred, astroid.BoundMethod):
14                    parent = inferred._proxied.parent
15                    if isinstance(parent, nodes.ClassDef) and (
16                        parent.qname() == "logging.Logger"
17                        or any(
18                            ancestor.qname() == "logging.Logger"
19                            for ancestor in parent.ancestors()
20                        )
21                    ):
22                        return True, inferred._proxied.name
23            return False, None
24
25        if is_logging_name():
26            name = node.func.attrname
27        else:
28            result, name = is_logger_class()
29            if not result:
30                return
31        self._check_log_method(node, name)