Mercurial > public > mercurial-scm > hg-stable
annotate contrib/check-code.py @ 52665:24ee91ba9aa8
pyupgrade: drop usage of py3 aliases for `OSError`
These were different classes in py2, but now a handful of error classes are just
an alias of `OSError`, like `IOError`, `EnvironmentError`, `WindowsError`, etc.
This is the result of running a hacked version of `pyupgrade` 3.19.1[1]
$ hg files -0 'relglob:**.py' | xargs -0 \
pyupgrade --py38-plus --keep-percent-format --keep-mock --keep-runtime-typing
The hack is because it doesn't have command line switches to disable most
changes, so it makes tons of unrelated changes all at once. The hack is to
1) patch `pyupgrade._main._fix_tokens()` to immediately return its content arg
2) change `pyupgrade._data.register_decorator()` to only register the function
if it's from the fixer we're interested in:
if func.__module__ in (
"pyupgrade._plugins.exceptions",
):
FUNCS[tp].append(func)
return func
[1] https://github.com/asottile/pyupgrade
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 05 Jan 2025 21:03:17 -0500 |
parents | 3b6f25190157 |
children | e38292b85f9f |
rev | line source |
---|---|
45849
c102b704edb5
global: use python3 in shebangs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43551
diff
changeset
|
1 #!/usr/bin/env python3 |
10281 | 2 # |
3 # check-code - a style and portability checker for Mercurial | |
4 # | |
46819
d4ba4d51f85f
contributor: change mentions of mpm to olivia
Rapha?l Gom?s <rgomes@octobus.net>
parents:
45957
diff
changeset
|
5 # Copyright 2010 Olivia Mackall <olivia@selenic.com> |
10281 | 6 # |
7 # This software may be used and distributed according to the terms of the | |
8 # GNU General Public License version 2 or any later version. | |
9 | |
20241
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
10 """style and portability checker for Mercurial |
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
11 |
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
12 when a rule triggers wrong, do one of the following (prefer one from top): |
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
13 * do the work-around the rule suggests |
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
14 * doublecheck that it is a false match |
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
15 * improve the rule pattern |
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
16 * add an ignore pattern to the rule (3rd arg) which matches your good line |
28700
35ad5bcdeb7e
py24: remove check-code py24 notation
timeless <timeless@mozdev.org>
parents:
28595
diff
changeset
|
17 (you can append a short comment and match this, like: #re-raises) |
20241
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
18 * change the pattern to a warning and list the exception in test-check-code-hg |
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
19 * ONLY use no--check-code for skipping entire files from external sources |
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
20 """ |
8071b4eddefa
check-code: explain what to do when a check-code rule mismatches
Simon Heimberg <simohe@besonet.ch>
parents:
20239
diff
changeset
|
21 |
28509
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
22 import glob |
13074
637627f31c74
check-code: check for gratuitous whitespace after Python keywords
Thomas Arendsen Hein <thomas@jtah.de>
parents:
13031
diff
changeset
|
23 import keyword |
10895
217557b26bc7
check-code: add a warnings level
Matt Mackall <mpm@selenic.com>
parents:
10814
diff
changeset
|
24 import optparse |
28509
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
25 import os |
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
26 import re |
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
27 import sys |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
28 |
29145
c641b8dfb98c
check-code: handle py3 open divergence
timeless <timeless@mozdev.org>
parents:
29144
diff
changeset
|
29 if sys.version_info[0] < 3: |
c641b8dfb98c
check-code: handle py3 open divergence
timeless <timeless@mozdev.org>
parents:
29144
diff
changeset
|
30 opentext = open |
c641b8dfb98c
check-code: handle py3 open divergence
timeless <timeless@mozdev.org>
parents:
29144
diff
changeset
|
31 else: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
32 |
29145
c641b8dfb98c
check-code: handle py3 open divergence
timeless <timeless@mozdev.org>
parents:
29144
diff
changeset
|
33 def opentext(f): |
39093
c52a8af4052a
contrib: have check-code look at files in latin1 instead of ascii
Augie Fackler <augie@google.com>
parents:
38824
diff
changeset
|
34 return open(f, encoding='latin1') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
35 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
36 |
19310
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
37 try: |
29143
8ed693ec5398
check-code: handle range/xrange divergence
timeless <timeless@mozdev.org>
parents:
29142
diff
changeset
|
38 xrange |
8ed693ec5398
check-code: handle range/xrange divergence
timeless <timeless@mozdev.org>
parents:
29142
diff
changeset
|
39 except NameError: |
8ed693ec5398
check-code: handle range/xrange divergence
timeless <timeless@mozdev.org>
parents:
29142
diff
changeset
|
40 xrange = range |
8ed693ec5398
check-code: handle range/xrange divergence
timeless <timeless@mozdev.org>
parents:
29142
diff
changeset
|
41 try: |
19310
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
42 import re2 |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
43 except ImportError: |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
44 re2 = None |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
45 |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
46 import testparseutil |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
47 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
48 |
19310
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
49 def compilere(pat, multiline=False): |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
50 if multiline: |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
51 pat = '(?m)' + pat |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
52 if re2: |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
53 try: |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
54 return re2.compile(pat) |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
55 except re2.error: |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
56 pass |
30ea54660d14
check-code: introduce function for using re2 when available
Simon Heimberg <simohe@besonet.ch>
parents:
19309
diff
changeset
|
57 return re.compile(pat) |
10281 | 58 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
59 |
29398
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
60 # check "rules depending on implementation of repquote()" in each |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
61 # patterns (especially pypats), before changing around repquote() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
62 _repquotefixedmap = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
63 ' ': ' ', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
64 '\n': '\n', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
65 '.': 'p', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
66 ':': 'q', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
67 '%': '%', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
68 '\\': 'b', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
69 '*': 'A', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
70 '+': 'P', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
71 '-': 'M', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
72 } |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
73 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
74 |
29398
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
75 def _repquoteencodechr(i): |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
76 if i > 255: |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
77 return 'u' |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
78 c = chr(i) |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
79 if c in _repquotefixedmap: |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
80 return _repquotefixedmap[c] |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
81 if c.isalpha(): |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
82 return 'x' |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
83 if c.isdigit(): |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
84 return 'n' |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
85 return 'o' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
86 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
87 |
29398
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
88 _repquotett = ''.join(_repquoteencodechr(i) for i in xrange(256)) |
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
89 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
90 |
10281 | 91 def repquote(m): |
19999
169cb9e47f8e
check-code: more replacement characters
Simon Heimberg <simohe@besonet.ch>
parents:
19998
diff
changeset
|
92 t = m.group('text') |
29398
2a54cf92c773
check-code: build translation table for repquote in global for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29397
diff
changeset
|
93 t = t.translate(_repquotett) |
10722
c4fb2103e734
check-code: improve quote detection regexp, add tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10720
diff
changeset
|
94 return m.group('quote') + t + m.group('quote') |
10281 | 95 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
96 |
10727
62b8f15683f2
check-code: more tests and more robust python filtering
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10723
diff
changeset
|
97 def reppython(m): |
62b8f15683f2
check-code: more tests and more robust python filtering
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10723
diff
changeset
|
98 comment = m.group('comment') |
62b8f15683f2
check-code: more tests and more robust python filtering
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10723
diff
changeset
|
99 if comment: |
18959
2f6418d8a4c9
check-code: catch trailing space in comments
Mads Kiilerich <madski@unity3d.com>
parents:
18835
diff
changeset
|
100 l = len(comment.rstrip()) |
2f6418d8a4c9
check-code: catch trailing space in comments
Mads Kiilerich <madski@unity3d.com>
parents:
18835
diff
changeset
|
101 return "#" * l + comment[l:] |
10727
62b8f15683f2
check-code: more tests and more robust python filtering
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10723
diff
changeset
|
102 return repquote(m) |
10281 | 103 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
104 |
10281 | 105 def repcomment(m): |
106 return m.group(1) + "#" * len(m.group(2)) | |
107 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
108 |
10281 | 109 def repccomment(m): |
110 t = re.sub(r"((?<=\n) )|\S", "x", m.group(2)) | |
111 return m.group(1) + t + "*/" | |
112 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
113 |
10281 | 114 def repcallspaces(m): |
115 t = re.sub(r"\n\s+", "\n", m.group(2)) | |
116 return m.group(1) + t | |
117 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
118 |
10281 | 119 def repinclude(m): |
120 return m.group(1) + "<foo>" | |
121 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
122 |
10281 | 123 def rephere(m): |
124 t = re.sub(r"\S", "x", m.group(2)) | |
125 return m.group(1) + t | |
126 | |
127 | |
128 testpats = [ | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
129 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
130 (r'\b(push|pop)d\b', "don't use 'pushd' or 'popd', use 'cd'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
131 (r'\W\$?\(\([^\)\n]*\)\)', "don't use (()) or $(()), use 'expr'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
132 (r'grep.*-q', "don't use 'grep -q', redirect to /dev/null"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
133 (r'(?<!hg )grep.* -a', "don't use 'grep -a', use in-line python"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
134 (r'sed.*-i', "don't use 'sed -i', use a temporary file"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
135 (r'\becho\b.*\\n', "don't use 'echo \\n', use printf"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
136 (r'echo -n', "don't use 'echo -n', use printf"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
137 (r'(^|\|\s*)\bwc\b[^|]*$\n(?!.*\(re\))', "filter wc output"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
138 (r'head -c', "don't use 'head -c', use 'dd'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
139 (r'tail -n', "don't use the '-n' option to tail, just use '-<num>'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
140 (r'sha1sum', "don't use sha1sum, use $TESTDIR/md5sum.py"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
141 (r'\bls\b.*-\w*R', "don't use 'ls -R', use 'find'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
142 (r'printf.*[^\\]\\([1-9]|0\d)', r"don't use 'printf \NNN', use Python"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
143 (r'printf.*[^\\]\\x', "don't use printf \\x, use Python"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
144 (r'rm -rf \*', "don't use naked rm -rf, target a directory"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
145 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
146 r'\[[^\]]+==', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
147 '[ foo == bar ] is a bashism, use [ foo = bar ] instead', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
148 ), |
50722
7e5be4a7cda7
tests: use grep -E instead of obsolescent egrep
Mads Kiilerich <mads@kiilerich.com>
parents:
49719
diff
changeset
|
149 (r'(^|\|\s*)egrep', "use grep -E for extended grep syntax"), |
50723
65f949da8469
tests: use grep -F instead of obsolescent fgrep
Mads Kiilerich <mads@kiilerich.com>
parents:
50722
diff
changeset
|
150 (r'(^|\|\s*)fgrep', "use grep -F for fixed string grepping"), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
151 (r'(^|\|\s*)e?grep .*\\S', "don't use \\S in regular expression"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
152 (r'(?<!!)/bin/', "don't use explicit paths for tools"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
153 (r'#!.*/bash', "don't use bash in shebang, use sh"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
154 (r'[^\n]\Z', "no trailing newline"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
155 (r'export .*=', "don't export and assign at once"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
156 (r'^source\b', "don't use 'source', use '.'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
157 (r'touch -d', "don't use 'touch -d', use 'touch -t' instead"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
158 (r'\bls +[^|\n-]+ +-', "options to 'ls' must come before filenames"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
159 (r'[^>\n]>\s*\$HGRCPATH', "don't overwrite $HGRCPATH, append to it"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
160 (r'^stop\(\)', "don't use 'stop' as a shell function name"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
161 (r'(\[|\btest\b).*-e ', "don't use 'test -e', use 'test -f'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
162 (r'\[\[\s+[^\]]*\]\]', "don't use '[[ ]]', use '[ ]'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
163 (r'^alias\b.*=', "don't use alias, use a function"), |
51691
1c23faf64ad4
check-code: document reason and suggest alternative to exit code negation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50950
diff
changeset
|
164 # Solaris sh can not negate exit status with '!' |
1c23faf64ad4
check-code: document reason and suggest alternative to exit code negation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50950
diff
changeset
|
165 ( |
1c23faf64ad4
check-code: document reason and suggest alternative to exit code negation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50950
diff
changeset
|
166 r'if\s*!', |
1c23faf64ad4
check-code: document reason and suggest alternative to exit code negation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50950
diff
changeset
|
167 "don't use '!' to negate exit status (use `||` or if/else)", |
1c23faf64ad4
check-code: document reason and suggest alternative to exit code negation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50950
diff
changeset
|
168 ), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
169 (r'/dev/u?random', "don't use entropy, use /dev/zero"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
170 (r'do\s*true;\s*done', "don't use true as loop body, use sleep 0"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
171 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
172 r'sed (-e )?\'(\d+|/[^/]*/)i(?!\\\n)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
173 "put a backslash-escaped newline after sed 'i' command", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
174 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
175 (r'^diff *-\w*[uU].*$\n(^ \$ |^$)', "prefix diff -u/-U with cmp"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
176 (r'^\s+(if)? diff *-\w*[uU]', "prefix diff -u/-U with cmp"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
177 (r'[\s="`\']python\s(?!bindings)', "don't use 'python', use '$PYTHON'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
178 (r'seq ', "don't use 'seq', use $TESTDIR/seq.py"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
179 (r'\butil\.Abort\b', "directly use error.Abort"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
180 (r'\|&', "don't use |&, use 2>&1"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
181 (r'\w = +\w', "only one space after = allowed"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
182 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
183 r'\bsed\b.*[^\\]\\n', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
184 "don't use 'sed ... \\n', use a \\ and a newline", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
185 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
186 (r'env.*-u', "don't use 'env -u VAR', use 'unset VAR'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
187 (r'cp.* -r ', "don't use 'cp -r', use 'cp -R'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
188 (r'grep.* -[ABC]', "don't use grep's context flags"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
189 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
190 r'find.*-printf', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
191 "don't use 'find -printf', it doesn't exist on BSD find(1)", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
192 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
193 (r'\$RANDOM ', "don't use bash-only $RANDOM to generate random values"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
194 ], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
195 # warnings |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
196 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
197 (r'^function', "don't use 'function', use old style"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
198 (r'^diff.*-\w*N', "don't use 'diff -N'"), |
47879
b84fe613de33
check-code: make it possible to ignore the PWD check in some situation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47851
diff
changeset
|
199 (r'\$PWD|\${PWD}', "don't use $PWD, use `pwd`", "no-pwd-check"), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
200 (r'^([^"\'\n]|("[^"\n]*")|(\'[^\'\n]*\'))*\^', "^ must be quoted"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
201 (r'kill (`|\$\()', "don't use kill, use killdaemons.py"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
202 ], |
10281 | 203 ] |
204 | |
205 testfilters = [ | |
34077
e267d4ee4f2d
check-code: forbid using bash in shebang
Jun Wu <quark@fb.com>
parents:
33369
diff
changeset
|
206 (r"( *)(#([^!][^\n]*\S)?)", repcomment), |
10281 | 207 (r"<<(\S+)((.|\n)*?\n\1)", rephere), |
208 ] | |
209 | |
15372
695ac6aca77f
check-code: fix issues with finding patterns in unified tests, fix tests
Matt Mackall <mpm@selenic.com>
parents:
15364
diff
changeset
|
210 uprefix = r"^ \$ " |
12364
e128fa4615f2
check-code: add some basic support for unified tests
Matt Mackall <mpm@selenic.com>
parents:
11886
diff
changeset
|
211 utestpats = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
212 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
213 (r'^(\S.*|| [$>] \S.*)[ \t]\n', "trailing whitespace on non-output"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
214 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
215 uprefix + r'.*\|\s*sed[^|>\n]*\n', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
216 "use regex test output patterns instead of sed", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
217 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
218 (uprefix + r'(true|exit 0)', "explicit zero exit unnecessary"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
219 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
220 uprefix + r'.*\|\| echo.*(fail|error)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
221 "explicit exit code checks unnecessary", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
222 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
223 (uprefix + r'set -e', "don't use set -e"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
224 (uprefix + r'(\s|fi\b|done\b)', "use > for continued lines"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
225 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
226 uprefix + r'.*:\.\S*/', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
227 "x:.y in a path does not work on msys, rewrite " |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
228 "as x://.y, or see `hg log -k msys` for alternatives", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
229 r'-\S+:\.|' '# no-msys', # -Rxxx |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
230 ), # in test-pull.t which is skipped on windows |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
231 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
232 r'^ [^$>].*27\.0\.0\.1', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
233 'use $LOCALIP not an explicit loopback address', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
234 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
235 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
236 r'^ (?![>$] ).*\$LOCALIP.*[^)]$', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
237 'mark $LOCALIP output lines with (glob) to help tests in BSD jails', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
238 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
239 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
240 r'^ (cat|find): .*: \$ENOENT\$', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
241 'use test -f to test for file existence', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
242 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
243 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
244 r'^ diff -[^ -]*p', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
245 "don't use (external) diff with -p for portability", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
246 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
247 (r' readlink ', 'use readlink.py instead of readlink'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
248 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
249 r'^ [-+][-+][-+] .* [-+]0000 \(glob\)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
250 "glob timezone field in diff output for portability", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
251 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
252 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
253 r'^ @@ -[0-9]+ [+][0-9]+,[0-9]+ @@', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
254 "use '@@ -N* +N,n @@ (glob)' style chunk header for portability", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
255 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
256 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
257 r'^ @@ -[0-9]+,[0-9]+ [+][0-9]+ @@', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
258 "use '@@ -N,n +N* @@ (glob)' style chunk header for portability", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
259 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
260 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
261 r'^ @@ -[0-9]+ [+][0-9]+ @@', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
262 "use '@@ -N* +N* @@ (glob)' style chunk header for portability", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
263 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
264 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
265 uprefix + r'hg( +-[^ ]+( +[^ ]+)?)* +extdiff' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
266 r'( +(-[^ po-]+|--(?!program|option)[^ ]+|[^-][^ ]*))*$', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
267 "use $RUNTESTDIR/pdiff via extdiff (or -o/-p for false-positives)", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
268 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
269 ], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
270 # warnings |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
271 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
272 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
273 r'^ (?!.*\$LOCALIP)[^*?/\n]* \(glob\)$', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
274 "glob match with no glob string (?, *, /, and $LOCALIP)", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
275 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
276 ], |
12364
e128fa4615f2
check-code: add some basic support for unified tests
Matt Mackall <mpm@selenic.com>
parents:
11886
diff
changeset
|
277 ] |
e128fa4615f2
check-code: add some basic support for unified tests
Matt Mackall <mpm@selenic.com>
parents:
11886
diff
changeset
|
278 |
35324
e223c0438f89
check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
35260
diff
changeset
|
279 # transform plain test rules to unified test's |
14203
b230922eb0c3
check-code: fix checking for sh style in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents:
14169
diff
changeset
|
280 for i in [0, 1]: |
22101
6fa40bd78bc8
check-code: allow an escape pattern to be specified for testpattern
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22100
diff
changeset
|
281 for tp in testpats[i]: |
6fa40bd78bc8
check-code: allow an escape pattern to be specified for testpattern
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22100
diff
changeset
|
282 p = tp[0] |
6fa40bd78bc8
check-code: allow an escape pattern to be specified for testpattern
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22100
diff
changeset
|
283 m = tp[1] |
43551
313e3a279828
cleanup: remove pointless r-prefixes on double-quoted strings
Augie Fackler <augie@google.com>
parents:
43112
diff
changeset
|
284 if p.startswith('^'): |
313e3a279828
cleanup: remove pointless r-prefixes on double-quoted strings
Augie Fackler <augie@google.com>
parents:
43112
diff
changeset
|
285 p = "^ [$>] (%s)" % p[1:] |
14203
b230922eb0c3
check-code: fix checking for sh style in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents:
14169
diff
changeset
|
286 else: |
43551
313e3a279828
cleanup: remove pointless r-prefixes on double-quoted strings
Augie Fackler <augie@google.com>
parents:
43112
diff
changeset
|
287 p = "^ [$>] .*(%s)" % p |
22101
6fa40bd78bc8
check-code: allow an escape pattern to be specified for testpattern
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22100
diff
changeset
|
288 utestpats[i].append((p, m) + tp[2:]) |
12364
e128fa4615f2
check-code: add some basic support for unified tests
Matt Mackall <mpm@selenic.com>
parents:
11886
diff
changeset
|
289 |
35324
e223c0438f89
check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
35260
diff
changeset
|
290 # don't transform the following rules: |
e223c0438f89
check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
35260
diff
changeset
|
291 # " > \t" and " \t" should be allowed in unified tests |
e223c0438f89
check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
35260
diff
changeset
|
292 testpats[0].append((r'^( *)\t', "don't use tabs to indent")) |
e223c0438f89
check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
35260
diff
changeset
|
293 utestpats[0].append((r'^( ?)\t', "don't use tabs to indent")) |
e223c0438f89
check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
35260
diff
changeset
|
294 |
12364
e128fa4615f2
check-code: add some basic support for unified tests
Matt Mackall <mpm@selenic.com>
parents:
11886
diff
changeset
|
295 utestfilters = [ |
17711
cf204e9829f4
check-code: replace heredocs in unified tests
Idan Kamara <idankk86@gmail.com>
parents:
17620
diff
changeset
|
296 (r"<<(\S+)((.|\n)*?\n > \1)", rephere), |
34077
e267d4ee4f2d
check-code: forbid using bash in shebang
Jun Wu <quark@fb.com>
parents:
33369
diff
changeset
|
297 (r"( +)(#([^!][^\n]*\S)?)", repcomment), |
12364
e128fa4615f2
check-code: add some basic support for unified tests
Matt Mackall <mpm@selenic.com>
parents:
11886
diff
changeset
|
298 ] |
e128fa4615f2
check-code: add some basic support for unified tests
Matt Mackall <mpm@selenic.com>
parents:
11886
diff
changeset
|
299 |
41826
14e8d042993a
contrib: split pypats list in check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41770
diff
changeset
|
300 # common patterns to check *.py |
14e8d042993a
contrib: split pypats list in check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41770
diff
changeset
|
301 commonpypats = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
302 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
303 (r'\\$', 'Use () to wrap long lines in Python, not \\'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
304 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
305 r'^\s*def\s*\w+\s*\(.*,\s*\(', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
306 "tuple parameter unpacking not available in Python 3+", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
307 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
308 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
309 r'lambda\s*\(.*,.*\)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
310 "tuple parameter unpacking not available in Python 3+", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
311 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
312 (r'(?<!def)\s+(cmp)\(', "cmp is not available in Python 3+"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
313 (r'(?<!\.)\breduce\s*\(.*', "reduce is not available in Python 3+"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
314 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
315 r'\bdict\(.*=', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
316 'dict() is different in Py2 and 3 and is slower than {}', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
317 'dict-from-generator', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
318 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
319 (r'\.has_key\b', "dict.has_key is not available in Python 3+"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
320 (r'\s<>\s', '<> operator is not available in Python 3+, use !='), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
321 (r'^\s*\t', "don't use tabs"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
322 (r'\S;\s*\n', "semicolon"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
323 (r'[^_]_\([ \t\n]*(?:"[^"]+"[ \t\n+]*)+%', "don't use % inside _()"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
324 (r"[^_]_\([ \t\n]*(?:'[^']+'[ \t\n+]*)+%", "don't use % inside _()"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
325 (r'(\w|\)),\w', "missing whitespace after ,"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
326 (r'(\w|\))[+/*\-<>]\w', "missing whitespace in expression"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
327 (r'\w\s=\s\s+\w', "gratuitous whitespace after ="), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
328 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
329 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
330 # a line ending with a colon, potentially with trailing comments |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
331 r':([ \t]*#[^\n]*)?\n' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
332 # one that is not a pass and not only a comment |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
333 r'(?P<indent>[ \t]+)[^#][^\n]+\n' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
334 # more lines at the same indent level |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
335 r'((?P=indent)[^\n]+\n)*' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
336 # a pass at the same indent level, which is bogus |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
337 r'(?P=indent)pass[ \t\n#]' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
338 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
339 'omit superfluous pass', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
340 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
341 (r'[^\n]\Z', "no trailing newline"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
342 (r'(\S[ \t]+|^[ \t]+)\n', "trailing whitespace"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
343 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
344 r'^\s*(if|while|def|class|except|try)\s[^[\n]*:\s*[^\\n]#\s]+', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
345 "linebreak after :", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
346 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
347 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
348 r'\b(%s)\(' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
349 % '|'.join(k for k in keyword.kwlist if k not in ('print', 'exec')), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
350 "Python keyword is not a function", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
351 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
352 # (r'class\s[A-Z][^\(]*\((?!Exception)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
353 # "don't capitalize non-exception classes"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
354 # (r'in range\(', "use xrange"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
355 # (r'^\s*print\s+', "avoid using print in core and extensions"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
356 (r'[\x80-\xff]', "non-ASCII character literal"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
357 (r'("\')\.format\(', "str.format() has no bytes counterpart, use %"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
358 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
359 r'([\(\[][ \t]\S)|(\S[ \t][\)\]])', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
360 "gratuitous whitespace in () or []", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
361 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
362 # (r'\s\s=', "gratuitous whitespace before ="), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
363 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
364 r'[^>< ](\+=|-=|!=|<>|<=|>=|<<=|>>=|%=)\S', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
365 "missing whitespace around operator", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
366 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
367 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
368 r'[^>< ](\+=|-=|!=|<>|<=|>=|<<=|>>=|%=)\s', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
369 "missing whitespace around operator", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
370 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
371 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
372 r'\s(\+=|-=|!=|<>|<=|>=|<<=|>>=|%=)\S', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
373 "missing whitespace around operator", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
374 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
375 (r'[^^+=*/!<>&| %-](\s=|=\s)[^= ]', "wrong whitespace around ="), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
376 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
377 r'raise [^,(]+, (\([^\)]+\)|[^,\(\)]+)$', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
378 "don't use old-style two-argument raise, use Exception(message)", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
379 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
380 (r' is\s+(not\s+)?["\'0-9-]', "object comparison with literal"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
381 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
382 r' [=!]=\s+(True|False|None)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
383 "comparison with singleton, use 'is' or 'is not' instead", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
384 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
385 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
386 r'^\s*(while|if) [01]:', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
387 "use True/False for constant Boolean expression", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
388 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
389 (r'^\s*if False(:| +and)', 'Remove code instead of using `if False`'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
390 (r'opener\([^)]*\).read\(', "use opener.read() instead"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
391 (r'opener\([^)]*\).write\(', "use opener.write() instead"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
392 (r'(?i)descend[e]nt', "the proper spelling is descendAnt"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
393 (r'\.debug\(\_', "don't mark debug messages for translation"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
394 (r'\.strip\(\)\.split\(\)', "no need to strip before splitting"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
395 (r'^\s*except\s*:', "naked except clause", r'#.*re-raises'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
396 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
397 r'^\s*except\s([^\(,]+|\([^\)]+\))\s*,', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
398 'legacy exception syntax; use "as" instead of ","', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
399 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
400 (r'release\(.*wlock, .*lock\)', "wrong lock release order"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
401 (r'\bdef\s+__bool__\b', "__bool__ should be __nonzero__ in Python 2"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
402 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
403 r'os\.path\.join\(.*, *(""|\'\')\)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
404 "use pathutil.normasprefix(path) instead of os.path.join(path, '')", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
405 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
406 (r'\s0[0-7]+\b', 'legacy octal syntax; use "0o" prefix instead of "0"'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
407 # XXX only catch mutable arguments on the first line of the definition |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
408 (r'def.*[( ]\w+=\{\}', "don't use mutable default arguments"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
409 (r'\butil\.Abort\b', "directly use error.Abort"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
410 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
411 r'^@(\w*\.)?cachefunc', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
412 "module-level @cachefunc is risky, please avoid", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
413 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
414 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
415 r'^(from|import) mercurial\.(cext|pure|cffi)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
416 "use mercurial.policy.importmod instead", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
417 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
418 (r'\.next\(\)', "don't use .next(), use next(...)"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
419 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
420 r'([a-z]*).revision\(\1\.node\(', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
421 "don't convert rev to node before passing to revision(nodeorrev)", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
422 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
423 (r'platform\.system\(\)', "don't use platform.system(), use pycompat"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
424 ], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
425 # warnings |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
426 [], |
41826
14e8d042993a
contrib: split pypats list in check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41770
diff
changeset
|
427 ] |
14e8d042993a
contrib: split pypats list in check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41770
diff
changeset
|
428 |
14e8d042993a
contrib: split pypats list in check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41770
diff
changeset
|
429 # patterns to check normal *.py files |
14e8d042993a
contrib: split pypats list in check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41770
diff
changeset
|
430 pypats = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
431 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
432 # Ideally, these should be placed in "commonpypats" for |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
433 # consistency of coding rules in Mercurial source tree. |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
434 # But on the other hand, these are not so seriously required for |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
435 # python code fragments embedded in test scripts. Fixing test |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
436 # scripts for these patterns requires many changes, and has less |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
437 # profit than effort. |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
438 (r'raise Exception', "don't raise generic exceptions"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
439 (r'[\s\(](open|file)\([^)]*\)\.read\(', "use util.readfile() instead"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
440 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
441 r'[\s\(](open|file)\([^)]*\)\.write\(', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
442 "use util.writefile() instead", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
443 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
444 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
445 r'^[\s\(]*(open(er)?|file)\([^)]*\)(?!\.close\(\))', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
446 "always assign an opened file to a variable, and close it afterwards", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
447 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
448 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
449 r'[\s\(](open|file)\([^)]*\)\.(?!close\(\))', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
450 "always assign an opened file to a variable, and close it afterwards", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
451 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
452 (r':\n( )*( ){1,3}[^ ]', "must indent 4 spaces"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
453 (r'^import atexit', "don't use atexit, use ui.atexit"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
454 # rules depending on implementation of repquote() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
455 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
456 r' x+[xpqo%APM][\'"]\n\s+[\'"]x', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
457 'string join across lines with no space', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
458 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
459 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
460 r'''(?x)ui\.(status|progress|write|note|warn)\( |
29397
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
461 [ \t\n#]* |
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
462 (?# any strings/comments might precede a string, which |
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
463 # contains translatable message) |
43081
e65e7290041e
contrib: fix check-code to be able to detect missing _() with bytestrings
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
464 b?((['"]|\'\'\'|""")[ \npq%bAPMxno]*(['"]|\'\'\'|""")[ \t\n#]+)* |
29397
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
465 (?# sequence consisting of below might precede translatable message |
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
466 # - formatting string: "% 10s", "%05d", "% -3.2f", "%*s", "%%" ... |
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
467 # - escaped character: "\\", "\n", "\0" ... |
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
468 # - character other than '%', 'b' as '\', and 'x' as alphabet) |
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
469 (['"]|\'\'\'|""") |
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
470 ((%([ n]?[PM]?([np]+|A))?x)|%%|b[bnx]|[ \nnpqAPMo])*x |
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
471 (?# this regexp can't use [^...] style, |
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
472 # because _preparepats forcibly adds "\n" into [^...], |
844f72885fb9
check-code: detect "missing _() in ui message" more exactly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29330
diff
changeset
|
473 # even though this regexp wants match it against "\n")''', |
52662
3b6f25190157
check-code: reference the `noi18n` methods in the missing `_()` message
Matt Harbison <matt_harbison@yahoo.com>
parents:
51691
diff
changeset
|
474 "missing _() in ui message (use `noi18n` method to hide false-positives)", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
475 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
476 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
477 + commonpypats[0], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
478 # warnings |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
479 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
480 # rules depending on implementation of repquote() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
481 (r'(^| )pp +xxxxqq[ \n][^\n]', "add two newlines after '.. note::'"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
482 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
483 + commonpypats[1], |
10281 | 484 ] |
485 | |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
486 # patterns to check *.py for embedded ones in test script |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
487 embeddedpypats = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
488 [] + commonpypats[0], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
489 # warnings |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
490 [] + commonpypats[1], |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
491 ] |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
492 |
41826
14e8d042993a
contrib: split pypats list in check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41770
diff
changeset
|
493 # common filters to convert *.py |
14e8d042993a
contrib: split pypats list in check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41770
diff
changeset
|
494 commonpyfilters = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
495 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
496 r"""(?msx)(?P<comment>\#.*?$)| |
10727
62b8f15683f2
check-code: more tests and more robust python filtering
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10723
diff
changeset
|
497 ((?P<quote>('''|\"\"\"|(?<!')'(?!')|(?<!")"(?!"))) |
62b8f15683f2
check-code: more tests and more robust python filtering
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10723
diff
changeset
|
498 (?P<text>(([^\\]|\\.)*?)) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
499 (?P=quote))""", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
500 reppython, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
501 ), |
10281 | 502 ] |
503 | |
47635
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
504 # pattern only for mercurial and extensions |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
505 core_py_pats = [ |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
506 [ |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
507 # Windows tend to get confused about capitalization of the drive letter |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
508 # |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
509 # see mercurial.windows.abspath for details |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
510 ( |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
511 r'os\.path\.abspath', |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
512 "use util.abspath instead (windows)", |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
513 r'#.*re-exports', |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
514 ), |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
515 ], |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
516 # warnings |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
517 [], |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
518 ] |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
519 |
41826
14e8d042993a
contrib: split pypats list in check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41770
diff
changeset
|
520 # filters to convert normal *.py files |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
521 pyfilters = [] + commonpyfilters |
41826
14e8d042993a
contrib: split pypats list in check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41770
diff
changeset
|
522 |
34648
4889b84b15f2
check-code: suggest pycompat.is(posix|windows|darwin)
Jun Wu <quark@fb.com>
parents:
34642
diff
changeset
|
523 # non-filter patterns |
4889b84b15f2
check-code: suggest pycompat.is(posix|windows|darwin)
Jun Wu <quark@fb.com>
parents:
34642
diff
changeset
|
524 pynfpats = [ |
4889b84b15f2
check-code: suggest pycompat.is(posix|windows|darwin)
Jun Wu <quark@fb.com>
parents:
34642
diff
changeset
|
525 [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
526 (r'pycompat\.osname\s*[=!]=\s*[\'"]nt[\'"]', "use pycompat.iswindows"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
527 (r'pycompat\.osname\s*[=!]=\s*[\'"]posix[\'"]', "use pycompat.isposix"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
528 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
529 r'pycompat\.sysplatform\s*[!=]=\s*[\'"]darwin[\'"]', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
530 "use pycompat.isdarwin", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
531 ), |
34648
4889b84b15f2
check-code: suggest pycompat.is(posix|windows|darwin)
Jun Wu <quark@fb.com>
parents:
34642
diff
changeset
|
532 ], |
4889b84b15f2
check-code: suggest pycompat.is(posix|windows|darwin)
Jun Wu <quark@fb.com>
parents:
34642
diff
changeset
|
533 # warnings |
4889b84b15f2
check-code: suggest pycompat.is(posix|windows|darwin)
Jun Wu <quark@fb.com>
parents:
34642
diff
changeset
|
534 [], |
4889b84b15f2
check-code: suggest pycompat.is(posix|windows|darwin)
Jun Wu <quark@fb.com>
parents:
34642
diff
changeset
|
535 ] |
4889b84b15f2
check-code: suggest pycompat.is(posix|windows|darwin)
Jun Wu <quark@fb.com>
parents:
34642
diff
changeset
|
536 |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
537 # filters to convert *.py for embedded ones in test script |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
538 embeddedpyfilters = [] + commonpyfilters |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
539 |
31607
772878ac930e
checkcode: enforce lowercase for extension docstring title
Jun Wu <quark@fb.com>
parents:
31578
diff
changeset
|
540 # extension non-filter patterns |
772878ac930e
checkcode: enforce lowercase for extension docstring title
Jun Wu <quark@fb.com>
parents:
31578
diff
changeset
|
541 pyextnfpats = [ |
772878ac930e
checkcode: enforce lowercase for extension docstring title
Jun Wu <quark@fb.com>
parents:
31578
diff
changeset
|
542 [(r'^"""\n?[A-Z]', "don't capitalize docstring title")], |
772878ac930e
checkcode: enforce lowercase for extension docstring title
Jun Wu <quark@fb.com>
parents:
31578
diff
changeset
|
543 # warnings |
772878ac930e
checkcode: enforce lowercase for extension docstring title
Jun Wu <quark@fb.com>
parents:
31578
diff
changeset
|
544 [], |
772878ac930e
checkcode: enforce lowercase for extension docstring title
Jun Wu <quark@fb.com>
parents:
31578
diff
changeset
|
545 ] |
772878ac930e
checkcode: enforce lowercase for extension docstring title
Jun Wu <quark@fb.com>
parents:
31578
diff
changeset
|
546 |
18960
170fc0949fb6
check-code: check txt files for trailing whitespace
Mads Kiilerich <madski@unity3d.com>
parents:
18959
diff
changeset
|
547 txtfilters = [] |
170fc0949fb6
check-code: check txt files for trailing whitespace
Mads Kiilerich <madski@unity3d.com>
parents:
18959
diff
changeset
|
548 |
170fc0949fb6
check-code: check txt files for trailing whitespace
Mads Kiilerich <madski@unity3d.com>
parents:
18959
diff
changeset
|
549 txtpats = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
550 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
551 (r'\s$', 'trailing whitespace'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
552 ('.. note::[ \n][^\n]', 'add two newlines after note::'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
553 ], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
554 [], |
18960
170fc0949fb6
check-code: check txt files for trailing whitespace
Mads Kiilerich <madski@unity3d.com>
parents:
18959
diff
changeset
|
555 ] |
170fc0949fb6
check-code: check txt files for trailing whitespace
Mads Kiilerich <madski@unity3d.com>
parents:
18959
diff
changeset
|
556 |
10281 | 557 cpats = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
558 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
559 (r'//', "don't use //-style comments"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
560 (r'\S\t', "don't use tabs except for indent"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
561 (r'(\S[ \t]+|^[ \t]+)\n', "trailing whitespace"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
562 (r'(while|if|do|for)\(', "use space after while/if/do/for"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
563 (r'return\(', "return is not a function"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
564 (r' ;', "no space before ;"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
565 (r'[^;] \)', "no space before )"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
566 (r'[)][{]', "space between ) and {"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
567 (r'\w+\* \w+', "use int *foo, not int* foo"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
568 (r'\W\([^\)]+\) \w+', "use (int)foo, not (int) foo"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
569 (r'\w+ (\+\+|--)', "use foo++, not foo ++"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
570 (r'\w,\w', "missing whitespace after ,"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
571 (r'^[^#]\w[+/*]\w', "missing whitespace in expression"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
572 (r'\w\s=\s\s+\w', "gratuitous whitespace after ="), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
573 (r'^#\s+\w', "use #foo, not # foo"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
574 (r'[^\n]\Z', "no trailing newline"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
575 (r'^\s*#import\b', "use only #include in standard C code"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
576 (r'strcpy\(', "don't use strcpy, use strlcpy or memcpy"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
577 (r'strcat\(', "don't use strcat"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
578 # rules depending on implementation of repquote() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
579 ], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
580 # warnings |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
581 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
582 # rules depending on implementation of repquote() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
583 ], |
10281 | 584 ] |
585 | |
586 cfilters = [ | |
587 (r'(/\*)(((\*(?!/))|[^*])*)\*/', repccomment), | |
10722
c4fb2103e734
check-code: improve quote detection regexp, add tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10720
diff
changeset
|
588 (r'''(?P<quote>(?<!")")(?P<text>([^"]|\\")+)"(?!")''', repquote), |
10281 | 589 (r'''(#\s*include\s+<)([^>]+)>''', repinclude), |
590 (r'(\()([^)]+\))', repcallspaces), | |
591 ] | |
592 | |
14137
83a94c2fe6f4
check-code: check for repo in revlog and ui in util
timeless <timeless@mozdev.org>
parents:
14136
diff
changeset
|
593 inutilpats = [ |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45849
diff
changeset
|
594 [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45849
diff
changeset
|
595 (r'\bui\.', "don't use ui in util"), |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45849
diff
changeset
|
596 ], |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
597 # warnings |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
598 [], |
14137
83a94c2fe6f4
check-code: check for repo in revlog and ui in util
timeless <timeless@mozdev.org>
parents:
14136
diff
changeset
|
599 ] |
83a94c2fe6f4
check-code: check for repo in revlog and ui in util
timeless <timeless@mozdev.org>
parents:
14136
diff
changeset
|
600 |
83a94c2fe6f4
check-code: check for repo in revlog and ui in util
timeless <timeless@mozdev.org>
parents:
14136
diff
changeset
|
601 inrevlogpats = [ |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45849
diff
changeset
|
602 [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45849
diff
changeset
|
603 (r'\brepo\.', "don't use repo in revlog"), |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45849
diff
changeset
|
604 ], |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
605 # warnings |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
606 [], |
14137
83a94c2fe6f4
check-code: check for repo in revlog and ui in util
timeless <timeless@mozdev.org>
parents:
14136
diff
changeset
|
607 ] |
83a94c2fe6f4
check-code: check for repo in revlog and ui in util
timeless <timeless@mozdev.org>
parents:
14136
diff
changeset
|
608 |
21487
c26464ce0781
check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents:
21222
diff
changeset
|
609 webtemplatefilters = [] |
c26464ce0781
check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents:
21222
diff
changeset
|
610 |
c26464ce0781
check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents:
21222
diff
changeset
|
611 webtemplatepats = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
612 [], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
613 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
614 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
615 r'{desc(\|(?!websub|firstline)[^\|]*)+}', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
616 'follow desc keyword with either firstline or websub', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
617 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
618 ], |
21487
c26464ce0781
check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents:
21222
diff
changeset
|
619 ] |
c26464ce0781
check-code: check for consistent usage of the websub filter in hgweb templates
Steven Brown <StevenGBrown@gmail.com>
parents:
21222
diff
changeset
|
620 |
30246
b4c0f8d5edd2
contrib: check reference to old selenic.com domain
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
30245
diff
changeset
|
621 allfilesfilters = [] |
b4c0f8d5edd2
contrib: check reference to old selenic.com domain
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
30245
diff
changeset
|
622 |
b4c0f8d5edd2
contrib: check reference to old selenic.com domain
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
30245
diff
changeset
|
623 allfilespats = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
624 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
625 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
626 r'(http|https)://[a-zA-Z0-9./]*selenic.com/', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
627 'use mercurial-scm.org domain URL', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
628 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
629 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
630 r'mercurial@selenic\.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
631 'use mercurial-scm.org domain for mercurial ML address', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
632 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
633 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
634 r'mercurial-devel@selenic\.com', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
635 'use mercurial-scm.org domain for mercurial-devel ML address', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
636 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
637 ], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
638 # warnings |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
639 [], |
30246
b4c0f8d5edd2
contrib: check reference to old selenic.com domain
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
30245
diff
changeset
|
640 ] |
b4c0f8d5edd2
contrib: check reference to old selenic.com domain
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
30245
diff
changeset
|
641 |
30668
01721d382c16
py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30563
diff
changeset
|
642 py3pats = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
643 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
644 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
645 r'os\.environ', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
646 "use encoding.environ instead (py3)", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
647 r'#.*re-exports', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
648 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
649 (r'os\.name', "use pycompat.osname instead (py3)"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
650 (r'os\.getcwd', "use encoding.getcwd instead (py3)", r'#.*re-exports'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
651 (r'os\.sep', "use pycompat.ossep instead (py3)"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
652 (r'os\.pathsep', "use pycompat.ospathsep instead (py3)"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
653 (r'os\.altsep', "use pycompat.osaltsep instead (py3)"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
654 (r'sys\.platform', "use pycompat.sysplatform instead (py3)"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
655 (r'getopt\.getopt', "use pycompat.getoptb instead (py3)"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
656 (r'os\.getenv', "use encoding.environ.get instead"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
657 (r'os\.setenv', "modifying the environ dict is not preferred"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
658 (r'(?<!pycompat\.)xrange', "use pycompat.xrange instead (py3)"), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
659 ], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
660 # warnings |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
661 [], |
30668
01721d382c16
py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30563
diff
changeset
|
662 ] |
01721d382c16
py3: add warnings in check-code related to py3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30563
diff
changeset
|
663 |
10281 | 664 checks = [ |
21222
4840abc83970
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com>
parents:
21097
diff
changeset
|
665 ('python', r'.*\.(py|cgi)$', r'^#!.*python', pyfilters, pypats), |
34648
4889b84b15f2
check-code: suggest pycompat.is(posix|windows|darwin)
Jun Wu <quark@fb.com>
parents:
34642
diff
changeset
|
666 ('python', r'.*\.(py|cgi)$', r'^#!.*python', [], pynfpats), |
31607
772878ac930e
checkcode: enforce lowercase for extension docstring title
Jun Wu <quark@fb.com>
parents:
31578
diff
changeset
|
667 ('python', r'.*hgext.*\.py$', '', [], pyextnfpats), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
668 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
669 'python 3', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
670 r'.*(hgext|mercurial)/(?!demandimport|policy|pycompat).*\.py', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
671 '', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
672 pyfilters, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
673 py3pats, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
674 ), |
47635
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
675 ( |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
676 'core files', |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
677 r'.*(hgext|mercurial)/(?!demandimport|policy|pycompat).*\.py', |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
678 '', |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
679 pyfilters, |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
680 core_py_pats, |
752109dc2fb7
check-code: add a rules to catch os.path.abspath
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47504
diff
changeset
|
681 ), |
21222
4840abc83970
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com>
parents:
21097
diff
changeset
|
682 ('test script', r'(.*/)?test-[^.~]*$', '', testfilters, testpats), |
4840abc83970
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com>
parents:
21097
diff
changeset
|
683 ('c', r'.*\.[ch]$', '', cfilters, cpats), |
4840abc83970
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com>
parents:
21097
diff
changeset
|
684 ('unified test', r'.*\.t$', '', utestfilters, utestpats), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
685 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
686 'layering violation repo in revlog', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
687 r'mercurial/revlog\.py', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
688 '', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
689 pyfilters, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
690 inrevlogpats, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
691 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
692 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
693 'layering violation ui in util', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
694 r'mercurial/util\.py', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
695 '', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
696 pyfilters, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
697 inutilpats, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
698 ), |
21222
4840abc83970
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com>
parents:
21097
diff
changeset
|
699 ('txt', r'.*\.txt$', '', txtfilters, txtpats), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
700 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
701 'web template', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
702 r'mercurial/templates/.*\.tmpl', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
703 '', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
704 webtemplatefilters, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
705 webtemplatepats, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
706 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
707 ('all except for .po', r'.*(?<!\.po)$', '', allfilesfilters, allfilespats), |
10281 | 708 ] |
709 | |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
710 # (desc, |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
711 # func to pick up embedded code fragments, |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
712 # list of patterns to convert target files |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
713 # list of patterns to detect errors/warnings) |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
714 embeddedchecks = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
715 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
716 'embedded python', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
717 testparseutil.pyembedded, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
718 embeddedpyfilters, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
719 embeddedpypats, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
720 ) |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
721 ] |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
722 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
723 |
19307
5443d40d524b
check-code: only fix patterns once
Simon Heimberg <simohe@besonet.ch>
parents:
19168
diff
changeset
|
724 def _preparepats(): |
41827
55ae5cd31f76
contrib: refactor preparation logic for patterns of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41826
diff
changeset
|
725 def preparefailandwarn(failandwarn): |
19307
5443d40d524b
check-code: only fix patterns once
Simon Heimberg <simohe@besonet.ch>
parents:
19168
diff
changeset
|
726 for pats in failandwarn: |
5443d40d524b
check-code: only fix patterns once
Simon Heimberg <simohe@besonet.ch>
parents:
19168
diff
changeset
|
727 for i, pseq in enumerate(pats): |
5443d40d524b
check-code: only fix patterns once
Simon Heimberg <simohe@besonet.ch>
parents:
19168
diff
changeset
|
728 # fix-up regexes for multi-line searches |
19378
9de689d20230
cleanup: drop unused variables and an unused import
Simon Heimberg <simohe@besonet.ch>
parents:
19310
diff
changeset
|
729 p = pseq[0] |
36963
a8d540d2628c
contrib: fix a subtle bug in check-code's regex rewriting
Augie Fackler <augie@google.com>
parents:
36955
diff
changeset
|
730 # \s doesn't match \n (done in two steps) |
a8d540d2628c
contrib: fix a subtle bug in check-code's regex rewriting
Augie Fackler <augie@google.com>
parents:
36955
diff
changeset
|
731 # first, we replace \s that appears in a set already |
a8d540d2628c
contrib: fix a subtle bug in check-code's regex rewriting
Augie Fackler <augie@google.com>
parents:
36955
diff
changeset
|
732 p = re.sub(r'\[\\s', r'[ \\t', p) |
a8d540d2628c
contrib: fix a subtle bug in check-code's regex rewriting
Augie Fackler <augie@google.com>
parents:
36955
diff
changeset
|
733 # now we replace other \s instances. |
a8d540d2628c
contrib: fix a subtle bug in check-code's regex rewriting
Augie Fackler <augie@google.com>
parents:
36955
diff
changeset
|
734 p = re.sub(r'(?<!(\\|\[))\\s', r'[ \\t]', p) |
19307
5443d40d524b
check-code: only fix patterns once
Simon Heimberg <simohe@besonet.ch>
parents:
19168
diff
changeset
|
735 # [^...] doesn't match newline |
5443d40d524b
check-code: only fix patterns once
Simon Heimberg <simohe@besonet.ch>
parents:
19168
diff
changeset
|
736 p = re.sub(r'(?<!\\)\[\^', r'[^\\n', p) |
5443d40d524b
check-code: only fix patterns once
Simon Heimberg <simohe@besonet.ch>
parents:
19168
diff
changeset
|
737 |
19308
84faaacbd3fa
check-code: compile all patterns on initialisation
Simon Heimberg <simohe@besonet.ch>
parents:
19307
diff
changeset
|
738 pats[i] = (re.compile(p, re.MULTILINE),) + pseq[1:] |
41827
55ae5cd31f76
contrib: refactor preparation logic for patterns of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41826
diff
changeset
|
739 |
55ae5cd31f76
contrib: refactor preparation logic for patterns of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41826
diff
changeset
|
740 def preparefilters(filters): |
19309
7d77fa1cd537
check-code: compile filters when loading
Simon Heimberg <simohe@besonet.ch>
parents:
19308
diff
changeset
|
741 for i, flt in enumerate(filters): |
7d77fa1cd537
check-code: compile filters when loading
Simon Heimberg <simohe@besonet.ch>
parents:
19308
diff
changeset
|
742 filters[i] = re.compile(flt[0]), flt[1] |
19307
5443d40d524b
check-code: only fix patterns once
Simon Heimberg <simohe@besonet.ch>
parents:
19168
diff
changeset
|
743 |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
744 for cs in (checks, embeddedchecks): |
41827
55ae5cd31f76
contrib: refactor preparation logic for patterns of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41826
diff
changeset
|
745 for c in cs: |
55ae5cd31f76
contrib: refactor preparation logic for patterns of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41826
diff
changeset
|
746 failandwarn = c[-1] |
55ae5cd31f76
contrib: refactor preparation logic for patterns of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41826
diff
changeset
|
747 preparefailandwarn(failandwarn) |
55ae5cd31f76
contrib: refactor preparation logic for patterns of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41826
diff
changeset
|
748 |
55ae5cd31f76
contrib: refactor preparation logic for patterns of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41826
diff
changeset
|
749 filters = c[-2] |
55ae5cd31f76
contrib: refactor preparation logic for patterns of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41826
diff
changeset
|
750 preparefilters(filters) |
55ae5cd31f76
contrib: refactor preparation logic for patterns of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41826
diff
changeset
|
751 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
752 |
49037
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
49036
diff
changeset
|
753 class norepeatlogger: |
10719
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
754 def __init__(self): |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
755 self._lastseen = None |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
756 |
11604
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
757 def log(self, fname, lineno, line, msg, blame): |
10719
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
758 """print error related a to given line of a given file. |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
759 |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
760 The faulty line will also be printed but only once in the case |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
761 of multiple errors. |
10281 | 762 |
10719
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
763 :fname: filename |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
764 :lineno: line number |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
765 :line: actual content of the line |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
766 :msg: error message |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
767 """ |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
768 msgid = fname, lineno, line |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
769 if msgid != self._lastseen: |
11604
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
770 if blame: |
28509
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
771 print("%s:%d (%s):" % (fname, lineno, blame)) |
11604
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
772 else: |
28509
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
773 print("%s:%d:" % (fname, lineno)) |
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
774 print(" > %s" % line) |
10719
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
775 self._lastseen = msgid |
28509
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
776 print(" " + msg) |
10719
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
777 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
778 |
10719
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
779 _defaultlogger = norepeatlogger() |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
780 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
781 |
11604
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
782 def getblame(f): |
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
783 lines = [] |
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
784 for l in os.popen('hg annotate -un %s' % f): |
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
785 start, line = l.split(':', 1) |
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
786 user, rev = start.split() |
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
787 lines.append((line[1:-1], user, rev)) |
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
788 return lines |
c5d40818b270
check-code: add --blame switch
Matt Mackall <mpm@selenic.com>
parents:
11602
diff
changeset
|
789 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
790 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
791 def checkfile( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
792 f, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
793 logfunc=_defaultlogger.log, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
794 maxerr=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
795 warnings=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
796 blame=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
797 debug=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
798 lineno=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
799 ): |
10719
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
800 """checks style and portability of a given file |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
801 |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
802 :f: filepath |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
803 :logfunc: function used to report error |
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
804 logfunc(filename, linenumber, linecontent, errormessage) |
17424
e7cfe3587ea4
fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents:
17347
diff
changeset
|
805 :maxerr: number of error to display before aborting. |
15873
a153a86a472c
tests: keep track of all check-code.py warnings
Mads Kiilerich <mads@kiilerich.com>
parents:
15611
diff
changeset
|
806 Set to false (default) to report all errors |
10720
fbcccf9ec58f
check-code: add a return value to checkfile function
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10719
diff
changeset
|
807 |
fbcccf9ec58f
check-code: add a return value to checkfile function
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10719
diff
changeset
|
808 return True if no error is found, False otherwise. |
10719
3be9ae49b628
code-code: Add a logfunc argument to checkfile
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10718
diff
changeset
|
809 """ |
10720
fbcccf9ec58f
check-code: add a return value to checkfile function
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10719
diff
changeset
|
810 result = True |
21222
4840abc83970
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com>
parents:
21097
diff
changeset
|
811 |
4840abc83970
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com>
parents:
21097
diff
changeset
|
812 try: |
29145
c641b8dfb98c
check-code: handle py3 open divergence
timeless <timeless@mozdev.org>
parents:
29144
diff
changeset
|
813 with opentext(f) as fp: |
c641b8dfb98c
check-code: handle py3 open divergence
timeless <timeless@mozdev.org>
parents:
29144
diff
changeset
|
814 try: |
41387
876494fd967d
cleanup: delete lots of unused local variables
Martin von Zweigbergk <martinvonz@google.com>
parents:
39823
diff
changeset
|
815 pre = fp.read() |
29145
c641b8dfb98c
check-code: handle py3 open divergence
timeless <timeless@mozdev.org>
parents:
29144
diff
changeset
|
816 except UnicodeDecodeError as e: |
c641b8dfb98c
check-code: handle py3 open divergence
timeless <timeless@mozdev.org>
parents:
29144
diff
changeset
|
817 print("%s while reading %s" % (e, f)) |
c641b8dfb98c
check-code: handle py3 open divergence
timeless <timeless@mozdev.org>
parents:
29144
diff
changeset
|
818 return result |
52665
24ee91ba9aa8
pyupgrade: drop usage of py3 aliases for `OSError`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52662
diff
changeset
|
819 except OSError as e: |
28509
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
820 print("Skipping %s, %s" % (f, str(e).split(':', 1)[0])) |
21222
4840abc83970
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com>
parents:
21097
diff
changeset
|
821 return result |
4840abc83970
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com>
parents:
21097
diff
changeset
|
822 |
41828
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
823 # context information shared while single checkfile() invocation |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
824 context = {'blamecache': None} |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
825 |
21222
4840abc83970
check-code: look at shebang to identify Python scripts
Matt Mackall <mpm@selenic.com>
parents:
21097
diff
changeset
|
826 for name, match, magic, filters, pats in checks: |
14135
673abd432104
check-code: adding debug flag
timeless <timeless@mozdev.org>
parents:
14009
diff
changeset
|
827 if debug: |
28509
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
828 print(name, f) |
28050
7e9e39228de6
check-code: examine magic pattern matching against contents of a file
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28035
diff
changeset
|
829 if not (re.match(match, f) or (magic and re.search(magic, pre))): |
14135
673abd432104
check-code: adding debug flag
timeless <timeless@mozdev.org>
parents:
14009
diff
changeset
|
830 if debug: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
831 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
832 "Skipping %s for %s it doesn't match %s" % (name, match, f) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
833 ) |
10281 | 834 continue |
19382
5aeb03b48ab4
check-code: concatenate "check-code" on compile time
Simon Heimberg <simohe@besonet.ch>
parents:
19380
diff
changeset
|
835 if "no-" "check-code" in pre: |
27560
15b06f306c1f
check-code: improve test-check-code error diffs
timeless <timeless@mozdev.org>
parents:
27557
diff
changeset
|
836 # If you're looking at this line, it's because a file has: |
15b06f306c1f
check-code: improve test-check-code error diffs
timeless <timeless@mozdev.org>
parents:
27557
diff
changeset
|
837 # no- check- code |
15b06f306c1f
check-code: improve test-check-code error diffs
timeless <timeless@mozdev.org>
parents:
27557
diff
changeset
|
838 # but the reason to output skipping is to make life for |
15b06f306c1f
check-code: improve test-check-code error diffs
timeless <timeless@mozdev.org>
parents:
27557
diff
changeset
|
839 # tests easier. So, instead of writing it with a normal |
15b06f306c1f
check-code: improve test-check-code error diffs
timeless <timeless@mozdev.org>
parents:
27557
diff
changeset
|
840 # spelling, we write it with the expected spelling from |
15b06f306c1f
check-code: improve test-check-code error diffs
timeless <timeless@mozdev.org>
parents:
27557
diff
changeset
|
841 # tests/test-check-code.t |
28509
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
842 print("Skipping %s it has no-che?k-code (glob)" % f) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
843 return "Skip" # skip checking this file |
41828
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
844 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
845 fc = _checkfiledata( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
846 name, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
847 f, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
848 pre, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
849 filters, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
850 pats, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
851 context, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
852 logfunc, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
853 maxerr, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
854 warnings, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
855 blame, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
856 debug, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
857 lineno, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
858 ) |
41829
519b2faea261
contrib: change return value of file checking function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41828
diff
changeset
|
859 if fc: |
41828
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
860 result = False |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
861 |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
862 if f.endswith('.t') and "no-" "check-code" not in pre: |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
863 if debug: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
864 print("Checking embedded code in %s" % f) |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
865 |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
866 prelines = pre.splitlines() |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
867 embeddederros = [] |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
868 for name, embedded, filters, pats in embeddedchecks: |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
869 # "reset curmax at each repetition" treats maxerr as "max |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
870 # nubmer of errors in an actual file per entry of |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
871 # (embedded)checks" |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
872 curmaxerr = maxerr |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
873 |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
874 for found in embedded(f, prelines, embeddederros): |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
875 filename, starts, ends, code = found |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
876 fc = _checkfiledata( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
877 name, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
878 f, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
879 code, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
880 filters, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
881 pats, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
882 context, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
883 logfunc, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
884 curmaxerr, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
885 warnings, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
886 blame, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
887 debug, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
888 lineno, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
889 offset=starts - 1, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
890 ) |
41831
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
891 if fc: |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
892 result = False |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
893 if curmaxerr: |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
894 if fc >= curmaxerr: |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
895 break |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
896 curmaxerr -= fc |
867883d454ea
contrib: make check-code.py check code fragments embedded in test scripts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41830
diff
changeset
|
897 |
41828
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
898 return result |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
899 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
900 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
901 def _checkfiledata( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
902 name, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
903 f, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
904 filedata, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
905 filters, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
906 pats, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
907 context, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
908 logfunc, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
909 maxerr, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
910 warnings, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
911 blame, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
912 debug, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
913 lineno, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
914 offset=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
915 ): |
41828
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
916 """Execute actual error check for file data |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
917 |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
918 :name: of the checking category |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
919 :f: filepath |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
920 :filedata: content of a file |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
921 :filters: to be applied before checking |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
922 :pats: to detect errors |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
923 :context: a dict of information shared while single checkfile() invocation |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
924 Valid keys: 'blamecache'. |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
925 :logfunc: function used to report error |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
926 logfunc(filename, linenumber, linecontent, errormessage) |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
927 :maxerr: number of error to display before aborting, or False to |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
928 report all errors |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
929 :warnings: whether warning level checks should be applied |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
930 :blame: whether blame information should be displayed at error reporting |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
931 :debug: whether debug information should be displayed |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
932 :lineno: whether lineno should be displayed at error reporting |
41830
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
933 :offset: line number offset of 'filedata' in 'f' for checking |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
934 an embedded code fragment, or None (offset=0 is different |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
935 from offset=None) |
41828
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
936 |
41829
519b2faea261
contrib: change return value of file checking function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41828
diff
changeset
|
937 returns number of detected errors. |
41828
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
938 """ |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
939 blamecache = context['blamecache'] |
41830
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
940 if offset is None: |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
941 lineoffset = 0 |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
942 else: |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
943 lineoffset = offset |
41828
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
944 |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
945 fc = 0 |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
946 pre = post = filedata |
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
947 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
948 if True: # TODO: get rid of this redundant 'if' block |
10281 | 949 for p, r in filters: |
950 post = re.sub(p, r, post) | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
951 nerrs = len(pats[0]) # nerr elements are errors |
14009
64de9ca66511
check-code: separate warnings to avoid repetitive str.startswith
Idan Kamara <idankk86@gmail.com>
parents:
14005
diff
changeset
|
952 if warnings: |
64de9ca66511
check-code: separate warnings to avoid repetitive str.startswith
Idan Kamara <idankk86@gmail.com>
parents:
14005
diff
changeset
|
953 pats = pats[0] + pats[1] |
64de9ca66511
check-code: separate warnings to avoid repetitive str.startswith
Idan Kamara <idankk86@gmail.com>
parents:
14005
diff
changeset
|
954 else: |
64de9ca66511
check-code: separate warnings to avoid repetitive str.startswith
Idan Kamara <idankk86@gmail.com>
parents:
14005
diff
changeset
|
955 pats = pats[0] |
10281 | 956 # print post # uncomment to show filtered version |
15281
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
957 |
14135
673abd432104
check-code: adding debug flag
timeless <timeless@mozdev.org>
parents:
14009
diff
changeset
|
958 if debug: |
28509
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
959 print("Checking %s for %s" % (name, f)) |
15281
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
960 |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
961 prelines = None |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
962 errors = [] |
19422
d9e86d656017
check-code: automatically preppend "warning: " to all warning messages
Simon Heimberg <simohe@besonet.ch>
parents:
19382
diff
changeset
|
963 for i, pat in enumerate(pats): |
16705
c2d9ef43ff6c
check-code: ignore naked excepts with a "re-raise" comment
Brodie Rao <brodie@sf.io>
parents:
16704
diff
changeset
|
964 if len(pat) == 3: |
c2d9ef43ff6c
check-code: ignore naked excepts with a "re-raise" comment
Brodie Rao <brodie@sf.io>
parents:
16704
diff
changeset
|
965 p, msg, ignore = pat |
c2d9ef43ff6c
check-code: ignore naked excepts with a "re-raise" comment
Brodie Rao <brodie@sf.io>
parents:
16704
diff
changeset
|
966 else: |
c2d9ef43ff6c
check-code: ignore naked excepts with a "re-raise" comment
Brodie Rao <brodie@sf.io>
parents:
16704
diff
changeset
|
967 p, msg = pat |
c2d9ef43ff6c
check-code: ignore naked excepts with a "re-raise" comment
Brodie Rao <brodie@sf.io>
parents:
16704
diff
changeset
|
968 ignore = None |
20005
22154ec6fb8b
check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents:
19999
diff
changeset
|
969 if i >= nerrs: |
22154ec6fb8b
check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents:
19999
diff
changeset
|
970 msg = "warning: " + msg |
16705
c2d9ef43ff6c
check-code: ignore naked excepts with a "re-raise" comment
Brodie Rao <brodie@sf.io>
parents:
16704
diff
changeset
|
971 |
15281
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
972 pos = 0 |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
973 n = 0 |
19308
84faaacbd3fa
check-code: compile all patterns on initialisation
Simon Heimberg <simohe@besonet.ch>
parents:
19307
diff
changeset
|
974 for m in p.finditer(post): |
15281
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
975 if prelines is None: |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
976 prelines = pre.splitlines() |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
977 postlines = post.splitlines(True) |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
978 |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
979 start = m.start() |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
980 while n < len(postlines): |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
981 step = len(postlines[n]) |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
982 if pos + step > start: |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
983 break |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
984 pos += step |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
985 n += 1 |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
986 l = prelines[n] |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
987 |
20242
2dad90bdf29d
check-code: drop now unused check-code-ignore
Simon Heimberg <simohe@besonet.ch>
parents:
20241
diff
changeset
|
988 if ignore and re.search(ignore, l, re.MULTILINE): |
20243
cc09cfea3dd4
check-code: print debug output when an ignore pattern matches
Simon Heimberg <simohe@besonet.ch>
parents:
20242
diff
changeset
|
989 if debug: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
990 print( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
991 "Skipping %s for %s:%s (ignore pattern)" |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
992 % (name, f, (n + lineoffset)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
993 ) |
16705
c2d9ef43ff6c
check-code: ignore naked excepts with a "re-raise" comment
Brodie Rao <brodie@sf.io>
parents:
16704
diff
changeset
|
994 continue |
15281
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
995 bd = "" |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
996 if blame: |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
997 bd = 'working directory' |
41828
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
998 if blamecache is None: |
15281
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
999 blamecache = getblame(f) |
41828
7a139fc60eb0
contrib: factor out actual error check for file data of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41827
diff
changeset
|
1000 context['blamecache'] = blamecache |
41830
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1001 if (n + lineoffset) < len(blamecache): |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1002 bl, bu, br = blamecache[(n + lineoffset)] |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1003 if offset is None and bl == l: |
15281
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
1004 bd = '%s@%s' % (bu, br) |
41830
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1005 elif offset is not None and bl.endswith(l): |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1006 # "offset is not None" means "checking |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1007 # embedded code fragment". In this case, |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1008 # "l" does not have information about the |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1009 # beginning of an *original* line in the |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1010 # file (e.g. ' > '). |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1011 # Therefore, use "str.endswith()", and |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1012 # show "maybe" for a little loose |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1013 # examination. |
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1014 bd = '%s@%s, maybe' % (bu, br) |
20005
22154ec6fb8b
check-code: prepend warning prefix only once, but for each warning
Simon Heimberg <simohe@besonet.ch>
parents:
19999
diff
changeset
|
1015 |
41830
6d6bd9039ecd
contrib: add line offset information to file check function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41829
diff
changeset
|
1016 errors.append((f, lineno and (n + lineoffset + 1), l, msg, bd)) |
15281
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
1017 |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
1018 errors.sort() |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
1019 for e in errors: |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
1020 logfunc(*e) |
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
1021 fc += 1 |
15873
a153a86a472c
tests: keep track of all check-code.py warnings
Mads Kiilerich <mads@kiilerich.com>
parents:
15611
diff
changeset
|
1022 if maxerr and fc >= maxerr: |
28509
9e3ecb6f4995
check-code: use absolute_import and print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28399
diff
changeset
|
1023 print(" (too many errors, giving up)") |
10281 | 1024 break |
15281
aeeb2afcdc25
check-code: support multiline matches like try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
14978
diff
changeset
|
1025 |
41829
519b2faea261
contrib: change return value of file checking function of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
41828
diff
changeset
|
1026 return fc |
10717
b1f4fcef99b3
check-code: Add a ``checkfile`` function
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10716
diff
changeset
|
1027 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1028 |
29568
7825f6154a65
check-code: factor out boot procedure into main
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29566
diff
changeset
|
1029 def main(): |
31824
4804644489cf
check-code: use "-" to specify a list of files from stdin
Jun Wu <quark@fb.com>
parents:
31816
diff
changeset
|
1030 parser = optparse.OptionParser("%prog [options] [files | -]") |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1031 parser.add_option( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1032 "-w", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1033 "--warnings", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1034 action="store_true", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1035 help="include warning-level checks", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1036 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1037 parser.add_option( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1038 "-p", "--per-file", type="int", help="max warnings per file" |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1039 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1040 parser.add_option( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1041 "-b", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1042 "--blame", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1043 action="store_true", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1044 help="use annotate to generate blame info", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1045 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1046 parser.add_option( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1047 "", "--debug", action="store_true", help="show debug information" |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1048 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1049 parser.add_option( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1050 "", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1051 "--nolineno", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1052 action="store_false", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1053 dest='lineno', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1054 help="don't show line numbers", |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1055 ) |
10895
217557b26bc7
check-code: add a warnings level
Matt Mackall <mpm@selenic.com>
parents:
10814
diff
changeset
|
1056 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1057 parser.set_defaults( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1058 per_file=15, warnings=False, blame=False, debug=False, lineno=True |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1059 ) |
10895
217557b26bc7
check-code: add a warnings level
Matt Mackall <mpm@selenic.com>
parents:
10814
diff
changeset
|
1060 (options, args) = parser.parse_args() |
217557b26bc7
check-code: add a warnings level
Matt Mackall <mpm@selenic.com>
parents:
10814
diff
changeset
|
1061 |
217557b26bc7
check-code: add a warnings level
Matt Mackall <mpm@selenic.com>
parents:
10814
diff
changeset
|
1062 if len(args) == 0: |
10716
5f92bde72eef
check-code: Only call check-code if __name__ = "__main__".
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10707
diff
changeset
|
1063 check = glob.glob("*") |
31824
4804644489cf
check-code: use "-" to specify a list of files from stdin
Jun Wu <quark@fb.com>
parents:
31816
diff
changeset
|
1064 elif args == ['-']: |
4804644489cf
check-code: use "-" to specify a list of files from stdin
Jun Wu <quark@fb.com>
parents:
31816
diff
changeset
|
1065 # read file list from stdin |
4804644489cf
check-code: use "-" to specify a list of files from stdin
Jun Wu <quark@fb.com>
parents:
31816
diff
changeset
|
1066 check = sys.stdin.read().splitlines() |
10716
5f92bde72eef
check-code: Only call check-code if __name__ = "__main__".
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10707
diff
changeset
|
1067 else: |
10895
217557b26bc7
check-code: add a warnings level
Matt Mackall <mpm@selenic.com>
parents:
10814
diff
changeset
|
1068 check = args |
10281 | 1069 |
29569
3d52e7c78a6b
check-code: move fixing up regexp into main procedure
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29568
diff
changeset
|
1070 _preparepats() |
3d52e7c78a6b
check-code: move fixing up regexp into main procedure
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29568
diff
changeset
|
1071 |
15544
53ef627cda30
check-code: fix return code initialization
Mads Kiilerich <mads@kiilerich.com>
parents:
15502
diff
changeset
|
1072 ret = 0 |
10716
5f92bde72eef
check-code: Only call check-code if __name__ = "__main__".
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
10707
diff
changeset
|
1073 for f in check: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1074 if not checkfile( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1075 f, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1076 maxerr=options.per_file, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1077 warnings=options.warnings, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1078 blame=options.blame, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1079 debug=options.debug, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1080 lineno=options.lineno, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1081 ): |
11816
e1359ad582f6
check-code: add exit status
Alecs King <alecsk@gmail.com>
parents:
11764
diff
changeset
|
1082 ret = 1 |
29568
7825f6154a65
check-code: factor out boot procedure into main
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29566
diff
changeset
|
1083 return ret |
7825f6154a65
check-code: factor out boot procedure into main
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29566
diff
changeset
|
1084 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43063
diff
changeset
|
1085 |
29568
7825f6154a65
check-code: factor out boot procedure into main
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29566
diff
changeset
|
1086 if __name__ == "__main__": |
7825f6154a65
check-code: factor out boot procedure into main
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
29566
diff
changeset
|
1087 sys.exit(main()) |