ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

Sublime​Linter-contrib-makefile

by giampaolo ST3

SublimeLinter plugin for Makefiles

Labels linting, makefile, make

Details

  • 0.1.2
  • github.​com
  • github.​com
  • 5 months ago
  • 23 minutes ago
  • 6 months ago

Installs

  • Total 98
  • Win 49
  • Mac 23
  • Linux 26
Apr 27 Apr 26 Apr 25 Apr 24 Apr 23 Apr 22 Apr 21 Apr 20 Apr 19 Apr 18 Apr 17 Apr 16 Apr 15 Apr 14 Apr 13 Apr 12 Apr 11 Apr 10 Apr 9 Apr 8 Apr 7 Apr 6 Apr 5 Apr 4 Apr 3 Apr 2 Apr 1 Mar 31 Mar 30 Mar 29 Mar 28 Mar 27 Mar 26 Mar 25 Mar 24 Mar 23 Mar 22 Mar 21 Mar 20 Mar 19 Mar 18 Mar 17 Mar 16 Mar 15 Mar 14
Windows 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 2 1
Mac 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0

Readme

Source
raw.​githubusercontent.​com

tests

About

A plugin for SublimeLinter which provides linting for Makefiles.

Installation

Use Package Control: search for a package named SublimeLinter-contrib-makefile and install it. SublimeLinter must also be installed.

Checkers

This plugin is able to detect the following mistakes. They will be visually signaled in the status bar and the left gutter.

Undefined global variable names

Correct:

FOO = 1

test:
    echo $(FOO)

Incorrect:

test:
    echo $(FOO)

Undefined target names

Correct:

clean:
    rm -rf build/*

test:
    ${MAKE} clean
    pytest .

Incorrect:

test:
    ${MAKE} clean
    pytest .

Duplicated targets

When there's 2 targets with the same name, e.g.:

test:
    pytest .

test:
    pytest .

Use of spaces instead of tabs

Any line starting with a space instead of tab is considered an error, e.g.

test1:
    pytest .  # use tab

test2:
  pytest .  # use spaces

Missing .PHONY directive

This will print missing .PHONY declaration if there's a file or directory named “test” in the same directory as the Makefile:

test:
    pytest .

Trailing spaces

Any trailing space at the end of the line, e.g.:

test:
    pytest .<SPACE><SPACE><SPACE>

Unnecessary empty lines at EOF

E.g.:

test:
    pytest .

Motivations

Why not use an existing CLI tool?

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.

Why not turn this into a generic CLI tool?

Indeed that probably makes a lot more sense. I may (or may not) do this later. :)