74 (r'(\[|\btest\b).*-e ', "don't use 'test -e', use 'test -f'"), |
74 (r'(\[|\btest\b).*-e ', "don't use 'test -e', use 'test -f'"), |
75 (r'^alias\b.*=', "don't use alias, use a function"), |
75 (r'^alias\b.*=', "don't use alias, use a function"), |
76 (r'if\s*!', "don't use '!' to negate exit status"), |
76 (r'if\s*!', "don't use '!' to negate exit status"), |
77 (r'/dev/u?random', "don't use entropy, use /dev/zero"), |
77 (r'/dev/u?random', "don't use entropy, use /dev/zero"), |
78 (r'do\s*true;\s*done', "don't use true as loop body, use sleep 0"), |
78 (r'do\s*true;\s*done', "don't use true as loop body, use sleep 0"), |
|
79 (r'^( *)\t', "don't use tabs to indent"), |
79 ], |
80 ], |
80 # warnings |
81 # warnings |
81 [] |
82 [] |
82 ] |
83 ] |
83 |
84 |
85 (r"( *)(#([^\n]*\S)?)", repcomment), |
86 (r"( *)(#([^\n]*\S)?)", repcomment), |
86 (r"<<(\S+)((.|\n)*?\n\1)", rephere), |
87 (r"<<(\S+)((.|\n)*?\n\1)", rephere), |
87 ] |
88 ] |
88 |
89 |
89 uprefix = r"^ \$ " |
90 uprefix = r"^ \$ " |
90 uprefixc = r"^ > " |
|
91 utestpats = [ |
91 utestpats = [ |
92 [ |
92 [ |
93 (r'^(\S| $ ).*(\S[ \t]+|^[ \t]+)\n', "trailing whitespace on non-output"), |
93 (r'^(\S| $ ).*(\S[ \t]+|^[ \t]+)\n', "trailing whitespace on non-output"), |
94 (uprefix + r'.*\|\s*sed', "use regex test output patterns instead of sed"), |
94 (uprefix + r'.*\|\s*sed', "use regex test output patterns instead of sed"), |
95 (uprefix + r'(true|exit 0)', "explicit zero exit unnecessary"), |
95 (uprefix + r'(true|exit 0)', "explicit zero exit unnecessary"), |
96 (uprefix + r'.*(?<!\[)\$\?', "explicit exit code checks unnecessary"), |
96 (uprefix + r'.*(?<!\[)\$\?', "explicit exit code checks unnecessary"), |
97 (uprefix + r'.*\|\| echo.*(fail|error)', |
97 (uprefix + r'.*\|\| echo.*(fail|error)', |
98 "explicit exit code checks unnecessary"), |
98 "explicit exit code checks unnecessary"), |
99 (uprefix + r'set -e', "don't use set -e"), |
99 (uprefix + r'set -e', "don't use set -e"), |
100 (uprefix + r'\s', "don't indent commands, use > for continued lines"), |
100 (uprefix + r'\s', "don't indent commands, use > for continued lines"), |
101 (uprefixc + r'( *)\t', "don't use tabs to indent"), |
|
102 ], |
101 ], |
103 # warnings |
102 # warnings |
104 [] |
103 [] |
105 ] |
104 ] |
106 |
105 |