Package: mccabe
Ned’s script to check McCabe complexity.This module provides a plugin forflake8, the Python code checker.InstallationYou can install, upgrade, or uninstallmccabewith these commands:$ pip install mccabe
$ pip install --upgrade mccabe
$ pip uninstall mccabeStandalone scriptThe 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 Flake8When bothflake8 2+andmccabeare installed, the plugin is
available inflake8:$ flake8 --version
2.0 (pep8: 1.4.2, pyflakes: 0.6.1, mccabe: 0.2)By default the plugin is disabled.  Use the--max-complexityswitch to
enable it.  It will emit a warning if the McCabe complexity of a function is
higher than the provided value:$ flake8 --max-complexity 10 coolproject
...
coolproject/mod.py:1204:1: C901 'CoolFactory.prepare' is too complex (14)This feature is quite useful for detecting over-complex code.  According to McCabe,
anything that goes beyond 10 is too complex.Flake8 has many features that mccabe does not provide. Flake8 allows users to
ignore violations reported by plugins with# noqa. Read more about this intheir documentation.
To silence violations reported bymccabe, place your# noqa: C901on
the function definition line, where the error is reported for (possibly a
decorator).LinksFeedback and ideas:http://mail.python.org/mailman/listinfo/code-qualityCyclomatic complexity:http://en.wikipedia.org/wiki/Cyclomatic_complexityNed Batchelder’s script:http://nedbatchelder.com/blog/200803/python_code_complexity_microtool.htmlMcCabe complexity:http://en.wikipedia.org/wiki/Cyclomatic_complexityChanges0.7.0 - 2021-01-23Drop support for all versions of Python lower than 3.6Add support for Python 3.8, 3.9, and 3.10Fix option declaration for Flake80.6.1 - 2017-01-26Fix signature forPathGraphingAstVisitor.defaultto match the signature
forASTVisitor0.6.0 - 2017-01-23Add support for Python 3.6Fix handling for missing statement types0.5.3 - 2016-12-14Report actual column number of violation instead of the start of the line0.5.2 - 2016-07-31When opening files ourselves, make sure we always name the file variable0.5.1 - 2016-07-28Set default maximum complexity to -1 on the class itself0.5.0 - 2016-05-30PyCon 2016 PDX releaseAdd support for Flake8 3.00.4.0 - 2016-01-27Stop testing on Python 3.2Add support for async/await keywords on Python 3.5 from PEP 04920.3.1 - 2015-06-14Includetest_mccabe.pyin releases.Always coerce themax_complexityvalue from Flake8’s entry-point to an
integer.0.3 - 2014-12-17Computation was wrong: the mccabe complexity starts at 1, not 2.Themax-complexityvalue 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-03Do not requiresetuptoolsin setup.py.  It works around an issue
withpipand Python 3.0.2 - 2013-02-22Rename project tomccabe.Provideflake8.extensionsetuptools entry point.Readmax-complexityfrom the configuration file.Rename argumentmin_complexitytothreshold.0.1 - 2013-02-11First release