Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
from wily import logger
from wily.operators import BaseOperator, Metric, MetricType
class CyclomaticComplexityOperator(BaseOperator):
"""Cyclomatic complexity operator."""
name = "cyclomatic"
defaults = {
"exclude": None,
"ignore": None,
"min": "A",
"max": "F",
"no_assert": True,
"show_closures": False,
"order": radon.complexity.SCORE,
"include_ipynb": True,
"ipynb_cells": True,
}
metrics = (
Metric(
"complexity",
"Cyclomatic Complexity",
float,
MetricType.AimLow,
statistics.mean,
),
)
default_metric_index = 0 # MI
'''Analyze the files as specified in *args*. Logging is done through the
given *logger*.
The *args* object should have the following attributes:
* ``path``: the file to analyze.
* ``exclude`` and ``ignore``: the patterns specifying which files to
exclude and which directories to ignore.
* ``no_assert``: if ``True``, ``assert`` statements will not be counted
towards increasing the cyclomatic complexity.
* ``absolute``, ``modules`` and ``average``: the threshold for the
complexity.
'''
config = Config(
exclude=args.exclude,
ignore=args.ignore,
order=SCORE,
no_assert=args.no_assert,
show_closures=False,
min='A',
max='F',
)
h = CCHarvester(args.path, config)
results = h._to_dicts()
return find_infractions(args, logger, results), results