ondivi

ondivi is a Python script filtering coding violations, identified by static analysis, only for changed lines in a Git repo.

pip install ondivi  # however we recommend to use `poetry`

Then you can integrate ondivi with your linter. Below is an example of how to use ondivi with flake8:

flake8 script.py | ondivi

Optionally, you can configure ondivi to filter violations based on a baseline commit or branch, and specify a custom format for parsing linter messages.

flake8 script.py | ondivi --baseline master --format "{filename}:{line_num:d}{other}"

Here is a detailed guide on how to set up ondivi for your project.

Baseline Concept

When your project is old, you cannot just install and use a new linter because your codebase will contain many violations. Some of them can be auto-formatted, and some of them can be silenced. But, what if there are still too many of them to fix right here and right now?

Let me introduce the baseline concept in ondivi:

Specify the baseline commit or branch which contains your legacy code. Run your linter and pipe its output to ondivi:

flake8 script.py | ondivi --baseline master

This will filter out violations present in the specified baseline, allowing you to focus only on new violations.

Further Reading

For more information on ondivi and advanced usage, please refer to the official repository: ondivi GitHub repository

Support

flakeheaven and flakehell are not supported because they rely on internal flake8 API, which can lead to compatibility issues as flake8 evolves. In contrast, ondivi uses only the text output of violations and the state of Git repository, making it more robust and easier to maintain.

ondivi is actively maintained and supported. If you encounter any issues or have questions, please create an issue on the GitHub repository.