single |
McCabe complexity checker
=========================
Ned's script to check McCabe complexity.
This module provides a plugin for flake8, the Python code checker.
Installation
------------
You can install, upgrade, uninstall mccabe with these commands::
$ pip install mccabe
$ pip install --upgrade mccabe
$ pip uninstall mccabe
Standalone script
-----------------
The complexity checker can be used directly::
$ python -m mccabe --min 5 mccabe.py
("185:1: 'PathGraphingAstVisitor.visitIf'", 5)
("71:1: 'PathGraph.to_dot'", 5)
("245:1: 'McCabeChecker.run'", 5)
("283:1: 'main'", 7)
("203:1: 'PathGraphingAstVisitor.visitTryExcept'", 5)
("257:1: 'get_code_complexity'", 5)
Plugin for Flake8
-----------------
When both ``flake8 2.0 and mccabe`` are installed, the plugin is
available in flake8::
$ flake8 --version
2.0 (pep8: 1.4.2, pyflakes: 0.6.1, mccabe: 0.2)
By default the plugin is disabled. Use the ``--max-complexity`` switch to
enable it. It will emit a warning if the McCabe complexity of a function
is
higher that the value::
$ flake8 --max-complexity 10 coolproject
...
coolproject/mod.py:1204:1: C901 'CoolFactory.prepare' is too complex
(14)
This feature is quite useful to detect over-complex code. According to
McCabe,
anything that goes beyond 10 is too complex.
Links
-----
* Feedback and ideas: http://mail.python.org/mailman/listinfo/code-quality
* Cyclomatic complexity:
http://en.wikipedia.org/wiki/Cyclomatic_complexity.
* Ned Batchelder's script:
http://nedbatchelder.com/blog/200803/python_code_complexity_microtool.html
Changes
-------
0.6.1 - 2017-01-26
``
* Fix signature for ``PathGraphingAstVisitor.default to match the signature
for ASTVisitor``
0.6.0 - 2017-01-23
``
* Add support for Python 3.6
* Fix handling for missing statement types
0.5.3 - 2016-12-14
``
* Report actual column number of violation instead of the start of the line
0.5.2 - 2016-07-31
``
* When opening files ourselves, make sure we always name the file variable
0.5.1 - 2016-07-28
``
* Set default maximum complexity to -1 on the class itself
0.5.0 - 2016-05-30
``
* PyCon 2016 PDX release
|