Skip to content
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

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

Sponsor this project

Used by

Contributors

Languages