From ead76d2ac77309653cbac85bd1c24f740dc6cd05 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Mon, 28 Aug 2023 12:56:36 +0200 Subject: [PATCH] syntax-check: Introduce a rule for one line error messages 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 Reviewed-by: Peter Krempa --- build-aux/syntax-check.mk | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/build-aux/syntax-check.mk b/build-aux/syntax-check.mk index 64c1e2773e..d7cf109fbd 100644 --- a/build-aux/syntax-check.mk +++ b/build-aux/syntax-check.mk @@ -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$$)