hledger/hledger/Hledger/Cli/Commands/Check.md
Simon Michael 7510d99aec check: accept case-insensitive prefixes as arguments
Might a bad idea, but avoiding wasteful typing..
2021-01-05 16:18:24 -08:00

76 lines
2.6 KiB
Markdown

check\
Check for various kinds of errors in your data.
_FLAGS
hledger provides a number of built-in error checks to help
prevent problems in your data.
Some of these are run automatically; or,
you can use this `check` command to run them on demand,
with no output and a zero exit code if all is well.
Specify their names (or a prefix) as argument(s).
Some examples:
```shell
hledger check # basic checks
hledger check -s # basic + strict checks
hledger check ordereddates payees # basic + two other checks
```
Here are the checks currently available:
### Basic checks
These checks are always run automatically, by (almost) all hledger commands,
including `check`:
- **parseable** - data files are well-formed and can be
[successfully parsed](hledger.html#input-files)
- **autobalanced** - all transactions are [balanced](hledger.html#postings),
inferring missing amounts where necessary, and possibly converting commodities
using [transaction prices] or automatically-inferred transaction prices
- **assertions** - all [balance assertions] in the journal are passing.
(This check can be disabled with `-I`/`--ignore-assertions`.)
### Strict checks
These additional checks are run when the `-s`/`--strict` ([strict mode]) flag is used.
Or, they can be run by giving their names as arguments to `check`:
- **accounts** - all account names used by transactions
[have been declared](hledger.html#account-error-checking)
- **commodities** - all commodity symbols used
[have been declared](hledger.html#commodity-error-checking)
### Other checks
These checks can be run only by giving their names as arguments to `check`.
They are more specialised and not desirable for everyone, therefore optional:
- **ordereddates** - transactions are ordered by date (similar to the old `check-dates` command)
- **payees** - all payees used by transactions [have been declared](#declaring-payees)
- **uniqueleafnames** - all account leaf names are unique (similar to the old `check-dupes` command).
### Custom checks
A few more checks are are available as separate [add-on commands],
in <https://github.com/simonmichael/hledger/tree/master/bin>:
- **hledger-check-tagfiles** - all tag values containing / (a forward slash) exist as file paths
- **hledger-check-fancyassertions** - more complex balance assertions are passing
You could make similar scripts to perform your own custom checks.
See: Cookbook -> [Scripting](scripting.html).
[transaction prices]: hledger.html#transaction-prices
[balance assertions]: hledger.html#balance-assertions
[strict mode]: hledger.html#strict-mode
[add-on commands]: hledger.html#add-on-commands