I’m trying to find a tool to check for coding style in python.
For PHP I’ve seen there is the Code Sniffer, and a small perl script used by Drupal. Is there such a tool for python code?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
In the past I’ve mainly use PyLint – it can highlight when you used an undefined variable, when you import things without using them and so on.
It can be a bit verbose, complaining about things like lines being over 80 character long, variable not matching to specific regex’s, classes having too few public methods, methods missing docs-trings.
For example, for script..
PyLint generates the following messages:
They are all valid complaints, but I tend to disable a lot of the convention and refactoring messages. You can disable specific messages, either as comments in your code:
..or as command line arguments to the PyLint command:
With the above messages disabled, it generates the following messages for the above code:
PyLint also generates a “code report”, including how many lines of code/comments/docstring/whitespace the file has, number of messages per-category, and gives your code a “score” – 10 being no messages, 0 generally being a syntax error
Another option is PyFlakes, which I find a little less excessively-verbose (I’ve recently started using it in place of PyLint). Again using the above script, PyFlakes gives the following messages:
The final option I use is
pep8.py, which as the name suggests enforces PEP8. It is by far the most.. pedantic script, enforcing things like correct blank-lines before/after functions/classes, spacing around code, correct 4-space indentation and so on..Running on the code above, it produces the following:
It is mostly enforces stylistic things like correct whitespace, it does not do much static-analysis of the code like PyLint or PyFlakes, so I use pep8.py in conjunction with either PyLint or PyFlakes.
pep8.pywas originally announced on the python mailing list here, but the download link in this is now dead.. There’s a github mirror by cburroughs, with a few minor fixes at github.com/cburroughs/pep8.py, or you can grab the unmodified version from an older revisionPyChecker is another option, although I haven’t use it