[libvirt] [PATCHv2] maint: Use flake8 to check python code

Shi Lei posted 1 patch 4 years, 7 months ago
Test syntax-check passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20190918041943.21832-1-shi_lei@massclouds.com
cfg.mk       | 17 ++++++++++++-----
configure.ac |  4 ++++
2 files changed, 16 insertions(+), 5 deletions(-)
[libvirt] [PATCHv2] maint: Use flake8 to check python code
Posted by Shi Lei 4 years, 7 months ago
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@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


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCHv2] maint: Use flake8 to check python code
Posted by Ján Tomko 4 years, 7 months ago
On Wed, Sep 18, 2019 at 12:19:43PM +0800, Shi Lei wrote:
>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@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(-)
>

Reviewed-by: Ján Tomko <jtomko@redhat.com>

and pushed now

Jano
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list