A plugin for SublimeLinter which provides linting for Makefiles.
Use Package Control: search for a
package named SublimeLinter-contrib-makefile
and install it.
SublimeLinter must also be installed.
This plugin is able to detect the following mistakes. They will be visually signaled in the status bar and the left gutter.
Correct:
FOO = 1
test:
echo $(FOO)
Incorrect:
test:
echo $(FOO)
Correct:
clean:
rm -rf build/*
test:
${MAKE} clean
pytest .
Incorrect:
test:
${MAKE} clean
pytest .
When there's 2 targets with the same name, e.g.:
test:
pytest .
test:
pytest .
Any line starting with a space instead of tab is considered an error, e.g.
test1:
pytest . # use tab
test2:
pytest . # use spaces
.PHONY
directiveThis will print missing .PHONY declaration
if there's a file or directory
named "test" in the same directory as the Makefile:
test:
pytest .
Any trailing space at the end of the line, e.g.:
test:
pytest .<SPACE><SPACE><SPACE>
E.g.:
test:
pytest .
As stated in https://github.com/SublimeLinter/package_control_channel/pull/134, the motivation which led me to write this plugin is because the only Makefile linter I found is https://github.com/mrtazz/checkmake, which provides a quite limited set of rules. I wanted a linter which was able to identify at least undefined variable names, undefined target names, and the use of spaces instead of tabs. I found none so I wrote my own.
Indeed that probably makes a lot more sense. I may (or may not) do this later. :)