Checks your source files for TODO and FIXME comments, where they don't have an open issue number. (Inspired by https://woodpecker-ci.org/plugins/TODO-Checker)
Find a file
Paul Campbell 2be9ae8eff
Some checks failed
Test / checks (map[name:nightly]) (push) Failing after 10s
Test / checks (map[name:stable]) (push) Failing after 9s
build: add test and build checks to workflows
2024-09-21 22:17:59 +01:00
.forgejo/workflows build: add test and build checks to workflows 2024-09-21 22:17:59 +01:00
src feat: Improve error messageso 2024-09-21 19:28:54 +01:00
.gitignore feat: use Dockerfile (hello world) 2024-09-17 16:37:40 +01:00
.ignore build: don't check README for TODO/FIXME comments 2024-09-20 21:50:05 +01:00
Cargo.toml feat: Detect and ignore non-text files 2024-09-21 16:24:50 +01:00
Dockerfile feat: use Dockerfile (hello world) 2024-09-17 16:37:40 +01:00
justfile build: add justfile for self-testing 2024-09-21 11:25:41 +01:00
LICENSE Initial commit 2024-09-17 15:35:04 +01:00
README.md feat: Improve error messageso 2024-09-21 19:28:54 +01:00
renovate.json Add renovate.json 2024-09-20 15:00:28 +00:00

forgejo-todo-checker

Checks your source files for TODO and FIXME comments, where they don't have an open issue number.

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

jobs:
  tests:
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Check TODOs
        uses: https://git.kemitix.net/kemitix/forgejo-todo-checker@v1.0.0

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+)(\))
- Issue number missing: src/main.rs#38:
 // TODO: implement this cool feature and get rich!
- Closed/Invalid Issue: (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.