Skip to content

Commit b15c502

Browse files
Add no-header run option (#7869)
Co-authored-by: Pierre Sassoulas <[email protected]>
1 parent 57d959a commit b15c502

File tree

3 files changed

+35
-9
lines changed

3 files changed

+35
-9
lines changed

doc/whatsnew/fragments/5362.feature

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Added the ``no-header`` output format. If enabled with ``--output-format=no-header``, it will not include the module name in the output.
2+
3+
Closes #5362

pylint/reporters/text.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ def colorize_ansi(
150150
return msg
151151

152152

153+
def make_header(msg: Message) -> str:
154+
return f"************* Module {msg.module}"
155+
156+
153157
class TextReporter(BaseReporter):
154158
"""Reports messages and layouts in plain text."""
155159

@@ -199,11 +203,8 @@ def write_message(self, msg: Message) -> None:
199203
def handle_message(self, msg: Message) -> None:
200204
"""Manage message of different type and in the context of path."""
201205
if msg.module not in self._modules:
202-
if msg.module:
203-
self.writeln(f"************* Module {msg.module}")
204-
self._modules.add(msg.module)
205-
else:
206-
self.writeln("************* ")
206+
self.writeln(make_header(msg))
207+
self._modules.add(msg.module)
207208
self.write_message(msg)
208209

209210
def _display(self, layout: Section) -> None:
@@ -212,6 +213,18 @@ def _display(self, layout: Section) -> None:
212213
TextWriter().format(layout, self.out)
213214

214215

216+
class NoHeaderReporter(TextReporter):
217+
"""Reports messages and layouts in plain text without a module header."""
218+
219+
name = "no-header"
220+
221+
def handle_message(self, msg: Message) -> None:
222+
"""Write message(s) without module header."""
223+
if msg.module not in self._modules:
224+
self._modules.add(msg.module)
225+
self.write_message(msg)
226+
227+
215228
class ParseableTextReporter(TextReporter):
216229
"""A reporter very similar to TextReporter, but display messages in a form
217230
recognized by most text editors :
@@ -296,10 +309,7 @@ def handle_message(self, msg: Message) -> None:
296309
"""
297310
if msg.module not in self._modules:
298311
msg_style = self._get_decoration("S")
299-
if msg.module:
300-
modsep = colorize_ansi(f"************* Module {msg.module}", msg_style)
301-
else:
302-
modsep = colorize_ansi(f"************* {msg.module}", msg_style)
312+
modsep = colorize_ansi(make_header(msg), msg_style)
303313
self.writeln(modsep)
304314
self._modules.add(msg.module)
305315
msg_style = self._get_decoration(msg.C)
@@ -313,6 +323,7 @@ def handle_message(self, msg: Message) -> None:
313323

314324
def register(linter: PyLinter) -> None:
315325
linter.register_reporter(TextReporter)
326+
linter.register_reporter(NoHeaderReporter)
316327
linter.register_reporter(ParseableTextReporter)
317328
linter.register_reporter(VSTextReporter)
318329
linter.register_reporter(ColorizedTextReporter)

tests/test_self.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1278,6 +1278,18 @@ def test_line_too_long_useless_suppression(self) -> None:
12781278

12791279
self._test_output([module, "--enable=all"], expected_output=expected)
12801280

1281+
def test_output_no_header(self) -> None:
1282+
module = join(HERE, "data", "clientmodule_test.py")
1283+
expected = "Unused variable 'local_variable'"
1284+
not_expected = textwrap.dedent(
1285+
"""************* Module data.clientmodule_test"""
1286+
)
1287+
1288+
args = [module, "--output-format=no-header"]
1289+
self._test_output(
1290+
args, expected_output=expected, unexpected_output=not_expected
1291+
)
1292+
12811293

12821294
class TestCallbackOptions:
12831295
"""Test for all callback options we support."""

0 commit comments

Comments
 (0)