| Crates.io | rumk |
| lib.rs | rumk |
| version | 0.0.1 |
| created_at | 2025-07-16 15:35:57.727467+00 |
| updated_at | 2025-07-16 15:35:57.727467+00 |
| description | A fast linter for Makefiles |
| homepage | |
| repository | https://github.com/rvben/rumk |
| max_upload_size | |
| id | 1755681 |
| size | 80,457 |
A fast linter for Makefiles written in Rust, inspired by tools like Ruff (Python) and Rumdl (Markdown).
cargo install rumk
# Check a Makefile
rumk check
# Check a specific file
rumk check path/to/Makefile
# Check all Makefiles in a directory
rumk check path/to/directory/
# Auto-fix issues
rumk check --fix
# Explain a specific rule
rumk explain MK001
Create a .rumk.toml file in your project:
[rules]
"MK101" = { enabled = true, options = { max = 100 } }
"MK102" = { enabled = true, options = { style = "UPPER_CASE" } }
"MK201" = { enabled = true }
[ignore]
paths = ["vendor/*", "third_party/*"]
rules = ["MK101"]
MK001 - Recipes must use tab indentationMK002 - Invalid variable syntaxMK101 - Line exceeds maximum lengthMK102 - Variable naming conventionMK103 - Target naming conventionMK201 - Non-file targets should be .PHONYMK202 - Avoid hardcoded absolute pathsGiven this Makefile:
clean:
rm -rf build/ # Uses spaces instead of tab
FOO = /usr/local/bin # Hardcoded path
test:
pytest tests/
Running rumk check produces:
Makefile:2:1: [MK001] Recipe must be indented with tab, not spaces [*]
Makefile:4:7: [MK202] Variable 'FOO' contains hardcoded absolute path
Makefile:1:1: [MK201] Target 'clean' should be declared .PHONY
Makefile:6:1: [MK201] Target 'test' should be declared .PHONY
Found 4 issues in 1 file (1 file checked)
Run with --fix to automatically fix issues
Contributions are welcome! Please see CONTRIBUTING.md for details.
MIT License - see LICENSE for details.