Package: pylint-json2html
pylint-json2htmlA pylint JSON report file to HTML: pylint is used to generate a JSON report,
and this tool will transform this report into an HTML document:usage: pylint-json2html [-h] [-o FILENAME] [-e OUTPUT_ENCODING]
                        [-t FILENAME] [-f FORMAT] [FILENAME]

Transform Pylint JSON report to HTML

positional arguments:
FILENAME              Pylint JSON report input file (or stdin)

optional arguments:
-h, --help          show this help message and exit
-o FILENAME, --output FILENAME
                    Pylint HTML report output file (or stdout)
-e ENCODING, --encoding ENCODING
                    Encoding used to write output file (if not stdout);
                    default to utf-8
-t FILENAME, --template FILENAME
                    Jinja2 custom template to generate report
-f FORMAT, --input-format FORMAT
                    Pylint JSON Report input type (json or jsonextended)Why?Since its1.7 version,
Pylint does not provide an HTML output format. The release notes say that:It was lately a second class citizen in Pylint, being mostly neglected.
Since we now have the JSON reporter, it can be used as a basis for building
more prettier HTML reports than what Pylint can currently generate.
This is part of the effort of removing cruft from Pylint, by removing less
used features.And I agree with that statements. Few people use the HTML reports, and pylint
is getting old. Its core features are complex and they require a lot of times
and efforts - and I am thankful for that software to exist in the first place!So here it is: a plugin to fulfill my own needs. I share it as open-source
because why not?InstallationTo install this tool, use pip:(venv) $ pip install pylint-json2htmlYou can always download the sources from the github repository, and use thesetup.pyfile toinstallordevelop, but I would not recommend that
unless you plan to contribute to this small project of mine.UsageMy favorite way of usingpylintandpylint-json2htmlis this one:(venv) $ pylint my_package | pylint-json2html -o pylint.htmlProvided that you configure your Pylint config file with:[REPORTS]
output-format=jsonBut you can generate first a JSON file, then usepylint-json2htmlto read it:(venv) $ pylint your_package > pylint.json
(venv) $ pylint-json2html -o pylint.html pylint.jsonYou can also redirectpylint-json2html's stdout:(venv) $ pylint-json2html pylint.json > pylint.htmlYou can specify the output encoding used to write to your file. Note that you
can't do that with stdout (you will have to configure your environment's locale
if you want to control that):(venv) $ pylint-json2html -o pylint.html -e utf-8 pylint.jsonThis is especially usefull when your locale is something likecp1252orlatin1, and you want to make sure your output file is properly written as
utf-8 (as it should be when working with Python file).Extended ReportActually, I lied about my favorite way, it is this one:(venv) $ pylint my_package | pylint-json2html -f jsonextended -o pylint.htmlWith this Pylint configuration:[MASTER]
load-plugins=pylint_json2html

[REPORTS]
output-format=jsonextendedThepylint_json2htmlis a Pylint plugin that adds a new output format:jsonextended. By default, thejsonformat contains only a list of messages,
and this new format contains also metrics, such the number of analysed
statements, or the list of dependencies.The configuration above can be tested using the command line instead:(venv) $ pylint --load-plugins=pylint_json2html \
                --output-format=jsonextended your_package > pylint.jsonThen, you will be able to use the JSON extended report to generate an HTML
report:(venv) $ pylint-json2html -f jsonextended -o pylint.html pylint.jsonAnd voilà!Custom TemplateThis plugin uses a Jinja2 template to generate the HTML output, but you may
need your own template. For that purpose, you can use the option-t/--template, like this:(venv) $ pylint-json2html -f jsonextended -t custom.tpl -o pylint.html pylint.jsonReportIn your template you have access to areportobject:report.score: score given by pylint, available only withjsonextendedformatreport.previous_score: previous score given by pylint, available only withjsonextendedformatreport.modules: a list of 2-value tuple:(module, messages)Themoduleobject:module.name: name of the modulemodule.path: path to the module's fileThemessagesvalue is a list of dict, each with the following keys:linecolumntypesymbolmessage-idobjmessageMetricsIn your template you have access to ametricsdict with the following keys:types,symbols,modules,paths. Each of them contains a dict.EncodingThe default template contains that header:<meta charset="utf-8">So if you want to use a different output encoding, make sure that:you can actually encode the characters from pylint's output with that
encodingand also that you use your own custom template to change that meta tag,
otherwise that might not look very good in a browser