2024-09-17 15:35:36 +01:00
|
|
|
# forgejo-todo-checker
|
|
|
|
|
|
|
|
Checks your source files for TODO and FIXME comments, where they don't have an open issue number.
|
2024-09-17 15:35:04 +01:00
|
|
|
|
2024-09-20 17:15:16 +01:00
|
|
|
A ForgeJo Action.
|
|
|
|
|
|
|
|
(Inspired by https://woodpecker-ci.org/plugins/TODO-Checker)
|
|
|
|
|
|
|
|
## Comments Format
|
|
|
|
|
|
|
|
This Action only pays attention to comments in a particular format. e.g:
|
|
|
|
|
|
|
|
```
|
|
|
|
// TODO: (#19) This is the comment
|
|
|
|
// FIXME (#29) This is the other comment
|
|
|
|
# TODO (#19) This is the comment
|
|
|
|
# FIXME: (#29) This is the other comment
|
|
|
|
```
|
|
|
|
|
|
|
|
These are all considered valid comments. Pick the format that fits your language or file best.
|
|
|
|
|
|
|
|
Comments are found by matching them against this regular expression: `(#|//)\s*(TODO|FIXME)`
|
|
|
|
|
|
|
|
i.e.: be a comment by starting with either '#' or '//', then the word `TODO` or `FIXME` in all caps.
|
|
|
|
|
|
|
|
Once we have a line with such a comment we look for the Issue Number with: `\(#?(?P<ISSUE_NUMBER>\d+)\)`
|
|
|
|
|
|
|
|
i.e.: a number in `()`, with or without a leading `#` (inside the braces).
|
|
|
|
|
|
|
|
The `ISSUE_NUMBER` must correspond to an **OPEN** Issue in the repo that the Action is running against.
|
|
|
|
|
|
|
|
If the issue has been closed or can't be found then the comment is marked as an error and the Check with fail.
|
|
|
|
|
|
|
|
## Example Use as a ForgeJo Action Step
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
jobs:
|
|
|
|
tests:
|
|
|
|
steps:
|
|
|
|
- name: Checkout
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
|
|
|
- name: Check TODOs
|
2024-09-20 21:51:01 +01:00
|
|
|
uses: https://git.kemitix.net/kemitix/forgejo-todo-checker@v1.0.0
|
2024-09-20 17:15:16 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
The output will be similar to the following if there are any errors:
|
|
|
|
|
|
|
|
```
|
|
|
|
Forgejo TODO Checker!
|
|
|
|
Repo: kemitix/my-projext
|
|
|
|
Prefix: (#|//)\s*(TODO|FIXME)
|
|
|
|
Issues: ( |)(\(|\(#)(?P<ISSUE_NUMBER>\d+)(\))
|
|
|
|
- Invalid: src/main.rs#38:
|
|
|
|
// TODO: implement this cool feature and get rich!
|
|
|
|
- Closed : (19) README.md#12:
|
|
|
|
// TODO: (#19) This is the comment
|
|
|
|
|
|
|
|
Error: Invalid or closed TODO/FIXMEs found
|
|
|
|
```
|
|
|
|
|
|
|
|
The first error is because there is no issue number associated with the TODO comment.
|
|
|
|
|
|
|
|
The second error is because the issue has already been closed.
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
`forgejo-todo-checker` is released under the MIT License.
|