Makefile Linter
/install makefile-linter
makefile-linter
A pure-Python 3 (stdlib only) Makefile linter. Detects common issues including tab/space errors, missing .PHONY declarations, unused/undefined variables, hardcoded paths, shell portability problems, and more.
Commands
lint FILE
Lint a Makefile and report issues.
python3 scripts/makefile-linter.py lint Makefile
python3 scripts/makefile-linter.py lint /path/to/Makefile
echo -e "all:\
echo hello" | python3 scripts/makefile-linter.py lint /dev/stdin
targets FILE
List all targets with line numbers, phony status, prerequisites, and inline comment descriptions.
python3 scripts/makefile-linter.py targets Makefile
python3 scripts/makefile-linter.py targets Makefile --format json
vars FILE
List all variable definitions with line numbers and values.
python3 scripts/makefile-linter.py vars Makefile
python3 scripts/makefile-linter.py vars Makefile --format markdown
audit FILE
Full audit combining lint results, targets list, and variables summary.
python3 scripts/makefile-linter.py audit Makefile
python3 scripts/makefile-linter.py audit Makefile --format json
Options
| Flag | Description |
|---|---|
--format text|json|markdown |
Output format (default: text) |
--strict |
Exit code 1 on any reported issue |
--ignore RULE |
Ignore a specific rule (repeatable) |
--min-severity error|warning|info |
Minimum severity to report (default: info) |
Lint Rules
| Rule | Severity | Description |
|---|---|---|
spaces-not-tabs |
error | Recipe lines must use tabs, not spaces |
duplicate-targets |
error | Same target defined more than once |
missing-phony |
warning | Common phony target not in .PHONY |
unused-variables |
warning | Variable defined but never referenced |
undefined-variables |
warning | Variable referenced but never defined |
hardcoded-paths |
warning | Absolute paths in recipes |
trailing-whitespace |
warning | Lines ending with spaces or tabs |
shell-portability |
warning | Bash-specific syntax without SHELL := /bin/bash |
recursive-make |
info | $(MAKE) -C or make -C detected |
missing-default-target |
info | No all target defined |
long-lines |
info | Lines over 120 characters |
missing-clean |
info | No clean target defined |
Examples
# Report only errors and warnings
python3 scripts/makefile-linter.py lint Makefile --min-severity warning
# JSON output for CI integration
python3 scripts/makefile-linter.py lint Makefile --format json
# Fail CI on any issue
python3 scripts/makefile-linter.py lint Makefile --strict
# Ignore specific rules
python3 scripts/makefile-linter.py lint Makefile --ignore recursive-make --ignore missing-clean
# Full audit in Markdown (for PR comments)
python3 scripts/makefile-linter.py audit Makefile --format markdown
# Pipe from stdin
cat Makefile | python3 scripts/makefile-linter.py lint /dev/stdin
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install makefile-linter - 安装完成后,直接呼叫该 Skill 的名称或使用
/makefile-linter触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Makefile Linter 是什么?
Lint Makefiles for common issues — tabs, .PHONY, unused vars, portability, and best practices. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 87 次。
如何安装 Makefile Linter?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install makefile-linter」即可一键安装,无需额外配置。
Makefile Linter 是免费的吗?
是的,Makefile Linter 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Makefile Linter 支持哪些平台?
Makefile Linter 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Makefile Linter?
由 charlie-morrison(@charlie-morrison)开发并维护,当前版本 v1.0.0。