complexipy is a fast Python code analysis tool that measures cognitive complexity. Written in Rust, it helps developers identify functions that are difficult to understand and maintain, highlighting opportunities to simplify complicated code.
Unlike traditional cyclomatic complexity measurements, which concentrate on the number of independent paths through a program, cognitive complexity attempts to estimate how difficult code is for a human reader to follow. It considers factors such as nested control structures and interruptions to normal program flow.
The application can analyse individual files or entire projects, report functions exceeding configurable complexity thresholds and compare results against earlier Git revisions. It also offers editor integration and can be incorporated into automated code quality checks.
This is free and open source software.
Key Features
- Measures the cognitive complexity of Python functions, taking account of nesting and control flow.
- Fast analysis engine implemented in Rust.
- Supports configurable complexity thresholds for identifying functions that are difficult to maintain.
- Compares complexity against Git revisions to identify regressions introduced by code changes.
- Provides suggestions for refactoring functions that exceed complexity thresholds.
- Offers JSON output and a Python API for integration with other tools.
- Integrates with GitHub Actions and pre-commit hooks for automated complexity checks.
- Includes a language server with editor diagnostics, inlay hints and hover information, together with a VS Code extension.
Website: github.com/rohaquinlop/complexipy
Support:
Developer: Rodrigo Haquin and contributors
License: MIT License
complexipy is written in Rust and Python. Learn Rust with our recommended free books and free tutorials. Learn Python with our recommended free books and free tutorials.
Related Software
| Python Linters | |
|---|---|
| Ruff | Extremely fast Python linter and code formatter |
| ty | Fast Python type checker |
| Mypy | Static type checker for Python |
| Bandit | Find security issues in Python code |
| Pylint | Static code analyser |
| wemake-python-styleguide | Flake8 plugin |
| pycodestyle | Check Python code against style conventions in PEP 8 |
| Pyflakes | Checks Python source files for errors |
| Vulture | Find dead code |
| Pyrefly | Fast type checker and language server |
| Flake8 | Wrapper around PyFlakes and pycodestyle |
| Beartype | Near-real-time hybrid runtime-static type-checker |
| Radon | Computes various metrics from Python code |
| Pyright | Full-featured, standards-compliant static type checker |
| cython-lint | Lint Cython files |
| basedpyright | Fork of pyright |
| Refurb | Modernize Python codebases |
| Pylama | Code audit tool for Python |
| Prospector | Brings together the functionality of other Python analysis tools |
| deptry | Check for dependency issues |
| Fixit | Highly configurable linting framework |
| Pyroma | Rates how well a Python project compiles |
| pydoclint | Python docstring linter |
| YALA | Yet Another Linter Aggregator |
Read our verdict in the software roundup.
Explore our carefully curated directory of recommended free and open source software, covering every major software category.The directory forms part of our extensive collection of articles for Linux enthusiasts. It includes hundreds of detailed reviews, together with free and open source alternatives to proprietary software from companies such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk. LinuxLinks also covers interesting projects worth exploring, Linux-compatible hardware, free programming books and tutorials, and much more. Know a useful free and open source Linux application that we haven’t covered? Tell us about it using our submission form. |


Please read our Comment Policy before commenting.