]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
syntax-check: Introduce a rule for one line error messages
authorMichal Privoznik <mprivozn@redhat.com>
Mon, 28 Aug 2023 10:56:36 +0000 (12:56 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 4 Sep 2023 10:14:54 +0000 (12:14 +0200)
Okay, this is a shortcut. Our coding style says that error
messages are exempt from '80 chars long lines' rule. But in the
very same paragraph it is said that all error messages need to be
marked for translation (as they might be presented to user).

Therefore, the syntax-check rule can check if _("...") is
formatted on one line. With exception of _("...\n" ...) (e.g.
various outputs from helper binaries like leaseshelper,
sshhelper, or daemons like lockd, logd). I believe nobody would
chose a substring that contains '\n' for git grep-ping the error
message.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
build-aux/syntax-check.mk

index 64c1e2773ea77bb19021b17e0bf9072ba3ac26b6..d7cf109fbd35f8c13d3b5b6cf606b85e9457b3e6 100644 (file)
@@ -440,6 +440,14 @@ sc_prohibit_newline_at_end_of_diagnostic:
          && { echo 'newline at end of message(s)' 1>&2; \
            exit 1; } || :
 
+# Disallow translated messages on multiple lines, except when
+# they end with '\n'.
+sc_prohibit_error_message_on_multiple_lines:
+       @prohibit='[^N]_\(".*"$$' \
+    exclude='\\n"$$' \
+       halt='found error message on multiple lines' \
+       $(_sc_search_regexp)
+
 # Look for diagnostics that lack a % in the format string, except that we
 # allow VIR_ERROR to do this, and ignore functions that take a single
 # string rather than a format argument.
@@ -1386,6 +1394,9 @@ exclude_file_name_regexp--sc_prohibit_raw_virclassnew = \
 exclude_file_name_regexp--sc_prohibit_newline_at_end_of_diagnostic = \
   ^src/rpc/gendispatch\.pl$$
 
+exclude_file_name_regexp--sc_prohibit_error_message_on_multiple_lines = \
+  ^(build-aux/syntax-check\.mk|docs/coding-style.rst)
+
 exclude_file_name_regexp--sc_prohibit_nonreentrant = \
   ^((po|tests|examples)/|docs/.*(py|js|html\.in|.rst)|run.in$$|tools/wireshark/util/genxdrstub\.pl|tools/virt-login-shell\.c$$)