[openstack-dev] [all] add cyclomatic complexity check to pep8 target

Angus Salkeld asalkeld at mirantis.com
Fri Oct 17 03:11:18 UTC 2014


Hi all

I came across some tools [1] & [2] that we could use to make sure we don't
increase our code complexity.

Has anyone had any experience with these or other tools?

radon is the underlying reporting tool and xenon is a "monitor" - meaning
it will fail if a threshold is reached.

To save you the time:
radon cc -nd heat
heat/engine/stack.py
    M 809:4 Stack.delete - E
    M 701:4 Stack.update_task - D
heat/engine/resources/server.py
    M 738:4 Server.handle_update - D
    M 891:4 Server.validate - D
heat/openstack/common/jsonutils.py
    F 71:0 to_primitive - D
heat/openstack/common/config/generator.py
    F 252:0 _print_opt - D
heat/tests/v1_1/fakes.py
    M 240:4 FakeHTTPClient.post_servers_1234_action - F

It ranks the complexity from A (best) upwards, the command above (-nd) says
only show D or worse.
If you look at these methods they are getting out of hand and are  becoming
difficult to understand.
I like the idea of having a threshold that says we are not going to just
keep adding to the complexity
of these methods.

This can be enforced with:
xenon --max-absolute E heat
ERROR:xenon:block "heat/tests/v1_1/fakes.py:240 post_servers_1234_action"
has a rank of F

[1] https://pypi.python.org/pypi/radon
[2] https://pypi.python.org/pypi/xenon

If people are open to this, I'd like to add these to the test-requirements
and trial this in Heat
(as part of the pep8 tox target).

Regards
Angus
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20141017/df3f1aa1/attachment.html>


More information about the OpenStack-dev mailing list