# Check findings

`useful-views check` (Python: [check()](../../reference/check.md#useful_views.check)) changes nothing and reports these kinds of finding, in this order. Each finding's message says what to do about it. With `--json`, each finding is an object with `kind`, `path`, `message`, `rule` (for `refused`, the rule's number), `recipe` (the recipe concerned, if any) and `reason` (for `out-of-date`: `changed`, `outputs-changed` or `upstream`), and the document also has a `warnings` list. The command exits with 1 when it finds anything.

| Kind | Meaning |
|----|----|
| `unreadable-recipe` | A recipe folder whose recipe.toml is missing or cannot be read. |
| `refused` | A recipe breaks a rule, so run and sync would refuse it. The finding names the rule. |
| `missing-input` | An input a recipe.toml declares is not on disk. |
| `never-run` | A recipe that has never run successfully. |
| `out-of-date` | A recipe that sync would run again: its recipe.toml or steps changed since it last ran, its outputs changed, or a view it reads will be made again. |
| `missing-recipe-folder` | datapackage.json records a recipe whose folder is gone. sync removes the record. |
| `missing-view` | A recorded view whose file is missing. |
| `stale-cookbook` | cookbook.json does not match the recorded recipes. Update it with useful-views cookbook. |
| `stale-catalog` | useful-views/README.md does not match datapackage.json (edited by hand, or left from a merge). useful-views sync writes it again. |
| `stray-file` | A file or folder in useful-views/, other than README.md, that no recipe makes. |

[check](../../reference/check.md#useful_views.check) does not notice changes inside a step's code or to a file's contents.
