# Install luacheck with Homebrew, apk, apt, pacman, scoop, zypper

Tool for linting and static analysis of Lua code. Version 1.2.0 via Homebrew; verified 2026-06-29.

## Install

```sh
sudo av install brew:luacheck
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install luacheck
```

  Evidence: local Homebrew formula metadata

### Linux

- apk (92%):

```sh
sudo apk add luacheck
```

  Evidence: Alpine Linux edge package indexes: luacheck from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz

- Debian apt (92%):

```sh
sudo apt install lua-check
```

  Evidence: Debian stable package indexes: lua-check from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz

- pacman (92%):

```sh
sudo pacman -S luacheck
```

  Evidence: Arch Linux sync databases: luacheck from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz

- zypper (92%):

```sh
sudo zypper install lua53-luacheck
```

  Evidence: openSUSE Tumbleweed package metadata: lua53-luacheck from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst

### Windows

- Scoop (92%):

```sh
scoop install main/luacheck
```

  Evidence: Scoop official bucket manifest trees: bucket/luacheck.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:luacheck
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/luacheck>
- **Version:** 1.2.0
- **Source summary:** Tool for linting and static analysis of Lua code
- **Homepage:** <https://luacheck.readthedocs.io/>
- **Repository:** <https://github.com/lunarmodules/luacheck>
- **Upstream docs:** <https://luacheck.readthedocs.io/>
- **License:** MIT
- **Source archive:** <https://github.com/lunarmodules/luacheck/archive/refs/tags/v1.2.0.tar.gz>
- **Last updated:** 2026-06-29T22:26:50Z
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- luacheck (cli)
- luacheck (alias)

## Dependencies

- lua

## Build dependencies

- luarocks

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 1.2.0
- Package-manager updated: 2026-06-29
- Local data: ok
- Upstream repository: https://github.com/lunarmodules/luacheck
- Upstream latest detected: v1.2.0 (current)
## Project history and usage

Luacheck is a command-line static analyzer and linter for Lua. It reports issues such as undefined globals, unused variables, uninitialized variables, unreachable code, and syntax errors, while allowing project-specific global sets and per-file configuration.

### Project history

Luacheck began as a Lua linter by Peter Melnichenko, with the changelog recording 0.1.0 as the first release on 25 Mar 2014. Early releases quickly added command-line reporting, stdin and directory checking, config loading, Lua 5.2/5.3/LuaJIT syntax support, and the warning-code system that made the tool useful in editors and CI.

The project matured through the 0.x line by adding inline comments, caching, parallel checking, custom formatters, rockspec handling, and support for newer Lua versions. The README describes Luacheck as written in Lua, runnable on Lua 5.1 through 5.4 and LuaJIT, and configurable from CLI options, config files, or inline Lua comments.

In 2022 the project moved through the 1.0 milestone and adopted semver-oriented release expectations. Later changelog entries show package-maintenance work around Docker images, GitHub Actions, new builtin standard sets, NO_COLOR support, and Lua ecosystem integrations such as SILE, Ldoc, Playdate, and Minetest globals.

### Adoption history

Luacheck was adopted because Lua's global-variable model makes typos and accidental globals easy to miss. Its support for named standard-global sets, project globals, inline suppressions, editor-oriented stable output, and recursive directory checking made it practical for projects that wanted CI linting without imposing a full type system.

The official README lists editor integrations for Vim/Syntastic, SublimeLinter, Atom, Emacs/Flycheck, Brackets, VS Code, Nova, Geany, Node.js bindings, Gulp, Docker, and GitHub Actions. The supplied package-manager facts show distribution packages for apk, Homebrew, Debian/Ubuntu, pacman, Scoop, and zypper.

### How it is used

Users run luacheck with files, directories, stdin, or rockspecs. The CLI returns distinct exit codes for clean runs, warnings, syntax or inline-option errors, file errors, and critical argument/config/cache errors, which makes it straightforward to wire into CI.

Configuration is usually a .luacheckrc file discovered from the current directory upward, a platform-specific default config path, or a custom --config path. Config files are Lua scripts that set options such as std, globals, read_globals, ignore, enable, line length, and per-path overrides.

### Why package nerds care

Luacheck is the old reliable Lua linter package: small, scriptable, available as a CLI, and easy to connect to editors and CI. Package nerds care about it because it sits at the intersection of Lua versions, LuaRocks modules, editor plugins, and distribution packages, and because its config lookup behavior directly affects how projects lint in reproducible builds.

### Timeline

- 2014-03-25: Luacheck 0.1.0 was the first release.
- 2014: Early releases added directory checking, config loading, Lua 5.2/5.3/LuaJIT syntax support, and warning codes.
- 2015: Luacheck added inline options, custom output formatters, caching, parallel checking, and version reporting.
- 2020: Luacheck added Lua 5.4 standard definitions and parser/runtime compatibility work.
- 2022: Luacheck v1.0.0 marked the semver-era milestone.
- 2024: Luacheck 1.2.0 added Minetest standard support and performance fixes.

### Related projects

- Lua is the language Luacheck analyzes.
- LuaRocks is the installation path documented by the official README.
- LuaFileSystem is used for recursive directory checking when installed through LuaRocks.
- Busted, rockspec, OpenResty ngx_lua, and other named standard sets appear in Luacheck's supported globals.
- LuaLS overlaps as a language-server tool, while Luacheck remains focused on linting and static analysis.

### Sources

- <https://luacheck.readthedocs.io/en/stable/>
- <https://luacheck.readthedocs.io/en/stable/cli.html>
- <https://luacheck.readthedocs.io/en/stable/config.html>
- <https://raw.githubusercontent.com/lunarmodules/luacheck/master/CHANGELOG.md>
- <https://raw.githubusercontent.com/lunarmodules/luacheck/master/README.md>
- source_facts.package-manager


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals


## Configuration and credential file locations

These source-backed paths show where this package keeps local settings or durable credentials. Automic Vault can use them as review targets for secret scanning, migration, and command approval.


## Configuration files

- macOS: ~/Library/Application Support/Luacheck/.luacheckrc
- Unix: .luacheckrc, $XDG_CONFIG_HOME/luacheck/.luacheckrc, ~/.config/luacheck/.luacheckrc
- Windows: %LOCALAPPDATA%\Luacheck\.luacheckrc
## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** luacheck
- **Version Scheme:** 0
- **Revision:** 1
- **Head Version:** HEAD
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- Debian apt - lua-check - 1.2.0-1: normalized package name match | Debian stable package indexes: lua-check from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | static analyzer and a linter for the Lua language | https://github.com/luarocks/luacheck
- Ubuntu apt - lua-check - 1.1.2-1: normalized package name match | Ubuntu 24.04 LTS package indexes: lua-check from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | static analyzer and a linter for the Lua language | https://github.com/luarocks/luacheck
- apk - luacheck - 1.2.0-r1: normalized package name match | Alpine Linux edge package indexes: luacheck from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | A tool for linting and static analysis of Lua code | https://github.com/lunarmodules/luacheck
- pacman - luacheck - 1.2.0-4: normalized package name match | Arch Linux sync databases: luacheck from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz | A tool for linting and static analysis of Lua code | https://github.com/lunarmodules/luacheck
- zypper - lua53-luacheck - 1.1.0-4.1: normalized package name match | openSUSE Tumbleweed package metadata: lua53-luacheck from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | Command-line tool for linting and static analysis of Lua code | https://github.com/lunarmodules/luacheck
- zypper - lua54-luacheck - 1.1.0-4.1: normalized package name match | openSUSE Tumbleweed package metadata: lua54-luacheck from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | Command-line tool for linting and static analysis of Lua code | https://github.com/lunarmodules/luacheck
- zypper - lua55-luacheck - 1.1.0-4.1: normalized package name match | openSUSE Tumbleweed package metadata: lua55-luacheck from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | Command-line tool for linting and static analysis of Lua code | https://github.com/lunarmodules/luacheck
- zypper - luajit-luacheck - 1.1.0-4.1: normalized package name match | openSUSE Tumbleweed package metadata: luajit-luacheck from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | Command-line tool for linting and static analysis of Lua code | https://github.com/lunarmodules/luacheck
- Scoop - main/luacheck: normalized package name match | Scoop official bucket manifest trees: bucket/luacheck.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1


## Related links

- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Text processing packages](https://www.automicvault.com/pkg/text-processing-tools/) - Matched text, document, or structured-data processing metadata.
- [Developer build packages](https://www.automicvault.com/pkg/developer-build-tools/) - Matched build, compiler, generator, or developer workflow metadata.
- [Networking and protocol packages](https://www.automicvault.com/pkg/networking-protocol-tools/) - Matched network, protocol, or remote-service metadata.
- [lua](https://www.automicvault.com/pkg/brew/lua/) - Runtime dependency declared by Homebrew.
- [luarocks](https://www.automicvault.com/pkg/brew/luarocks/) - Build dependency declared by Homebrew.
- [selene](https://www.automicvault.com/pkg/brew/selene/) - Shares av.db curated category or tags: cli, code-quality, developer-tools, linter, lua.
- [eslint](https://www.automicvault.com/pkg/brew/eslint/) - Shares av.db curated category or tags: cli, code-quality, developer-tools, linter, static-analysis.
- [go-critic](https://www.automicvault.com/pkg/brew/go-critic/) - Shares av.db curated category or tags: cli, code-quality, developer-tools, linter, static-analysis.
- [pmd](https://www.automicvault.com/pkg/brew/pmd/) - Shares av.db curated category or tags: cli, code-quality, developer-tools, linter, static-analysis.
- [pylint](https://www.automicvault.com/pkg/brew/pylint/) - Shares av.db curated category or tags: cli, code-quality, developer-tools, linter, static-analysis.
- [revive](https://www.automicvault.com/pkg/brew/revive/) - Shares av.db curated category or tags: cli, code-quality, developer-tools, linter, static-analysis.
- [spotbugs](https://www.automicvault.com/pkg/brew/spotbugs/) - Shares av.db curated category or tags: cli, code-quality, developer-tools, linter, static-analysis.
- [staticcheck](https://www.automicvault.com/pkg/brew/staticcheck/) - Shares av.db curated category or tags: cli, code-quality, developer-tools, linter, static-analysis.

## Combined YAML source

View the package source record on GitHub. [combined/luacheck.yml](https://github.com/automic-vault/db/blob/main/combined/luacheck.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated configuration and credential file locations
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
