# check-all-the-things

This is a tool to run many tools that can check various things.

## Philosophy

### Check as much as possible

Every tool that is available should be run, check all the things!

### Decisions are up to the humans

Humans are capable of making decisions but they are bad at finding
the information that might help with making decisions. Provide the
humans with as much information as possible to help them make the
decisions. Some tools will produce output that is not useful so
the output of those commands should be filtered. Output from tools
that produce only machine-readable information should be converted
to human-readable information.

### Leave details to the tools

When a tool can recursively search a tree and automatically decide
what to check, let it. For tools that are less intelligent, pass
single filenames with {file} or multiple filenames with {files}.
If a tool gains new capabilities that are provided by a hacky
check via grep, drop the hacky check via grep. The {njobs} parameter
can be used when a tool knows how to check things in parallel.

## How to contribute

If you have access to collab-maint, please commit trivial things such
as typos, TODO entries or support for new checkers.

https://anonscm.debian.org/cgit/collab-maint/check-all-the-things.git

When adding support for new checkers, please ensure that you add the
'dangerous' flag for checks that execute package code.

When adding support for new checkers, please ensure that you use {file}
for checkers that take only one argument and that you use {files} for
checkers that take more than one argument.

When adding TODO entries, please add a new check config but set the flags
field to todo and add any known hints in the apt/comment/command fields.

When adding TODO entries for packages not in Debian, please either add
the ITP bug number or a URL to upstream in the comment field.

For more involved changes to the code you might want to file a bug to
discuss the changes with people who are interested.

For low-latency discussion you can join the Debian QA IRC channel:

ircs://irc.debian.org/debian-qa
https://webchat.oftc.net/?channels=debian-qa

Please sign all of your commits, tags and pushes with OpenPGP:

http://mikegerwitz.com/papers/git-horror-story

Tags should be created using this command and the tag annotation should
be the release notes for this version, usually stuff from debian/changelog.

git tag -a -s check-all-the-things-$(date -u --iso-8601 | tr - .)
