<div dir="ltr"><div><div><div><div><div><div><div>Hi all<br><br></div>I came across some tools [1] & [2] that we could use to make sure we don't increase our code complexity.<br></div><br></div>Has anyone had any experience with these or other tools?<br><br></div>radon is the underlying reporting tool and xenon is a "monitor" - meaning it will fail if a threshold is reached.<br><br></div>To save you the time:<br>radon cc -nd heat<br>heat/engine/stack.py<br>    M 809:4 Stack.delete - E<br>    M 701:4 Stack.update_task - D<br>heat/engine/resources/server.py<br>    M 738:4 Server.handle_update - D<br>    M 891:4 Server.validate - D<br>heat/openstack/common/jsonutils.py<br>    F 71:0 to_primitive - D<br>heat/openstack/common/config/generator.py<br>    F 252:0 _print_opt - D<br>heat/tests/v1_1/fakes.py<br>    M 240:4 FakeHTTPClient.post_servers_1234_action - F<br><br></div>It ranks the complexity from A (best) upwards, the command above (-nd) says only show D or worse.<br></div><div>If you look at these methods they are getting out of hand and are  becoming difficult to understand.<br></div><div>I like the idea of having a threshold that says we are not going to just keep adding to the complexity<br></div><div>of these methods.<br></div><div><br></div>This can be enforced with:<br>xenon --max-absolute E heat<br>ERROR:xenon:block "heat/tests/v1_1/fakes.py:240 post_servers_1234_action" has a rank of F<br><br><div><div><div><div><div><div>[1] <a href="https://pypi.python.org/pypi/radon">https://pypi.python.org/pypi/radon</a><br>[2] <a href="https://pypi.python.org/pypi/xenon">https://pypi.python.org/pypi/xenon</a><br><br></div><div>If people are open to this, I'd like to add these to the test-requirements and trial this in Heat<br></div><div>(as part of the pep8 tox target).<br></div><div><br></div><div>Regards<br></div><div>Angus<br></div></div></div></div></div></div></div>