Makefile Lint Targets: Syntax Checking

Makefile Linting: By language

% git clone ssh://gerrit.opencord.org:29418/onf-make.git
% cd onf-make

% make help | grep lint
lint-chart                    chart_version_check.sh
lint-doc8                     Syntax check *.rst documentation files.
lint-helm                     Syntax check helm configs
lint-json                     Syntax check json sources
lint-license                  Verify sources contain a license block.
lint-robot                    Syntax check robot sources using rflint
lint-shell                    Syntax check bash,bourne,etc sources
lint-yaml                     Syntax check yaml source using yamllint

[PYTHON]
lint-python                   Syntax check using available python tools
lint-flake8                   Syntax check using tool flake8
lint-pylint                   Syntax check using tool pylint

Makefile Linting: By language target

Bulk sandbox linting

Make Target

Description

help | grpe lint

Display available help for lint targets and flags.

make lint

Invoke all source linters, linting is conditional by language.

Language and tool specific linting targets

lint-{topic}-help

Display extended help for a topic, supported targets and flags, etc.

lint-{topic}-all

Lint everything available by file extension.

lint-{topic}-mod

Lint locally modified files (git ls-files -m | lint)

lint-{topic}-src

Lint a list of files passed in (make lint-{topic}-src VAR=list-of-files)


All Sources

The generic lint target can be used to invoke all defined lint targets.

make clean
make lint 2>&1 | tee log

Makefile help

Individual Makefiles support a help target that will display a list of targets and functionality supported.

make help
make help | grep {topic}
help

Make Target

Description

help

Display available help for targets and flags

make help | lint-{topic}

Display summary usage for lint-doc8, lint-license, lint-make

lint-{topic}-help

Display extended help for a topic, supported makefile targets, etc

Legacy Help Usage

make help
make help-verbose
make help VERBOSE=1

doc8 / restructuredText (rst)

Command: doc8

Makefile Targets

Target

Description

help

Display item lint-doc8 as a summary help topic item.

lint-doc8-help

Display extended help for lint-doc8 targets

lint-doc8

Build system lint target used to syntax check restructuredText sources.

lint-doc8-all

Filesystem traversal, check all *.rst sources.

lint-doc8-mod

Syntax check locally modified files (~git status)

lint-doc8-src

Syntax check a list of files passed in as an argument.

lint-doc8-install

Dependency driven installation of the doc8 tool.

make clean
make lint-doc8 2>&1 | tee log

make lint   # supported by repositories that define lint-doc8 as a default target.
Sources

Source

Description

makefiles/lint/doc8/include.mk

Main makefile logic for syntax checking RST sources.

makefiles/lint/doc8/install.mk

Dependency logic to install the doc8 tool when needed.

makefiles/lint/doc8/excl.mk

Common doc8 exclusion patterns for all repositories.

See Also


python: flake8

Command: flake8

make clean
make lint                 2>&1 | tee log
make lint-flake8-all      2>&1 | tee log
make lint-flake8-modified 2>&1 | tee log

Sources:

Notes:


Golang

Command:

Sources:


JSON

Command: json.tool

make clean
make lint               2>&1 | tee log
make lint-json-all      2>&1 | tee log
make lint-json-modified 2>&1 | tee log

Sources:


python: pylint

Command: pylint, pypi.org

make clean
make lint                 2>&1 | tee log
make lint-pylint-all      2>&1 | tee log
make lint-pylint-modified 2>&1 | tee log

Sources:

Notes:

  • pylint the –py3k option is no longer supported by v3.10+

  • lint-pylint-all target dependency will create a python virtual env

  • python 3.10+ requires virtual env patching (dynamic, applied when needed).


Shell / Command Line Scripts

Command: shellcheck

make clean
make lint                2>&1 | tee log
make lint-shell-all      2>&1 | tee log
make lint-shell-modified 2>&1 | tee log

Sources:


Yaml

Command: yamllint

make clean
make lint           2>&1 | tee log
make lint-yaml-all  2>&1 | tee log
make lint--modified 2>&1 | tee log

Sources:


Bugs

  • jira::VOLTHA <https://jira.opencord.org/projects/VOL>-

  • Include repository URL

  • Include gerrit/github changeset if available.

  • A logfile snippet of the error and surrounding context.


Notes

  • Volume problem reports require cleanup before linting can become a default.

    • After bulk linting problems for a language source have been cleaned up default linting can be enabled by modifing {project-root}/config.mk.

  • Lint target support is globally available across repositories, given time it will be. Submit patches as needed or open a jira ticket to request linting support in specific repositories.

  • Makefile refactoring: yes absolutely! Baby steps are needed in the interim…