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
|
# flake8-cognitive-complexity
[](https://travis-ci.org/Melevir/flake8-cognitive-complexity)
[](https://codeclimate.com/github/Melevir/flake8-cognitive-complexity/maintainability)
[](https://codeclimate.com/github/Melevir/flake8-cognitive-complexity/test_coverage)
[](https://badge.fury.io/py/flake8-cognitive-complexity)

An extension for flake8 that validates cognitive functions complexity.
Cognitive complexity is analog of cyclomatic complexity, that measure
how difficult to understand piece of code. Introduced by [G. Ann Campbell](https://github.com/ganncamp)
and currently used by SonarSource, CodeClimate and others.
You can find more readings about cognitive complexity in
[cognitive-complexity readme file](https://github.com/Melevir/cognitive_complexity/blob/master/README.md#what-is-cognitive-complexity).
Default complexity is 7, can be configured via `--max-cognitive-complexity` option.
## Installation
```terminal
pip install flake8-cognitive-complexity
```
## Example
```python
def f(a, b):
if a:
for i in range(b):
if b:
return 1
```
Usage:
```terminal
$ flake8 --max-cognitive-complexity=3 test.py
text.py:1:5: CCR001 Cognitive complexity is too high (6 > 3)
```
Tested on Python 3.7.x and flake8 3.7.8.
## Error codes
| Error code | Description |
|:----------:|:----------------------------------------:|
| CCR001 | Cognitive complexity is too high (X > Y) |
|