unmake 0.0.8

a makefile linter
Documentation

unmake: a makefile linter

                   _
 _ _ ___ _____ ___| |_ ___
| | |   |     | .'| '_| -_|
|___|_|_|_|_|_|__,|_,_|___|

ABOUT

unmake checks makefiles for syntax errors and portability issues.

EXAMPLES

$ cd fixtures

$ unmake .
error: ./invalid/crlf.mk:1:5 found "\r", expected: LF, comment, inline command, macro expansion, target, wait prerequisite marker
...

See unmake -h for more options.

NOTABLE FEATURES

Directory recursion

unmake automatically recurses over directories.

When recursing over directories, unmake skips symlinks.

unmake skips many implementation-specific files named like GNUmakefile or BSDmakefile.

unmake skips many machine-generated makefiles. For example, makefiles produced by autotools; Perl; and cmake when using the Unix Makefile generator (both in-source builds and out-of-source builds).

unmake skips any third party makefiles house in subdirectories like .git, node_modules, or vendor.

To investigate makefiles in more detail, try the --debug or --inspect options.

PARSE ERRORS

unmake can identify subtle makefile quirks.

See SYNTAX.md for more information.

LINTER WARNINGS

Coming soon.

CRATE

https://crates.io/crates/unmake

API DOCUMENTATION

https://docs.rs/unmake/latest/unmake/

DOWNLOAD

https://github.com/mcandre/unmake/releases

INSTALL FROM SOURCE

$ cargo install --force --path .

RUNTIME REQUIREMENTS

(None)

Recommended

CONTRIBUTING

For more details on developing crit itself, see DEVELOPMENT.md.

LICENSE

FreeBSD

MORE EXAMPLES

Some projects using unmake to safeguard their makefiles:

SEE ALSO

  • BSD make, a popular make implementation with BSD extensions
  • cmake, a make-adjacent build system with its own portability features
  • GNU make, a popular make implementation with GNU extensions
  • Grunt, Node.js task runners
  • invoke, a task runner for Python projects
  • lake, a task runner for Lua projects
  • mage, a task runner for Go projects
  • ninja, a fast build system without conditionals
  • nmake, a make-adjacent build system for .NET projects
  • Rake, a task runner for Ruby projects
  • Shake, a task runner for Haskell projects
  • ShellCheck, a linter for POSIX sh family shell scripts
  • slick, a POSIX sh syntax validator
  • tinyrick, a task runner for Rust projects