diff --git a/pylint/lint/pylinter.py b/pylint/lint/pylinter.py index 4c97566963..7f40050703 100644 --- a/pylint/lint/pylinter.py +++ b/pylint/lint/pylinter.py @@ -46,14 +46,7 @@ MessageLocationTuple, ModuleDescriptionDict, ) -from pylint.utils import ( - ASTWalker, - FileState, - LinterStats, - ModuleStats, - get_global_option, - utils, -) +from pylint.utils import ASTWalker, FileState, LinterStats, get_global_option, utils from pylint.utils.pragma_parser import ( OPTION_PO, InvalidPragmaError, @@ -1125,9 +1118,7 @@ def set_current_module(self, modname, filepath: Optional[str] = None): self.reporter.on_set_current_module(modname, filepath) self.current_name = modname self.current_file = filepath or modname - self.stats.by_module[modname] = ModuleStats( - convention=0, error=0, fatal=0, info=0, refactor=0, statement=0, warning=0 - ) + self.stats.init_single_module(modname) @contextlib.contextmanager def _astroid_module_checker(self): @@ -1435,7 +1426,6 @@ def _add_one_message( # update stats msg_cat = MSG_TYPES[message_definition.msgid[0]] self.msg_status |= MSG_TYPES_STATUS[message_definition.msgid[0]] - self.stats.increase_single_message_count(msg_cat, 1) self.stats.increase_single_module_message_count(self.current_name, msg_cat, 1) try: diff --git a/pylint/utils/linterstats.py b/pylint/utils/linterstats.py index f460544558..cb20853522 100644 --- a/pylint/utils/linterstats.py +++ b/pylint/utils/linterstats.py @@ -73,6 +73,11 @@ class ModuleStats(TypedDict): warning: int +ModuleStatsAttribute = Literal[ + "convention", "error", "fatal", "info", "refactor", "statement", "warning" +] + + # pylint: disable-next=too-many-instance-attributes class LinterStats: """Class used to linter stats""" @@ -149,6 +154,12 @@ def __str__(self) -> str: {self.nb_duplicated_lines} {self.percent_duplicated_lines}""" + def init_single_module(self, module_name: str) -> None: + """Use through Pylinter.set_current_module so Pyliner.current_name is consistent.""" + self.by_module[module_name] = ModuleStats( + convention=0, error=0, fatal=0, info=0, refactor=0, statement=0, warning=0 + ) + def get_bad_names( self, node_name: Literal[ @@ -279,15 +290,10 @@ def increase_single_message_count(self, type_name: str, increase: int) -> None: setattr(self, type_name, getattr(self, type_name) + increase) def increase_single_module_message_count( - self, - modname: str, - type_name: Literal["convention", "error", "fatal", "info", "refactor"], - increase: int, + self, modname: str, type_name: ModuleStatsAttribute, increase: int ) -> None: """Increase the message type count of an individual message type of a module""" - self.by_module[modname][type_name] = ( - self.by_module[modname][type_name] + increase - ) + self.by_module[modname][type_name] += increase def reset_message_count(self) -> None: """Resets the message type count of the stats object"""