jones-complexity

Jones Complexity checker, plugin for flake8


Keywords
flake8
License
Saxpath
Install
pip install jones-complexity==0.1.1

Documentation

JonesComplexity Build Status

Flake8 extension to calculate per-line complexity and total code density.

Installation

$ pip install jones-complexity

Usage (Standalone)

$ python -m jones_complexity --min 5 your_file.py

Usage (flake8)

$ flake8 --max-line-complexity 15 --max-jones-score 8 yourproject

What is this?

Because

if user.get_full_name().toUpper().split(' ')[0] == 'ALICE':
    return True

is harder to read and maintain than

if first_name == 'Alice':
   return True

Shamelessly named after myself, in the tradition of McCabe and Halstead.

Examples

Itself:

$ python jones_complexity.py jones_complexity.py
Line counts:
{
    "39": 19, 
    "46": 15, 
    "137": 12, 
    "115": 12, 
    [...]
    "18": 1, 
    "9": 1, 
    "148": 1
}
Jones Score:
4.0

PyEsprima:

$ p jones_complexity.py pyesprima.py 
Line counts:
{
    "4182": 265, 
    "3688": 190, 
    "4186": 189, 
    "48": 189, 
    "4181": 164, 
    [...]
    "1201": 1, 
    "3728": 1
}
Jones Score:
9.0