Check and improve code quality and complexity¶
If the quality of software is neglected, this quickly leads to superfluous code, also known as cruft. This then slows down the further development of functions. This also happens to great teams who are not allowed to spend time maintaining high code quality. High code quality reduces cruft to a minimum and allows the team to add features with less effort, time and cost. Although there are some indicators that can be used to measure internal quality, these can only provide an initial indication of further productivity. However, a recent study indicates that low quality code took more than twice as long to fix as high quality code, and that low quality code had a 15 times higher defect density.
In the following, I will show you some Code-Smells and design principles and then some tools with which you can perform automated static analyses and reformat the code. You can integrate some of these tools into your editor as well as via the pre-commit framework. Finally, I’ll introduce you to Rope, a tool that supports you with refactorings.
See also
Checker¶
- flake8
is a wrapper around PyFlakes, pycodestyle and McCabe. However, automatic formatting, for example with Ruff, is even more convenient.
- Mypy
is a static type checker.
- Pytype
is a static analysis tool that derives types from your Python code without the need for type annotations.
- Wily
is a command line tool for checking the complexity of Python code in tests and applications.
- Pystra
analyses the structural reliability of Python code and summarises it in a report.
- Pysa
performs taint analysis to identify potential security problems. Pysa traces data streams from their origin to their endpoint and identifies vulnerable code.
- check-manifest
is a tool with which you can quickly check whether the file MANIFEST.in for Python packages is complete.
Formatter¶
- Ruff
is an extremely fast Python linter and code formatter written in Rust that can enforce the rules of flake8, isort, Black, Bandit, and others.
- Black
formats your code in a nice and deterministic format.
- isort
formats your
importstatements in separate and sorted blocks.- prettier
offers automatic formatters for other file types.
Refactoring¶
- Rope
is a Python refactoring library.
See also