Metadata-Version: 2.4
Name: check-oldies
Version: 1.0.0
Summary: Warns about unattended branches and FIXME or TODO annotations
Author-email: Polyconseil <opensource+check-oldies@polyconseil.fr>
License-Expression: BSD-3-Clause
Project-URL: Homepage, https://github.com/Polyconseil/check-oldies
Project-URL: Documentation, https://check-oldies.readthedocs.io/en/latest/
Project-URL: Repository, https://github.com/Polyconseil/check-oldies
Project-URL: Issues, https://github.com/Polyconseil/check-oldies/issues
Project-URL: Changelog, https://github.com/Polyconseil/check-oldies/blob/master/Changelog.rst
Keywords: fixme,todo,quality,technical debt
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE.txt
Requires-Dist: toml==0.10.2; python_version < "3.11"
Dynamic: license-file

**check-oldies** is a collection of programs that warn about old
things in code:

- **check-fixmes** warns about old FIXME or TODO annotations.

  If we did not regularly check, we would forget about that FIXME note
  we wrote a few months ago. **check-fixmes** warns us about it. It is
  then our choice to act: fix it, remove it (because we decided it is
  not worth to fix, or because it is not relevant anymore), or
  postpone it.

- **check-future-tags** warns about orphan FUTURE tags.

  We sometimes plan a broad modification that will span multiple
  files. Instead of littering FIXME annotations everywhere, we set a
  single FIXME annotation and a FUTURE-xxx tag on the same line. Then,
  wherever we need to make a modification, we only mention this
  FUTURE-xxx tag without any FIXME. If we ever remove the FIXME but
  keep a FUTURE-xxx tag somewhere, it is a mistake and this tool warns
  us. (See `documentation <https://check-oldies.readthedocs.io/en/latest/check_future_tags.html>` for an example.)

- **check-branches** warns about old branches, surprisingly.

- **forget-me-not** runs both programs above on a set of Git
  repositories and sends warning e-mails to authors of soon-to-be-old
  annotations or branches.

In other words: **check-fixmes**, **check-branches** and **check-future-tags** can be run as
part of the test suite of each project (by a continuous integration
system such as Jenkins). They break builds when they detect old
things.  On the other hand, **forget-me-not** can be run once a week
on a set of projects to warn authors that some builds *will* break
soon if they do not take care of their old annotations or branches.


Example output
==============

::

    $ check-fixmes
    NOK: Some annotations are too old, or there are orphan FUTURE tags.
    jdoe            -  181 days - frobulator/api.py:12: # FIXME (jdoe): we should catch errors
    jdoe            -  100 days - frobulator/api.py:25: # TODO: this is slow, use the batch API instead
    jsmith          -   12 days - docs/index.rst:1: # FIXME: write documentation before open sourcing


::

    $ check-branches
    NOK: Some branches are too old.
    john.smith@example.com     -   92 days - jsmith/fix_frobs (https://github.com/Polyconseil/check-oldies/tree/jsmith/fix_frobs), linked to open PR/MR #1 (https://github.com/Polyconseil/check-oldies/pull/1)


Applicability
=============

**check-oldies** is written in Python but is language-agnostic. It
works on Git repositories but could be extended to other version
control systems. It integrates with GitHub and GitLab but can do
without it, and could be extended to work with other code hosting
platforms.


Requirements and installation
=============================

You must have Python 3.10 or later, and Git 2.19.0 or later.

Install with ``pip``, preferably in a virtual environment:

.. code-block:: console

    $ python3 -m venv /path/to/your/virtualenv
    $ source /path/to/your/virtualenv/bin/activate

    $ pip install check-oldies


Features, configuration and more
================================

The `full documentation`_ has more details about the features and the
configuration, examples of the usage of FUTURE tags, how to
contribute, etc.

.. _full documentation: https://check-oldies.readthedocs.io/
