mirror of
https://fuchsia.googlesource.com/third_party/github.com/pylint-dev/pylint
synced 2024-09-21 07:58:04 +00:00
86 lines
2.6 KiB
Python
86 lines
2.6 KiB
Python
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE
|
|
# Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from astroid import nodes
|
|
|
|
from pylint.interfaces import UNDEFINED, Confidence
|
|
from pylint.lint import PyLinter
|
|
from pylint.testutils.output_line import MessageTest
|
|
|
|
|
|
class UnittestLinter(PyLinter):
|
|
"""A fake linter class to capture checker messages."""
|
|
|
|
# pylint: disable=unused-argument
|
|
|
|
def __init__(self):
|
|
self._messages = []
|
|
super().__init__()
|
|
|
|
def release_messages(self):
|
|
try:
|
|
return self._messages
|
|
finally:
|
|
self._messages = []
|
|
|
|
def add_message(
|
|
self,
|
|
msgid: str,
|
|
line: int | None = None,
|
|
# pylint: disable=fixme
|
|
# TODO: Make node non optional
|
|
node: nodes.NodeNG | None = None,
|
|
args: Any = None,
|
|
confidence: Confidence | None = None,
|
|
col_offset: int | None = None,
|
|
end_lineno: int | None = None,
|
|
end_col_offset: int | None = None,
|
|
) -> None:
|
|
"""Add a MessageTest to the _messages attribute of the linter class."""
|
|
# If confidence is None we set it to UNDEFINED as well in PyLinter
|
|
if confidence is None:
|
|
confidence = UNDEFINED
|
|
|
|
# Look up "location" data of node if not yet supplied
|
|
if node:
|
|
if node.position:
|
|
if not line:
|
|
line = node.position.lineno
|
|
if not col_offset:
|
|
col_offset = node.position.col_offset
|
|
if not end_lineno:
|
|
end_lineno = node.position.end_lineno
|
|
if not end_col_offset:
|
|
end_col_offset = node.position.end_col_offset
|
|
else:
|
|
if not line:
|
|
line = node.fromlineno
|
|
if not col_offset:
|
|
col_offset = node.col_offset
|
|
if not end_lineno:
|
|
end_lineno = node.end_lineno
|
|
if not end_col_offset:
|
|
end_col_offset = node.end_col_offset
|
|
|
|
self._messages.append(
|
|
MessageTest(
|
|
msgid,
|
|
line,
|
|
node,
|
|
args,
|
|
confidence,
|
|
col_offset,
|
|
end_lineno,
|
|
end_col_offset,
|
|
)
|
|
)
|
|
|
|
@staticmethod
|
|
def is_message_enabled(*unused_args, **unused_kwargs):
|
|
return True
|