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¶
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. |
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}
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
Target |
Description |
---|---|
help |
Display item |
lint-doc8-help |
Display extended help for |
lint-doc8 |
Build system lint target used to syntax check restructuredText sources. |
lint-doc8-all |
Filesystem traversal, check all |
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.
Source |
Description |
---|---|
Main makefile logic for syntax checking RST sources. |
|
Dependency logic to install the doc8 tool when needed. |
|
Common doc8 exclusion patterns for all repositories. |
See Also¶
lint-doc8-all target dependency will create a python virtual env
python 3.10+ requires virtual env patching (dynamic, applied when needed).
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:
makefiles/lint/flake8.mk
Notes:
lint-flake8-all target dependency will create a python virtual env
python 3.10+ requires virtual env patching (dynamic, applied when needed).
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¶
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:
makefiles/lint/pylint.mk
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…