diff options
author | Claudiu Popa <cpopa@cloudbasesolutions.com> | 2015-02-17 01:09:04 +0200 |
---|---|---|
committer | Claudiu Popa <cpopa@cloudbasesolutions.com> | 2015-02-17 01:09:04 +0200 |
commit | d00adfbdc7b77280f6a7c97e39cb882b853da1d8 (patch) | |
tree | 26722500b372c31cda2f8e49701fe5735171684b /pylint/reporters/json.py | |
parent | fe36ec0486cfc9aba10d8d87b0f42077ad1e78db (diff) | |
parent | 1dc09ef472a1bc0ca312c7cd8a1a3c700b510b47 (diff) | |
download | pylint-d00adfbdc7b77280f6a7c97e39cb882b853da1d8.tar.gz |
The HTML output accepts the `--msg-template` option.
Patch by Daniel Goldsmith. Closes issue #135.
Diffstat (limited to 'pylint/reporters/json.py')
-rw-r--r-- | pylint/reporters/json.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/pylint/reporters/json.py b/pylint/reporters/json.py new file mode 100644 index 0000000..7dba52b --- /dev/null +++ b/pylint/reporters/json.py @@ -0,0 +1,58 @@ +# Copyright (c) 2003-2014 LOGILAB S.A. (Paris, FRANCE). +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +"""JSON reporter""" +from __future__ import absolute_import, print_function + +import json +import sys +from cgi import escape + +from pylint.interfaces import IReporter +from pylint.reporters import BaseReporter + + +class JSONReporter(BaseReporter): + """Report messages and layouts in JSON.""" + + __implements__ = IReporter + name = 'json' + extension = 'json' + + def __init__(self, output=sys.stdout): + BaseReporter.__init__(self, output) + self.messages = [] + + def handle_message(self, message): + """Manage message of different type and in the context of path.""" + + self.messages.append({ + 'type': message.category, + 'module': message.module, + 'obj': message.obj, + 'line': message.line, + 'column': message.column, + 'path': message.path, + 'symbol': message.symbol, + 'message': escape(message.msg or ''), + }) + + def _display(self, layout): + """Launch layouts display""" + if self.messages: + print(json.dumps(self.messages, indent=4), file=self.out) + + +def register(linter): + """Register the reporter classes with the linter.""" + linter.register_reporter(JSONReporter) |