Skip to main content

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.

Changes

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

Download files

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

Source Distribution

mccabe-0.5.2.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

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

mccabe-0.5.2-py2.py3-none-any.whl (8.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file mccabe-0.5.2.tar.gz.

File metadata

  • Download URL: mccabe-0.5.2.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for mccabe-0.5.2.tar.gz
Algorithm Hash digest
SHA256 3473f06c8b757bbb5cdf295099bf64032e5f7d6fe0ec2f97ee9b23cb0a435aff
MD5 01fe4ba7270322aabc0fdf3f2189c5cd
BLAKE2b-256 f1b7ff36d1a163079688633a776e1717b5459caccbb68973afab2aa8345ac40f

See more details on using hashes here.

File details

Details for the file mccabe-0.5.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for mccabe-0.5.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 91cc38b2c7636aaf1903e06d96ee960fb3dff9ca3afc595627c9a638f8e86d2b
MD5 a8d6b93fd1a93478f39076cb0fc4d65c
BLAKE2b-256 179c66792b5f917a09f7e433dfd6e20ac12964006e1d794f799c2333afc10be1

See more details on using hashes here.

Release history Release notifications | RSS feed

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.3

2 files

This release

0.5.2 This release

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

0.3

2 files

0.2.1

1 file

0.2

1 file

0.0.0

Supported by

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