mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 02:08:00 +00:00
Makefile: Add a pylint checker to the build
At present the Python code in U-Boot is somewhat inconsistent, with some files passing pylint quite cleanly and others not. Add a way to track progress on this clean-up, by checking that no module has got any worse as a result of changes. This can be used with 'make pylint'. Signed-off-by: Simon Glass <sjg@chromium.org> [trini: Re-generate pylint.base]
This commit is contained in:
parent
c761cf778f
commit
feafc61ea6
5 changed files with 351 additions and 1 deletions
80
doc/develop/python_cq.rst
Normal file
80
doc/develop/python_cq.rst
Normal file
|
@ -0,0 +1,80 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
Python code quality
|
||||
===================
|
||||
|
||||
U-Boot has about 60k lines of Python code, mainly in the following areas:
|
||||
|
||||
- tests
|
||||
- pytest hooks
|
||||
- patman patch submission tool
|
||||
- buildman build / analysis tool
|
||||
- dtoc devicetree-to-C tool
|
||||
- binman firmware packaging tool
|
||||
|
||||
`PEP 8`_ is used for the code style, with the single quote (') used by default for
|
||||
strings and double quote for doc strings. All non-trivial functions should be
|
||||
commented.
|
||||
|
||||
Pylint is used to help check this code and keep a consistent code style. The
|
||||
build system tracks the current 'score' of the source code and detects
|
||||
regressions in any module.
|
||||
|
||||
To run this locally you should use this version of pylint::
|
||||
|
||||
# pylint --version
|
||||
pylint 2.11.1
|
||||
astroid 2.8.6
|
||||
Python 3.8.10 (default, Sep 28 2021, 16:10:42)
|
||||
[GCC 9.3.0]
|
||||
|
||||
|
||||
You should be able to select and this install other required tools with::
|
||||
|
||||
pip install pylint==2.11.1
|
||||
pip install -r test/py/requirements.txt
|
||||
pip install asteval pyopenssl
|
||||
|
||||
Note that if your distribution is a year or two old, you make need to use `pip3`
|
||||
instead.
|
||||
|
||||
To configure pylint, make sure it has docparams enabled, e.g. with::
|
||||
|
||||
echo "[MASTER]" >> .pylintrc
|
||||
echo "load-plugins=pylint.extensions.docparams" >> .pylintrc
|
||||
|
||||
Once everything is ready, use this to check the code::
|
||||
|
||||
make pylint
|
||||
|
||||
This creates a directory called `pylint.out` which contains the pylint output
|
||||
for each Python file in U-Boot. It also creates a summary file called
|
||||
`pylint.cur` which shows the pylint score for each module::
|
||||
|
||||
_testing 0.83
|
||||
atf_bl31 -6.00
|
||||
atf_fip 0.49
|
||||
binman.cbfs_util 7.70
|
||||
binman.cbfs_util_test 9.19
|
||||
binman.cmdline 7.73
|
||||
binman.control 4.39
|
||||
binman.elf 6.42
|
||||
binman.elf_test 5.41
|
||||
...
|
||||
|
||||
This file is in alphabetical order. The build system compares the score of each
|
||||
module to `scripts/pylint.base` (which must also be sorted and have exactly the
|
||||
same modules in it) and reports any files where the score has dropped. Use
|
||||
pylint to check what is wrong and fix up the code before you send out your
|
||||
patches.
|
||||
|
||||
New or removed files results in an error which can be resolved by updating the
|
||||
`scripts/pylint.base` file to add/remove lines for those files, e.g.::
|
||||
|
||||
meld pylint.cur scripts/pylint.base
|
||||
|
||||
If the pylint version is updated in CI, this may result in needing to regenerate
|
||||
`scripts/pylint.base`.
|
||||
|
||||
|
||||
.. _`PEP 8`: https://www.python.org/dev/peps/pep-0008/
|
Loading…
Add table
Add a link
Reference in a new issue