.. _code--makefile-lint-targets: ====================================== Makefile Lint Targets: Syntax Checking ====================================== Makefile Linting: By language ----------------------------- .. code:: bash % 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 ------------------------------------ .. list-table:: Bulk sandbox linting :widths: 20, 60 :header-rows: 1 * - 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. .. list-table:: Language and tool specific linting targets :widths: 20, 60 :header-rows: 1 * - 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) .. seealso:: - :ref:`Makefile Target lint-chart` - :ref:`Makefile Target lint-helm` - :ref:`Makefile Target lint-robot` | All Sources =========== The generic lint target can be used to invoke all defined lint targets. .. code:: bash 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. .. code:: bash make help make help | grep {topic} .. list-table:: help :widths: 20, 60 :header-rows: 1 * - 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 ----------------- .. code:: bash make help make help-verbose make help VERBOSE=1 | doc8 / restructuredText (rst) ============================= Command: `doc8 `_ .. list-table:: Makefile Targets :widths: 20, 60 :header-rows: 1 * - 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. .. code:: bash make clean make lint-doc8 2>&1 | tee log make lint # supported by repositories that define lint-doc8 as a default target. .. list-table:: Sources :widths: 20, 60 :header-rows: 1 * - 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 -------- - lint-doc8-all target dependency will create a `python virtual env `_ - python 3.10+ requires `virtual env patching `_ (dynamic, applied when needed). - `makefiles/patches/include.mk `__ | python: flake8 ============== Command: `flake8 `_ .. code:: bash 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 `__ - 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). - `makefiles/patches/include.mk `__ | Golang ====== Command: Sources: - `makefiles/lint `__ | JSON ==== Command: `json.tool `_ .. code:: bash 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: - `makefiles/lint `__ - `makefiles/lint/json.mk `_ | License / Copyright notice ========================== Command: .. code:: bash make clean make lint-license 2>&1 | tee log Sources: - `makefiles/lint `__ - `makefiles/lint/license.mk `_ | python: pylint ============== Command: `pylint `_, `pypi.org `_ .. code:: bash 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 `__ - makefiles/lint/pylint.mk - `makefiles/patches/include.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 `_ .. code:: bash 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: - `makefiles/lint `__ - `makefiles/lint/shell.mk `_ | Yaml ==== Command: `yamllint `_ .. code:: bash make clean make lint 2>&1 | tee log make lint-yaml-all 2>&1 | tee log make lint--modified 2>&1 | tee log Sources: - `makefiles/lint `__ - `makefiles/lint/yaml.mk `_ | Bugs ==== - `jira::VOLTHA `- - Include repository URL - Include gerrit/github changeset if available. - A logfile snippet of the error and surrounding context. | Repositories ============ - [`master `__] `bbsim `_ - [`master `__] `pod-configs `_ - [`master `__] `voltha-docs `_ - [`master `__] `voltha-helm-charts `_ - [`master `__] `voltha-docs `_ | 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... |