Replace 'sc_prohibit_semicolon_at_eol_in_python' with generic 'sc_flake8'
rule
to check python code style.
Now 'sc_flake8' just check the error E703: 'statement ends with a
semicolon'.
In future, we could use '--select' to introduce more rules.
Signed-off-by: Shi Lei <shi_lei(a)massclouds.com>
---
v1:
https://www.redhat.com/archives/libvir-list/2019-September/msg00501.html
since v1:
- Use the return-value from flake8 directly for 'sc_flake8'.
- Add the option '--show-source' to be more helpful for developers.
- Set checking for 'flake8' as a soft requirement.
cfg.mk | 17 ++++++++++++-----
configure.ac | 4 ++++
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/cfg.mk b/cfg.mk
index 42e1abf0..a7c88383 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -812,11 +812,13 @@ sc_require_enum_last_marker:
exit 1; } || :
# In Python files we don't want to end lines with a semicolon like in C
-sc_prohibit_semicolon_at_eol_in_python:
- @prohibit='^[^#].*\;$$' \
- in_vc_files='\.py$$' \
- halt='python does not require to end lines with a semicolon' \
- $(_sc_search_regexp)
+sc_flake8:
+ @if [ -n "$(FLAKE8)" ]; then \
+ $(VC_LIST_EXCEPT) | $(GREP) '\.py$$' | xargs \
+ $(FLAKE8) --select E703 --show-source; \
+ else \
+ echo '$(ME): skipping test $@: flake8 not installed' 1>&2; \
+ fi
# mymain() in test files should use return, not exit, for nicer output
sc_prohibit_exit_in_tests:
@@ -1140,6 +1142,11 @@ syntax-check: spacing-check test-wrap-argv \
echo "*****************************************************" >&2; \
echo "* cppi not installed, some checks have been skipped *" >&2; \
echo "*****************************************************" >&2; \
+ fi; \
+ if [ -z "$(FLAKE8)" ]; then \
+ echo "*****************************************************" >&2; \
+ echo "* flake8 not installed, sc_flake8 has been skipped *" >&2; \
+ echo "*****************************************************" >&2; \
fi
endif
diff --git a/configure.ac b/configure.ac
index 41d3da3e..286b9f7a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -704,6 +704,10 @@ AC_PATH_PROGS([PYTHON], [python3 python2 python])
if test -z "$PYTHON"; then
AC_MSG_ERROR(['python3', 'python2' or 'python' binary is
required to build libvirt])
fi
+AC_PATH_PROG([FLAKE8], [flake8])
+if test -z "$FLAKE8"; then
+ AC_MSG_WARN(['flake8' binary is required to check python code style])
+fi
AC_PATH_PROG([PERL], [perl])
if test -z "$PERL"; then
AC_MSG_ERROR(['perl' binary is required to build libvirt])
--
2.17.1