Skip to main content

Monitor code metrics for Python on your CI server

Project description

Travis-CI badge Coveralls badge PyPI latest version badge Download format Xenon license

Xenon is a monitoring tool based on Radon. It monitors your code’s complexity. Ideally, Xenon is run every time you commit code. Through command line options, you can set various thresholds for the complexity of your code. It will fail (i.e. it will exit with a non-zero exit code) when any of these requirements is not met.

Installation

With Pip:

$ pip install xenon

Or download the source and run the setup file (requires setuptools):

$ python setup.py install

Xenon is tested with all versions of Python from 2.7 to 3.6 as well as PyPy.

Usage

Typically you would use Xenon in two scenarios:

  1. As a git commit hook: to make sure that your code never exceeds some complexity values.

  2. On a continuous integration server: as a part of your build, to keep under control, as above, your code’s complexity. See Xenon’s .travis.yml file for an example usage.

The command line

Everything boils down to Xenon’s command line usage. To control which files are analyzed, you use the options -e, --exclude and -i, --ignore. Both accept a comma-separated list of glob patterns. The value usually needs quoting at the command line, to prevent the shell from expanding the pattern (in case there is only one). Every filename is matched against the exclude patterns. Every directory name is matched against the ignore patterns. If any of the patterns matches, Xenon won’t even descend into them.

The actual threshold values are defined through these options:

  • -a, --max-average: Threshold for the average complexity (across all the codebase).

  • -m, --max-modules: Threshold for modules complexity.

  • -b, --max-absolute: Absolute threshold for block complexity.

All of these options are inclusive.

An actual example

$ xenon --max-absolute B --max-modules A --max-average A

or, more succinctly:

$ xenon -b B -m A -a A

With these options Xenon will exit with a non-zero exit code if any of the following conditions is met:

  • At least one block has a rank higher than B (i.e. C, D, E or F).

  • At least one module has a rank higher than A.

  • The average complexity (among all of the analyzed blocks) is ranked with B or higher.

Other resources

For more information regarding cyclomatic complexity and static analysis in Python, please refer to Radon’s documentation, the project on which Xenon is based on:

Project details


Download files

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

Source Distribution

xenon-0.5.4.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xenon-0.5.4-py2.py3-none-any.whl (9.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file xenon-0.5.4.tar.gz.

File metadata

  • Download URL: xenon-0.5.4.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for xenon-0.5.4.tar.gz
Algorithm Hash digest
SHA256 ac86e17741c6b6c0cc7e38e48b2d9f1cb9918e78f7a12f892d798ba73d5c2c09
MD5 066a965065bf080db35f5b60aab81721
BLAKE2b-256 4e76529d684bd7a4b373d533b024b4517e8f4fb71c5df87ff8986f9acdb5e25e

See more details on using hashes here.

File details

Details for the file xenon-0.5.4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for xenon-0.5.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 03c6fa6820ca260a85931cec44bd60ae60194eec7eb22f53ba160b3c9578cdf1
MD5 b24bdcd6066c36fcc6558b2d15d2229d
BLAKE2b-256 7b05d2657d7b7858f904d3c6cf32f7f1680a157eac7586d951a313d51b0590be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page