comparison contrib/check-code.py @ 29397:844f72885fb9

check-code: detect "missing _() in ui message" more exactly Before this patch, "missing _() in ui message" rule overlooks translatable message, which starts with other than alphabet. To detect "missing _() in ui message" more exactly, this patch improves the regexp with assumptions below. - sequence consisting of below might precede "translatable message" in same string token - formatting string, which starts with '%' - escaped character, which starts with 'b' (as replacement of '\\'), or - characters other than '%', 'b' and 'x' (as replacement of alphabet) - any string tokens might precede a string token, which contains "translatable message" This patch builds an input file, which is used to examine "missing _() in ui message" detection, before '"$check_code" stringjoin.py' in test-contrib-check-code.t, because this reduces amount of change churn in subsequent patch. This patch also applies "()" instead of "_()" on messages below to hide false-positives: - messages for ui.debug() or debug commands/tools - contrib/debugshell.py - hgext/win32mbcs.py (ui.write() is used, though) - mercurial/commands.py - _debugchangegroup - debugindex - debuglocks - debugrevlog - debugrevspec - debugtemplate - untranslatable messages - doc/gendoc.py (ReST specific text) - hgext/hgk.py (permission string) - hgext/keyword.py (text written into configuration file) - mercurial/cmdutil.py (formatting strings for JSON)
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Tue, 21 Jun 2016 00:50:39 +0900
parents 12c97985ddeb
children 2a54cf92c773
comparison
equal deleted inserted replaced
29396:d0ae5b8f80dc 29397:844f72885fb9
327 (r'\.next\(\)', "don't use .next(), use next(...)"), 327 (r'\.next\(\)', "don't use .next(), use next(...)"),
328 328
329 # rules depending on implementation of repquote() 329 # rules depending on implementation of repquote()
330 (r' x+[xpqo%APM][\'"]\n\s+[\'"]x', 330 (r' x+[xpqo%APM][\'"]\n\s+[\'"]x',
331 'string join across lines with no space'), 331 'string join across lines with no space'),
332 (r'ui\.(status|progress|write|note|warn)\([\'\"]x', 332 (r'''(?x)ui\.(status|progress|write|note|warn)\(
333 [ \t\n#]*
334 (?# any strings/comments might precede a string, which
335 # contains translatable message)
336 ((['"]|\'\'\'|""")[ \npq%bAPMxno]*(['"]|\'\'\'|""")[ \t\n#]+)*
337 (?# sequence consisting of below might precede translatable message
338 # - formatting string: "% 10s", "%05d", "% -3.2f", "%*s", "%%" ...
339 # - escaped character: "\\", "\n", "\0" ...
340 # - character other than '%', 'b' as '\', and 'x' as alphabet)
341 (['"]|\'\'\'|""")
342 ((%([ n]?[PM]?([np]+|A))?x)|%%|b[bnx]|[ \nnpqAPMo])*x
343 (?# this regexp can't use [^...] style,
344 # because _preparepats forcibly adds "\n" into [^...],
345 # even though this regexp wants match it against "\n")''',
333 "missing _() in ui message (use () to hide false-positives)"), 346 "missing _() in ui message (use () to hide false-positives)"),
334 ], 347 ],
335 # warnings 348 # warnings
336 [ 349 [
337 # rules depending on implementation of repquote() 350 # rules depending on implementation of repquote()