Skip to main content

Automatically add code comments to silence the output of pylint

Project description

pylint-silent

Automatically add code comments to silence the output of pylint.

pylint can be very useful in finding software bugs in python code. A good article demonstrating this is Why Pylint is both useful and unusable, and how you can actually use it. In short, when running pylint on existing code, it tends to output tons of messages.

pylint-silent is suppose to make pylint usable. The idea is to automatically add code comments of the form # pylint: disable to silent every pylint message. This will allow you to deploy pylint in a Continuous Integration (CI) setup. If a code commit introduces new pylint messages, these will be visible immediately.

On top of that, all existing pylint messages will show up as comments in the code. When you work on a piece of code and see a pylint comment, you can try to fix it.

Install

pylint-silent can be installed from pypi:

pip install pylint-silent

Usage

The basic workflow for running pylint-silent for the first time is:

pylint my_package > pylint.log
pylint-silent apply pylint.log
pylint my_package  # This should return a perfect 10.00 score.

WARNING: pylint-silent modifies python files in place. It is assumed that you are using some version control system.

For example, if pylint produced this message:

test.py:35:10: W0613: Unused argument 'name' (unused-argument)

pylint-silent would add this comment:

def func(name):  # pylint: disable=unused-argument

For subsequent runs, you probably want to clear the old comments first:

pylint-silent reset my_package/*.py  # List all python files here
pylint my_package > pylint.log
pylint-silent apply pylint.log

There are two reasons to clear old comments:

  1. Remove stale comments to code that was already fixed.
  2. pylint-silent does not know how to handle lines that already have a # pylint comment in them.

To reset or show statistics on all python files in a folder you might want to use the find command:

find my_package -name "*.py" -exec pylint-silent stats {} +
find my_package -name "*.py" -exec pylint-silent reset {} +

Known limitations

In some cases pylint-silent may break your code:

FAVICON = base64.decodestring("""  # pylint: disable=deprecated-method
...

Luckily, you can simply run pylint a second time to detect such cases. In this case pylint would ignore the comment because it is part of the string. Therefore, the warning message would still show up. This code has to be fixed manually:

FAVICON = base64.decodestring(  # pylint: disable=deprecated-method
"""...

Another issue is that messages that involve multiple files cannot be silenced. I'm aware of two such messages:

  • cyclic-import
  • duplicate-code

You could just disable these messages. Personally I think that these are relevant messages. So instead I just modify pylint score calculation to something like:

evaluation=10.0 + 0.15 - 10 * ((float(5 * error + warning + refactor + convention) / statement) * 10)

The 0.15 artificially raises the score to 10.0 and makes pylint return a success code. The factor of 10 * increases the score sensitivity, which, by default, is way too low even for a medium sized project.

pylint also lets you disable a checks on a block of code:

# pylint: disable=unused-import
import time
import sys
# pylint: enable=unused-import

pylint-silent would ignore these blocks. pylint-silent reset would not clear these messages and pylint-silent stats would not count them.

Alternatives

An alternative solution to pylint noise is pylint-ignore. Whichever option you choose, I recommend reading their documentation about how pylint should be used.

Summary

pylint's motto is: It's not just a linter that annoys you!

pylint-silent helps pylint live up to its motto.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylint-silent-1.1.2.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pylint_silent-1.1.2-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file pylint-silent-1.1.2.tar.gz.

File metadata

  • Download URL: pylint-silent-1.1.2.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for pylint-silent-1.1.2.tar.gz
Algorithm Hash digest
SHA256 bd9f6ce96c4e6bb96c8ff02dc6c7b76785f8e30098a72ddd8ce8f14d5822cefb
MD5 c41b7b859fa02f4444b85861cb102abc
BLAKE2b-256 2c1825e615afe641b6cfc2089d867cee5841950059f69719fe0f8cc431885a65

See more details on using hashes here.

File details

Details for the file pylint_silent-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: pylint_silent-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for pylint_silent-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 875d3a7141e1c2591e4cad4ffe00228cd5b207fee0788312f754b9cc8b0b64ed
MD5 f8bd6c058ffefbf7680f74bda8ab09f0
BLAKE2b-256 01e71fdcacbedfa150c2394b1e6f89513bceb28fc5e96b36ea1b05c058a8009a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page