Refactor - Move build_message_definition to the BaseChecker class

This commit is contained in:
Pierre Sassoulas 2019-03-23 10:48:20 +01:00 committed by Claudiu Popa
parent 66fcf4511f
commit e96be13c47
4 changed files with 32 additions and 47 deletions

View File

@ -14,9 +14,10 @@
from typing import Any
from pylint.config import OptionsProviderMixIn
from pylint.constants import WarningScope
from pylint.exceptions import InvalidMessageError
from pylint.interfaces import UNDEFINED
from pylint.message import build_message_definition
from pylint.interfaces import UNDEFINED, IRawChecker, ITokenChecker, implements
from pylint.message.message_definition import MessageDefinition
class BaseChecker(OptionsProviderMixIn):
@ -55,14 +56,10 @@ class BaseChecker(OptionsProviderMixIn):
return "{} '{}' responsible for {}".format(status, self.name, ", ".join(msgids))
def add_message(
self,
msgid,
line=None,
node=None,
args=None,
confidence=UNDEFINED,
col_offset=None,
self, msgid, line=None, node=None, args=None, confidence=None, col_offset=None
):
if not confidence:
confidence = UNDEFINED
self.linter.add_message(msgid, line, node, args, confidence, col_offset)
def check_consistency(self) -> None:
@ -89,10 +86,34 @@ class BaseChecker(OptionsProviderMixIn):
checker_id = message.msgid[1:3]
existing_ids.append(message.msgid)
def create_message_definition_from_tuple(self, msgid, msg_tuple):
if implements(self, (IRawChecker, ITokenChecker)):
default_scope = WarningScope.LINE
else:
default_scope = WarningScope.NODE
options = {}
if len(msg_tuple) > 3:
(msg, symbol, descr, options) = msg_tuple
elif len(msg_tuple) > 2:
(msg, symbol, descr) = msg_tuple
else:
error_msg = """Messages should have a msgid and a symbol. Something like this :
"W1234": (
"message",
"message-symbol",
"Message description with detail.",
...
),
"""
raise InvalidMessageError(error_msg)
options.setdefault("scope", default_scope)
return MessageDefinition(self, msgid, msg, descr, symbol, **options)
@property
def messages(self) -> list:
return [
build_message_definition(self, msgid, msg_tuple)
self.create_message_definition_from_tuple(msgid, msg_tuple)
for msgid, msg_tuple in sorted(self.msgs.items())
]

View File

@ -39,7 +39,6 @@
"""All the classes related to Message handling."""
from pylint.message.build_message_definition import build_message_definition
from pylint.message.message import Message
from pylint.message.message_definition import MessageDefinition
from pylint.message.message_handler_mix_in import MessagesHandlerMixIn

View File

@ -1,34 +0,0 @@
# -*- coding: utf-8 -*-
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# For details: https://github.com/PyCQA/pylint/blob/master/COPYING
import warnings
from pylint.constants import WarningScope
from pylint.interfaces import IRawChecker, ITokenChecker, implements
from pylint.message.message_definition import MessageDefinition
def build_message_definition(checker, msgid, msg_tuple):
if implements(checker, (IRawChecker, ITokenChecker)):
default_scope = WarningScope.LINE
else:
default_scope = WarningScope.NODE
options = {}
if len(msg_tuple) > 3:
(msg, symbol, descr, options) = msg_tuple
elif len(msg_tuple) > 2:
(msg, symbol, descr) = msg_tuple
else:
# messages should have a symbol, but for backward compatibility
# they may not.
(msg, descr) = msg_tuple
warnings.warn(
"[pylint 0.26] description of message %s doesn't include "
"a symbolic name" % msgid,
DeprecationWarning,
)
symbol = None
options.setdefault("scope", default_scope)
return MessageDefinition(checker, msgid, msg, descr, symbol, **options)

View File

@ -20,7 +20,6 @@ from pylint.constants import (
)
from pylint.exceptions import InvalidMessageError, UnknownMessageError
from pylint.interfaces import UNDEFINED
from pylint.message.build_message_definition import build_message_definition
from pylint.message.message import Message
from pylint.utils.utils import (
_format_option_value,
@ -442,7 +441,7 @@ Below is a list of all checkers and their features.
for msgid, msg in sorted(
msgs.items(), key=lambda kv: (_MSG_ORDER.index(kv[0][0]), kv[1])
):
msg = build_message_definition(checker.name, msgid, msg)
msg = checker.create_message_definition_from_tuple(msgid, msg)
result += "%s\n" % msg.format_help(checkerref=False)
result += "\n"
if reports: