pylint-json2html


Namepylint-json2html JSON
Version 0.5.0 PyPI version JSON
download
home_pagehttps://github.com/Exirel/pylint-json2html
SummaryPylint JSON report to HTML
upload_time2023-11-11 10:56:41
maintainer
docs_urlNone
authorFlorian Strzelecki
requires_python
licenseMPL-2.0
keywords pylint report quality
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pylint-json2html

A 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 its [1.7 version](https://pylint.readthedocs.io/en/latest/whatsnew/1.7.html#removed-changes),
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?

## Installation

To install this tool, use pip:

    (venv) $ pip install pylint-json2html

You can always download the sources from the github repository, and use the
`setup.py` file to `install` or `develop`, but I would not recommend that
unless you plan to contribute to this small project of mine.

## Usage

My favorite way of using `pylint` and `pylint-json2html` is this one:

    (venv) $ pylint my_package | pylint-json2html -o pylint.html

Provided that you configure your Pylint config file with:

    [REPORTS]
    output-format=json

But you can generate first a JSON file, then use `pylint-json2html` to read it:

    (venv) $ pylint your_package > pylint.json
    (venv) $ pylint-json2html -o pylint.html pylint.json

You can also redirect `pylint-json2html`'s stdout:

    (venv) $ pylint-json2html pylint.json > pylint.html

You 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.json

This is especially usefull when your locale is something like `cp1252` or
`latin1`, 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 Report

Actually, I lied about my favorite way, it is this one:

    (venv) $ pylint my_package | pylint-json2html -f jsonextended -o pylint.html

With this Pylint configuration:

    [MASTER]
    load-plugins=pylint_json2html

    [REPORTS]
    output-format=jsonextended

The `pylint_json2html` is a Pylint plugin that adds a new output format:
`jsonextended`. By default, the `json` format 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.json

Then, you will be able to use the JSON extended report to generate an HTML
report:

    (venv) $ pylint-json2html -f jsonextended -o pylint.html pylint.json

And voilĂ !

## Custom Template

This 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.json

### Report

In your template you have access to a `report` object:

* `report.score`: score given by pylint, available only with
  `jsonextended` format
* `report.previous_score`: previous score given by pylint, available only with
  `jsonextended` format
* `report.modules`: a list of 2-value tuple: `(module, messages)`

The `module` object:

* `module.name`: name of the module
* `module.path`: path to the module's file

The `messages` value is a list of dict, each with the following keys:

* `line`
* `column`
* `type`
* `symbol`
* `message-id`
* `obj`
* `message`

### Metrics

In your template you have access to a `metrics` dict with the following keys:
`types`, `symbols`, `modules`, `paths`. Each of them contains a dict.

### Encoding

The default template contains that header:

    <meta charset="utf-8">

So if you want to use a different output encoding, make sure that:

1. you can actually encode the characters from pylint's output with that
   encoding
2. and also that you use your own custom template to change that meta tag,
   otherwise that might not look very good in a browser

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Exirel/pylint-json2html",
    "name": "pylint-json2html",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "pylint report quality",
    "author": "Florian Strzelecki",
    "author_email": "florian.strzelecki@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/32/88/fc708985fc2fcd577729a4792e3f550116e43286a4c2bdba53d5ad5d5323/pylint-json2html-0.5.0.tar.gz",
    "platform": null,
    "description": "# pylint-json2html\n\nA pylint JSON report file to HTML: pylint is used to generate a JSON report,\nand this tool will transform this report into an HTML document:\n\n    usage: pylint-json2html [-h] [-o FILENAME] [-e OUTPUT_ENCODING]\n                            [-t FILENAME] [-f FORMAT] [FILENAME]\n\n    Transform Pylint JSON report to HTML\n\n    positional arguments:\n    FILENAME              Pylint JSON report input file (or stdin)\n\n    optional arguments:\n    -h, --help          show this help message and exit\n    -o FILENAME, --output FILENAME\n                        Pylint HTML report output file (or stdout)\n    -e ENCODING, --encoding ENCODING\n                        Encoding used to write output file (if not stdout);\n                        default to utf-8\n    -t FILENAME, --template FILENAME\n                        Jinja2 custom template to generate report\n    -f FORMAT, --input-format FORMAT\n                        Pylint JSON Report input type (json or jsonextended)\n\n## Why?\n\nSince its [1.7 version](https://pylint.readthedocs.io/en/latest/whatsnew/1.7.html#removed-changes),\nPylint does not provide an HTML output format. The release notes say that:\n\n> It was lately a second class citizen in Pylint, being mostly neglected.\n> Since we now have the JSON reporter, it can be used as a basis for building\n> more prettier HTML reports than what Pylint can currently generate.\n> This is part of the effort of removing cruft from Pylint, by removing less\n> used features.\n\nAnd I agree with that statements. Few people use the HTML reports, and pylint\nis getting old. Its core features are complex and they require a lot of times\nand efforts - and I am thankful for that software to exist in the first place!\n\nSo here it is: a plugin to fulfill my own needs. I share it as open-source\nbecause why not?\n\n## Installation\n\nTo install this tool, use pip:\n\n    (venv) $ pip install pylint-json2html\n\nYou can always download the sources from the github repository, and use the\n`setup.py` file to `install` or `develop`, but I would not recommend that\nunless you plan to contribute to this small project of mine.\n\n## Usage\n\nMy favorite way of using `pylint` and `pylint-json2html` is this one:\n\n    (venv) $ pylint my_package | pylint-json2html -o pylint.html\n\nProvided that you configure your Pylint config file with:\n\n    [REPORTS]\n    output-format=json\n\nBut you can generate first a JSON file, then use `pylint-json2html` to read it:\n\n    (venv) $ pylint your_package > pylint.json\n    (venv) $ pylint-json2html -o pylint.html pylint.json\n\nYou can also redirect `pylint-json2html`'s stdout:\n\n    (venv) $ pylint-json2html pylint.json > pylint.html\n\nYou can specify the output encoding used to write to your file. Note that you\ncan't do that with stdout (you will have to configure your environment's locale\nif you want to control that):\n\n    (venv) $ pylint-json2html -o pylint.html -e utf-8 pylint.json\n\nThis is especially usefull when your locale is something like `cp1252` or\n`latin1`, and you want to make sure your output file is properly written as\nutf-8 (as it should be when working with Python file).\n\n## Extended Report\n\nActually, I lied about my favorite way, it is this one:\n\n    (venv) $ pylint my_package | pylint-json2html -f jsonextended -o pylint.html\n\nWith this Pylint configuration:\n\n    [MASTER]\n    load-plugins=pylint_json2html\n\n    [REPORTS]\n    output-format=jsonextended\n\nThe `pylint_json2html` is a Pylint plugin that adds a new output format:\n`jsonextended`. By default, the `json` format contains only a list of messages,\nand this new format contains also metrics, such the number of analysed\nstatements, or the list of dependencies.\n\nThe configuration above can be tested using the command line instead:\n\n    (venv) $ pylint --load-plugins=pylint_json2html \\\n                    --output-format=jsonextended your_package > pylint.json\n\nThen, you will be able to use the JSON extended report to generate an HTML\nreport:\n\n    (venv) $ pylint-json2html -f jsonextended -o pylint.html pylint.json\n\nAnd voil\u00e0!\n\n## Custom Template\n\nThis plugin uses a Jinja2 template to generate the HTML output, but you may\nneed your own template. For that purpose, you can use the option\n`-t/--template`, like this:\n\n    (venv) $ pylint-json2html -f jsonextended -t custom.tpl -o pylint.html pylint.json\n\n### Report\n\nIn your template you have access to a `report` object:\n\n* `report.score`: score given by pylint, available only with\n  `jsonextended` format\n* `report.previous_score`: previous score given by pylint, available only with\n  `jsonextended` format\n* `report.modules`: a list of 2-value tuple: `(module, messages)`\n\nThe `module` object:\n\n* `module.name`: name of the module\n* `module.path`: path to the module's file\n\nThe `messages` value is a list of dict, each with the following keys:\n\n* `line`\n* `column`\n* `type`\n* `symbol`\n* `message-id`\n* `obj`\n* `message`\n\n### Metrics\n\nIn your template you have access to a `metrics` dict with the following keys:\n`types`, `symbols`, `modules`, `paths`. Each of them contains a dict.\n\n### Encoding\n\nThe default template contains that header:\n\n    <meta charset=\"utf-8\">\n\nSo if you want to use a different output encoding, make sure that:\n\n1. you can actually encode the characters from pylint's output with that\n   encoding\n2. and also that you use your own custom template to change that meta tag,\n   otherwise that might not look very good in a browser\n",
    "bugtrack_url": null,
    "license": "MPL-2.0",
    "summary": "Pylint JSON report to HTML",
    "version": "0.5.0",
    "project_urls": {
        "Homepage": "https://github.com/Exirel/pylint-json2html"
    },
    "split_keywords": [
        "pylint",
        "report",
        "quality"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "85c08a2ae202f31695050610a3b2553db47fe380bd3126f2c2b3da15fbe73f17",
                "md5": "884d1a2ab8c201fde4bbf769b966771c",
                "sha256": "966d29528de61d05f6a9f155b812fbd934d3537910a1ea5d7dd7edf96e132216"
            },
            "downloads": -1,
            "filename": "pylint_json2html-0.5.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "884d1a2ab8c201fde4bbf769b966771c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 13271,
            "upload_time": "2023-11-11T10:56:40",
            "upload_time_iso_8601": "2023-11-11T10:56:40.459241Z",
            "url": "https://files.pythonhosted.org/packages/85/c0/8a2ae202f31695050610a3b2553db47fe380bd3126f2c2b3da15fbe73f17/pylint_json2html-0.5.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3288fc708985fc2fcd577729a4792e3f550116e43286a4c2bdba53d5ad5d5323",
                "md5": "0eaa88f41f61f7479567ba2c86a6c524",
                "sha256": "e8b36e58ecbbe58ea9f98f16ee02809faf268d444255738d8f1c206633061d49"
            },
            "downloads": -1,
            "filename": "pylint-json2html-0.5.0.tar.gz",
            "has_sig": false,
            "md5_digest": "0eaa88f41f61f7479567ba2c86a6c524",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 13154,
            "upload_time": "2023-11-11T10:56:41",
            "upload_time_iso_8601": "2023-11-11T10:56:41.927639Z",
            "url": "https://files.pythonhosted.org/packages/32/88/fc708985fc2fcd577729a4792e3f550116e43286a4c2bdba53d5ad5d5323/pylint-json2html-0.5.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-11 10:56:41",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Exirel",
    "github_project": "pylint-json2html",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "pylint-json2html"
}
        
Elapsed time: 0.13733s