File: README.rst

package info (click to toggle)
python-mccabe 0.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 100 kB
  • ctags: 61
  • sloc: python: 283; makefile: 32
file content (89 lines) | stat: -rw-r--r-- 2,084 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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.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 ``flint-mccabe`` 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