Mercurial > hg
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() |