Skip to content

nnichols/clojure-lint-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Clojure Lint Action

A GitHub Action to lint clojure files with clj-kondo and reviewdog on pull requests to improve the code review experience.

Screenshot 2024-12-03 100026

Example Usage

The clojure-lint-action is used in almost every Wall Brew repository. If you'd like to see a sample GitHub workflow using this linter, please check out spoon That action was used as a CI/CD check in this Pull Request.

Sample Workflow

To receive automatic Pull Request comments with linter results:

name: Lint Clojure
on: [pull_request]
jobs:
  clj-kondo:
    name: runner / clj-kondo
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: clj-kondo
        uses: nnichols/clojure-lint-action@v10
        with:
          github_token: ${{ secrets.github_token }}
          reporter: github-pr-review

Inputs

github_token

Optional. ${{ github.token }} is used by default.

level

Optional. Report level for reviewdog- must be one of [info, warning, error]. It's the same as -level flag of reviewdog. Default: error.

reporter

Optional. Reporter of reviewdog command. Must be one of [github-pr-check, github-pr-review, github-check]. Default is github-pr-check. github-pr-review can use Markdown and add a link to rule page in reviewdog reports.

filter_mode

Optional. Filtering mode for the reviewdog command. Must be one of [added, diff_context, file, nofilter]. Default is added.

fail_on_error

Optional. Sets an exceptional exit code for reviewdog when errors are found. Must be one of [true, false]. Default is false. This is the authoritative control for whether lint findings fail the step; see Failure handling.

reviewdog_flags

Optional. Additional reviewdog flags.

path

Optional. Base directory to run clj-kondo. Same as [path] of find command. Default: .

pattern

Optional. File name pattern for target files, used verbatim as the -name [pattern] test of the find command. Default: empty, which matches the standard Clojure source extensions: *.clj, *.cljs, *.cljc, *.cljx, *.cljd, *.cljr. The .git directory is always pruned, so Git internals are never linted regardless of branch name.

exclude

Optional. Exclude patterns of target files. Same as -not -path [exclude] of find command. e.g. ./target/* Note: .git is always excluded, so you do not need to list it here.

clj_kondo_config

Optional. Flags to pass to clj-kondo's --config option, which may either be in-line options or a path to a config file. Default: '' (no additional config passed to clj-kondo).

The action sets clj-kondo's output pattern to {{filename}}:{{row}}:{{col}}: {{message}} so that reviewdog can parse the output via its -efm errorformat. This pattern is fixed by the action and is not user-configurable; user-supplied clj_kondo_config values may adjust linters and other clj-kondo settings, but any output pattern they pass will be overridden by the action.

clj_kondo_version

Optional. Specifies the version of clj-kondo to use, passed as :mvn/version in clj-kondo's dependency map. e.g. 2026.04.15. Default: RELEASE, which resolves to the latest published version at run time.

Failure Handling

clj-kondo's findings are piped to reviewdog. Whether the step fails is controlled by fail_on_error (with level), which govern reviewdog's exit code. With the default fail_on_error: false, findings are reported as annotations or PR comments without failing the build.

An internal clj-kondo error (exit code 1) always fails the step, even when fail_on_error is false, so a linter crash is never silently green.

Each run logs the clj-kondo and reviewdog exit codes and emits an ::error:: annotation when clj-kondo exits non-zero, to make failures easier to triage.

Licensing

Copyright © Nick Nichols

Distributed under the MIT License

About

A GitHub Action that lints clojure files with clj-kondo and generates comments with reviewdog on pull requests to improve the code review experience.

Topics

Resources

License

Code of conduct

Contributing

Stars

23 stars

Watchers

1 watching

Forks

Sponsor this project

 

Contributors