mccabe 0.6.1
McCabe checker, plugin for flake8
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
- Add support for Flake8 3.0
0.4.0 - 2016-01-27
- Stop testing on Python 3.2
- Add support for async/await keywords on Python 3.5 from PEP 0492
0.3.1 - 2015-06-14
- Include test_mccabe.py in releases.
- Always coerce the max_complexity value from Flake8’s entry-point to an integer.
0.3 - 2014-12-17
- Computation was wrong: the mccabe complexity starts at 1, not 2.
- The max-complexity value is now inclusive. E.g.: if the value is 10 and the reported complexity is 10, then it passes.
- Add tests.
0.2.1 - 2013-04-03
- Do not require setuptools in setup.py. It works around an issue with pip and Python 3.
0.2 - 2013-02-22
- Rename project to mccabe.
- Provide flake8.extension setuptools entry point.
- Read max-complexity from the configuration file.
- Rename argument min_complexity to threshold.
0.1 - 2013-02-11
- First release
| File | Type | Py Version | Uploaded on | Size | |
|---|---|---|---|---|---|
| mccabe-0.6.1-py2.py3-none-any.whl (md5) | Python Wheel | py2.py3 | 2017-01-26 | 8KB | |
| mccabe-0.6.1.tar.gz (md5) | Source | 2017-01-26 | 8KB | ||
- Author: Ian Cordasco
- Home Page: https://github.com/pycqa/mccabe
- Keywords: flake8 mccabe
- License: Expat license
-
Categories
- Development Status :: 5 - Production/Stable
- Environment :: Console
- Intended Audience :: Developers
- License :: OSI Approved :: MIT License
- Operating System :: OS Independent
- Programming Language :: Python
- Programming Language :: Python :: 2
- Programming Language :: Python :: 2.7
- Programming Language :: Python :: 3
- Programming Language :: Python :: 3.3
- Programming Language :: Python :: 3.4
- Programming Language :: Python :: 3.5
- Programming Language :: Python :: 3.6
- Topic :: Software Development :: Libraries :: Python Modules
- Topic :: Software Development :: Quality Assurance
- Package Index Owner: flox, graffatcolmingov
- Package Index Maintainer: graffatcolmingov
- DOAP record: mccabe-0.6.1.xml
