doc: clean up errors README, now published as hledger.org/ERRORS.html
This commit is contained in:
		
							parent
							
								
									ed72763987
								
							
						
					
					
						commit
						54e1a8450e
					
				| @ -1,26 +1,51 @@ | |||||||
| hledger error messages are currently quite varied in format. | # ERRORS | ||||||
| Tools like flycheck-hledger parse them and need updating |  | ||||||
| whenever they change ([#1436][]). |  | ||||||
| Getting consistent high-quality errors and accurate flycheck region |  | ||||||
| highlighting, not to mention LSP support, for all of our journal |  | ||||||
| errors is a big project, but it's crowd-sourceable and every bit of |  | ||||||
| progress brings immediate practical benefits. |  | ||||||
| 
 | 
 | ||||||
| Here are journals/scripts for reproducing hledger's journal error messages. | <div class=pagetoc> | ||||||
| They are named similarly to [hledger check][]'s checks. |  | ||||||
| In the CLI, execute them to see the error messages. |  | ||||||
| 
 | 
 | ||||||
| In Emacs with [flycheck-hledger][], | <!-- toc --> | ||||||
| customize flycheck-hledger-* to enable all appropriate checks, | </div> | ||||||
| and open the files to see how flycheck handles them. |  | ||||||
| Some files contain extra declarations to ease flycheck testing. |  | ||||||
| 
 | 
 | ||||||
| [hledger check]:    https://hledger.org/hledger.html#check | hledger produces a variety of error messages in different situations. | ||||||
| [flycheck-hledger]: https://github.com/DamienCassou/flycheck-hledger | They are intended first for humans and secondly for parsing by tools | ||||||
| [flycheck-hledger-10]: https://github.com/DamienCassou/flycheck-hledger/pull/10 | like [flycheck-hledger][]. | ||||||
| [#1436]:            https://github.com/simonmichael/hledger/issues/1436 | Here we collect examples of these errors, which are listed below | ||||||
|  | for reference, and also tested as part of our test suite. | ||||||
|  | This document is the README in the [hledger/test/errors/][] directory, | ||||||
|  | and also published as Developer docs > [ERRORS][] on hledger.org. | ||||||
| 
 | 
 | ||||||
| ## Goals | Each error has  | ||||||
|  | 
 | ||||||
|  | - a name (similar to [hledger check][] names when applicable) | ||||||
|  | - an executable script in this directory which reproduces the error (like `balanced.j`) | ||||||
|  | - which usually can also be used as a data file for manual testing (`hledger -f balanced.j check`) | ||||||
|  | - sometimes supplementary data files (like `csvdateparse.csv.rules`) | ||||||
|  | - an autogenerated shelltestrunner test (like `balanced.test`) | ||||||
|  | 
 | ||||||
|  | To update this readme with the latest error messages, run `make readme`. | ||||||
|  | To regenerate the shelltestrunner tests, run `make tests`. | ||||||
|  | To test all of these error messages with hledger, run `make test`. | ||||||
|  | To test these errors with flycheck-hledger, | ||||||
|  | customize `flycheck-hledger-*` in Emacs to enable all appropriate checks, | ||||||
|  | then open the data files to see how flycheck handles them. | ||||||
|  | `C-c ! l` opens a pane for easy viewing. | ||||||
|  | 
 | ||||||
|  | <!-- Use absolute urls as this page can be viewed on github or hledger.org. --> | ||||||
|  | [hledger/test/errors/]:  https://github.com/simonmichael/hledger/tree/master/hledger/test/errors | ||||||
|  | [ERRORS]:                https://hledger.org/ERRORS.html | ||||||
|  | [hledger check]:         https://hledger.org/hledger.html#check | ||||||
|  | [flycheck-hledger-home]: https://github.com/DamienCassou/flycheck-hledger | ||||||
|  | [flycheck-hledger-10]:   https://github.com/DamienCassou/flycheck-hledger/pull/10 | ||||||
|  | [flycheck-hledger]:      https://hledger.org/editors.html#flycheck-hledger | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Error improvement | ||||||
|  | 
 | ||||||
|  | Work is ongoing to make our error messages more consistent and more useful | ||||||
|  | ([#1436](https://github.com/simonmichael/hledger/issues/1436), | ||||||
|  | [#1885](https://github.com/simonmichael/hledger/pull/1885),  | ||||||
|  | [#1886](https://github.com/simonmichael/hledger/pull/1886)..). | ||||||
|  | This is a big project, and your help is welcome; every bit of progress | ||||||
|  | counts, and this is a fast way to help users. | ||||||
| 
 | 
 | ||||||
| - [x] ~~phase 1: update flycheck to detect journal errors of current hledger release (and keep a branch updated to detect errors of latest hledger master)~~ | - [x] ~~phase 1: update flycheck to detect journal errors of current hledger release (and keep a branch updated to detect errors of latest hledger master)~~ | ||||||
| - [x] ~~phase 2: survey/document current journal errors & status~~ | - [x] ~~phase 2: survey/document current journal errors & status~~ | ||||||
| @ -37,18 +62,18 @@ Some files contain extra declarations to ease flycheck testing. | |||||||
| - [x] ~~phase 13: decide/add error ids/explanations/web pages ? not needed~~ | - [x] ~~phase 13: decide/add error ids/explanations/web pages ? not needed~~ | ||||||
| - [ ] phase 14: support Language Server Protocol & Visual Code | - [ ] phase 14: support Language Server Protocol & Visual Code | ||||||
| 
 | 
 | ||||||
| ## Preferred error format | ## Standard error format | ||||||
| 
 | 
 | ||||||
| Here is our current standard error message layout.  | Here is our current preferred layout for error messages.  | ||||||
| It is similar to the parse error messages we get from megaparsec. | It is similar to the parse error messages we get from megaparsec | ||||||
| (Easier to follow that than change it.): | (since it's easier to follow that than change it): | ||||||
| ``` | ``` | ||||||
| hledger: Error: FILE:LOCATION: | hledger: Error: FILE:LOCATION: | ||||||
| EXCERPT | EXCERPT | ||||||
| EXPLANATION | EXPLANATION | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Notes (see also [#1436][]): | Notes: | ||||||
| 
 | 
 | ||||||
| - line 1 includes "hledger" (dropping this would require some effort), the word "Error", and the error position | - line 1 includes "hledger" (dropping this would require some effort), the word "Error", and the error position | ||||||
| - FILE is the file path | - FILE is the file path | ||||||
| @ -64,7 +89,10 @@ Notes (see also [#1436][]): | |||||||
|   EXCERPT |   EXCERPT | ||||||
|   [DETAILS] |   [DETAILS] | ||||||
|   ``` |   ``` | ||||||
| - try https://github.com/mesabloo/diagnose / https://hackage.haskell.org/package/errata / https://hackage.haskell.org/package/chapelure later | - try  | ||||||
|  |   <https://github.com/mesabloo/diagnose>, | ||||||
|  |   <https://hackage.haskell.org/package/errata>, | ||||||
|  |   <https://hackage.haskell.org/package/chapelure> later ? | ||||||
| 
 | 
 | ||||||
| ## Limitations | ## Limitations | ||||||
| 
 | 
 | ||||||
| @ -78,19 +106,20 @@ Here are some current limitations of hledger's error messages: | |||||||
| - For the same reason, the excerpts we show in error messages are not the original data. | - For the same reason, the excerpts we show in error messages are not the original data. | ||||||
|   Instead we show a synthetic rendering that is similar enough to be explanatory. |   Instead we show a synthetic rendering that is similar enough to be explanatory. | ||||||
| 
 | 
 | ||||||
| ## Current status | 
 | ||||||
|  | ## Error messages | ||||||
| 
 | 
 | ||||||
| Here is the current status as of | Here is the current status as of | ||||||
| hledger (see version below) and flycheck-hledger g1310cb518. | hledger (see version below) and flycheck-hledger g1310cb518. | ||||||
| Click error names to see an example. Key: | Click error names to see an example. The table headings mean: | ||||||
| 
 | 
 | ||||||
| - std format - the error message follows a standard format (location on first line, megaparsec-like excerpt, explanation) | - std format - the error message follows our standard error format | ||||||
| - line       - correct line numbers are reported | - line       - correct line numbers are reported | ||||||
| - column     - useful column numbers are reported | - column     - useful column numbers are reported | ||||||
| - excerpt    - a useful excerpt is shown, ideally with the error highlighted (✓✓) | - excerpt    - a useful excerpt is shown, ideally with the error highlighted (✓✓) | ||||||
| - flycheck   - the current flycheck release (or a PR branch) recognises the error and highlights a useful region | - flycheck   - the current flycheck release (or a PR branch) recognises the error and highlights a useful region | ||||||
| 
 | 
 | ||||||
| | error/check name                                      | std format | line | column | excerpt | flycheck | | | error name                                            | std format | line | column | excerpt | flycheck | | ||||||
| |-------------------------------------------------------|------------|------|--------|---------|----------| | |-------------------------------------------------------|------------|------|--------|---------|----------| | ||||||
| | [accounts](#accounts)                                 | ✓          | ✓    | ✓      | ✓✓      | ✓        | | | [accounts](#accounts)                                 | ✓          | ✓    | ✓      | ✓✓      | ✓        | | ||||||
| | [assertions](#assertions)                             | ✓          | ✓    | ✓      | ✓✓      | ✓        | | | [assertions](#assertions)                             | ✓          | ✓    | ✓      | ✓✓      | ✓        | | ||||||
| @ -125,10 +154,6 @@ Click error names to see an example. Key: | |||||||
| | [csvstdinrules](#csvstdinrules)                       |            |      |        |         |          | | | [csvstdinrules](#csvstdinrules)                       |            |      |        |         |          | | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## Current error messages |  | ||||||
| 
 |  | ||||||
| (To update: `make readme`) |  | ||||||
| 
 |  | ||||||
| <!-- GENERATED: --> | <!-- GENERATED: --> | ||||||
| hledger 1.26.99-ga7b920750-20220715 error messages: | hledger 1.26.99-ga7b920750-20220715 error messages: | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user