summaryrefslogtreecommitdiff
path: root/pylint/config/config_initialization.py
diff options
context:
space:
mode:
authorJacob Walls <jacobtylerwalls@gmail.com>2022-05-27 12:16:58 -0400
committerGitHub <noreply@github.com>2022-05-27 12:16:58 -0400
commita7ff1fd597f32686403b9f3a160b03dd55617d00 (patch)
tree0c7d66c3c473943d89e2032601edb812b6bb5c7b /pylint/config/config_initialization.py
parenta6a23ecabfd5cc7d43642013255b828ac85352d6 (diff)
downloadpylint-git-a7ff1fd597f32686403b9f3a160b03dd55617d00.tar.gz
Allow disabling `bad-option-value` and `unrecognized-option` with `--disable=all` (#6691)
Previously, due to the order in which options are parsed (config file, then command line), any unrecognized or bad options in the config file would emit messages unconditionally, even if suppressed on the CLI.
Diffstat (limited to 'pylint/config/config_initialization.py')
-rw-r--r--pylint/config/config_initialization.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/pylint/config/config_initialization.py b/pylint/config/config_initialization.py
index 49dfa24fd..b5bd31234 100644
--- a/pylint/config/config_initialization.py
+++ b/pylint/config/config_initialization.py
@@ -31,7 +31,7 @@ def _config_initialization(
# Set the current module to the configuration file
# to allow raising messages on the configuration file.
- linter.set_current_module(str(config_file) if config_file else None)
+ linter.set_current_module(str(config_file) if config_file else "")
# Read the configuration file
config_file_parser = _ConfigurationFileParser(verbose_mode, linter)
@@ -51,12 +51,12 @@ def _config_initialization(
if "load-plugins" in config_data:
linter.load_plugin_modules(utils._splitstrip(config_data["load-plugins"]))
+ unrecognized_options_message = None
# First we parse any options from a configuration file
try:
linter._parse_configuration_file(config_args)
except _UnrecognizedOptionError as exc:
- msg = ", ".join(exc.options)
- linter.add_message("unrecognized-option", line=0, args=msg)
+ unrecognized_options_message = ", ".join(exc.options)
# Then, if a custom reporter is provided as argument, it may be overridden
# by file parameters, so we re-set it here. We do this before command line
@@ -83,6 +83,16 @@ def _config_initialization(
msg = ", ".join(unrecognized_options)
linter._arg_parser.error(f"Unrecognized option found: {msg}")
+ # Now that config file and command line options have been loaded
+ # with all disables, it is safe to emit messages
+ if unrecognized_options_message is not None:
+ linter.set_current_module(str(config_file) if config_file else "")
+ linter.add_message(
+ "unrecognized-option", args=unrecognized_options_message, line=0
+ )
+
+ linter._emit_bad_option_value()
+
# Set the current module to configuration as we don't know where
# the --load-plugins key is coming from
linter.set_current_module("Command line or configuration file")