Skip to main content

Pybuilder plugin for radon cyclomatic complexity

Project description

GitHub Workflow Status Code Coverage Code Grade PyPI version

pybuilder-radon

A pybuilder plugin that checks the cyclomatic complexity of your project using radon. For more information about radon refer to the radon pypi page.

To add this plugin into your pybuilder project, add the following line near the top of your build.py:

use_plugin('pypi:pybuilder_radon')

NOTE if you are using Pybuilder version v0.11.x, then specify the following version of the plugin:

use_plugin('pypi:pybuilder_radon', '~=0.1.2')

cyclomatic complexity

Cyclomatic complexity is a software metric used to indicate the complexity of a program. It is a quantitative measure of the number of linearly independent paths through a program's source code. Cyclomatic complexity can be used to measure code complexity. The higher the complexity score the more complex the code, which typically translates to the code being more difficult to understand, maintain and to test. The number of the Cyclomatic complexity depends on how many different execution paths or control flow of your code can execute depending on various inputs. The metrics for Cyclomatic Complexity are:

Score Complexity Risk Type
1 to 10 simple not much risk
11 to 20 complex low risk
21 to 50 too complex medium risk, attention
more than 50 very complex unable to test, high risk

Refer to cyclomatic complexity for more information.

Pybuilder radon properties

The pybuilder task pyb radon will use radon to to analyze your project and display the average cyclomatic complexity, verbose mode will display complexity of all classes, functions and methods analyzed. The following plugin properties are available to further configure the plugin's execution.

Name Type Default Value Description
radon_break_build_average_complexity_threshold float None Fail build if overall average complexity is greater than the specified threshold
radon_break_build_complexity_threshold float None Fail build if complexity of any class, function or method exceeds the specified threshold

The plugin properties are set using project.set_property, for example setting the following properties, pyb complexity will fail if the average overall complexity score of the project exceeds 4 or if the complexity score of any class, method or function exceeds 10:

project.set_property('radon_break_build_average_complexity_threshold', 4)
project.set_property('radon_break_build_complexity_threshold', 10)

Development

Clone the repository and ensure the latest version of Docker is installed on your development server.

Build the Docker image:

docker image build \
-t \
pybradon:latest .

Run the Docker container:

docker container run \
--rm \
-it \
-v $PWD:/pybuilder-radon \
pybradon:latest \
/bin/sh

Execute the build:

pyb -X

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pybuilder-radon, version 0.2.3
Filename, size File type Python version Upload date Hashes
Filename, size pybuilder_radon-0.2.3-py3-none-any.whl (4.7 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size pybuilder-radon-0.2.3.tar.gz (4.3 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page