I have a large source repository split across multiple projects. I would like to produce a report about the health of the source code, identifying problem areas that need to
Use flake8, which provides pep8, pyflakes, and cyclomatic complexity analysis in one tool
For checking cyclomatic complexity, there is of course the mccabe package.
Installation:
$ pip install --upgrade mccabe
Usage:
$ python -m mccabe --min=6 path/to/myfile.py
Note the threshold of 6 above. Per this answer, scores >5 probably should be simplified.
Sample output with --min=3
:
68:1: 'Fetcher.fetch' 3
48:1: 'Fetcher._read_dom_tag' 3
103:1: 'main' 3
It can optionally also be used via pylint-mccabe or pytest-mccabe, etc.
For static analysis there is pylint and pychecker. Personally I use pylint as it seems to be more comprehensive than pychecker.
For cyclomatic complexity you can try this perl program, or this article which introduces a python program to do the same
For cyclomatic complexity you can use radon
: https://github.com/rubik/radon
(Use pip
to install it: pip install radon
)
Additionally it also has these features:
Pycana works like charm when you need to understand a new project!
PyCAna (Python Code Analyzer) is a fancy name for a simple code analyzer for python that creates a class diagram after executing your code.
See how it works: http://pycana.sourceforge.net/
output:
There is a tool called CloneDigger that helps you find similar code snippets.