Commit Graph

688 Commits

Author SHA1 Message Date
Vidar Holen e9784fa9a7 Refine #2544 to not warn when $? postdominates [ ] (fixes #2544) 2022-07-25 12:00:59 -07:00
Vidar Holen f1148b8b41 Include postdominators in CFGResult 2022-07-25 12:00:53 -07:00
Vidar Holen 982681fc05 Add unit test to ensure SC2321 does not trigger on associative arrays 2022-07-24 14:30:31 -07:00
Vidar Holen 52dac51cd4 SC2323: Warn about redundant parens in a[(x+1)] and $(( ((x)) )) (ref: #1666) 2022-07-24 14:18:38 -07:00
Vidar Holen 30bb0e0093 SC2321: Warn about redundant $(()) in arr[$((i))]=x (ref: #1666) 2022-07-24 14:18:38 -07:00
Vidar Holen ea4e0091c7 Additionally pluralize 'arguments' in SC2183 2022-07-23 15:38:42 -07:00
Vidar Holen 81d9f7e640 Merge branch 'grammer_fix_sc2183' of https://github.com/ygeyzel/shellcheck into ygeyzel-grammer_fix_sc2183 2022-07-23 15:34:22 -07:00
Vidar Holen 69469c3603
Merge pull request #2543 from ygeyzel/SC2028-escape-chars
Add escape characters to SC2028: \a, \b, \e, \f, \v, \\, \', \OOO, \xHH
2022-07-23 15:30:00 -07:00
Vidar Holen 5cf6e01ce9 Warn when $? refers to echo or condition (ref #2541) 2022-07-23 09:39:26 -07:00
ygeyzel f7857028f7 Add escape characters to SC2028: \a, \b, \e, \f, \v, \\, \', \OOO, \xHH 2022-07-23 19:28:37 +03:00
Vidar Holen b261ec24f9 Include exit codes in DFA (ref #2541) 2022-07-23 08:50:19 -07:00
Vidar Holen 819470fa1d Omit SC3021 about `>& file` unless definitely non-numeric (fixes #2520) 2022-07-22 17:06:24 -07:00
Vidar Holen 2f28847b08 Normalize spaces around = in unit tests 2022-07-22 16:35:14 -07:00
Vidar Holen e47480e93a Also emit SC2004 for array indices (fixes #1666) 2022-07-22 16:29:52 -07:00
Vidar Holen 9caeec104b SC2318: Warn about backreferencing in `declare x=1 y=$x` (fixes #1653) 2022-07-22 12:40:59 -07:00
Vidar Holen 95b3cbf071 Qualify Data.Map as M instead of tedious Map 2022-07-22 11:11:09 -07:00
Vidar Holen e7f05d662a In addition to start/end, track sets of nodes belonging to tokens 2022-07-22 10:29:19 -07:00
Vidar Holen 3ee4419ef4 Suppress SC2086 for variables declared -i (ref #2541) 2022-07-22 08:53:27 -07:00
Vidar Holen da4885a71d Use DFA for SC2086 2022-07-20 08:08:44 -07:00
Vidar Holen 642ad86125 Add SC2317 warning about unreachable commands 2022-07-20 08:08:41 -07:00
Vidar Holen f77a545282 Control Flow Graph / Data Flow Analysis support 2022-07-20 08:08:24 -07:00
Vidar Holen a4042f7523 Parse &&/|| as left-associative 2022-07-20 08:08:24 -07:00
Vidar Holen 363c0633e0 When reparsing array indices, do it recursively 2022-07-20 08:08:24 -07:00
ygeyzel 7ceb1f1519 SC2183 grammer fix: 'variable' instead of 'variables' if only one variable 2022-07-17 21:46:42 +03:00
Vidar Holen fd595d1058 Only trigger SC2316 on unquoted words. 2022-05-06 10:06:12 -07:00
Rune Juhl Jacobsen 2821552688 Fix bug in 2126 when using after/before flags with grep
Using `--after-context`/`-A` or `--before-context`/`-B` would give a warning
recommending the user to use `grep -c`, even though that would give a different
result than using `grep | wc -l`:

```fundamental
$ echo -e "1\n2\n3" | grep -cA 3 1
1
$ echo -e "1\n2\n3" | grep -A 3 1 | wc -l
3
```
2022-05-06 09:17:23 -07:00
Patrick Xia fa15c0a454 add SC2316: error on multiple declarations like 'readonly local' 2022-05-05 16:19:07 -07:00
Vidar Holen 88cdb4e2c9 Warn about spaces around = in alias (fixes #2442) 2022-02-03 19:23:46 -08:00
Vidar Holen ade2bf7b87 Allow parsing [[ x = ["$y"] ]] (fixes #2165) 2022-01-09 16:50:50 -08:00
Vidar Holen e6e558946c Improve decoding of single quoted literals (fixes #2418) 2021-12-21 14:30:39 -08:00
Vidar Holen dd626686c4
Merge pull request #2375 from scop/spelling
Comment spelling fixes
2021-12-05 14:27:08 -08:00
Vidar Holen d7971dafd1 Minor formatting fixes 2021-12-04 17:37:12 -08:00
Martin Schulze 9092080a84 bats: Add check for useless negation (SC2314/15) 2021-11-15 12:01:12 +01:00
Vidar Holen 499c99372e Rewrite SC2032 warning and mention line number (fixes #2353) 2021-11-14 21:34:21 -08:00
Vidar Holen d9a9d5db86 Mark prefix/postfix inc/dec as integers (fixes #2376) 2021-11-14 16:39:32 -08:00
Ville Skyttä c5de58ae84 Comment spelling fixes 2021-11-13 12:50:53 +02:00
Vidar Holen 3b6972fbf1 Update copyright years 2021-11-06 19:07:34 -07:00
Vidar Holen 8db220ae43 Include `local -r` in check-extra-masked-returns (fixes #2362) 2021-11-06 15:37:59 -07:00
Vidar Holen efd49e486f Consider all forms of TA_Assignment to remove spaces (fixes #2364) 2021-10-30 17:47:30 -07:00
Vidar Holen 0dd5c67bdf Warn about [^..] in Dash (fixes #2361) 2021-10-21 21:00:39 -07:00
Vidar Holen 788aee1b7c Treat typeset similar to declare (fixes #2354) 2021-10-15 14:41:48 -07:00
Vidar Holen c3aaa27540 Skip SC2214 if variable is modified in loop (fixes #2351) 2021-10-09 12:13:41 -07:00
Vidar Holen 3aedda766d For `while getopts; do case ..` checks, make sure variable matches 2021-10-09 11:40:52 -07:00
Vidar Holen 205ba429b3 Warn about `read foo[i]` expanding as glob (fixes #2345) 2021-10-07 18:50:44 -07:00
Vidar Holen 38251abe26 Add suggestion level in text for TTY output (fixes #2339) 2021-10-07 17:14:41 -07:00
Vidar Holen 23cddb037e
Merge pull request #2320 from DoxasticFox/set-e-proc-sub
Add extra checks for masked return codes
2021-10-02 12:52:59 -07:00
Christian Nassif-Haynes 093df8cb24 Add extra checks for masked return codes 2021-10-02 01:36:40 +10:00
Vidar Holen fac97a5301 Don't emit SC2140 when trapped string is /, = or : (fixes #2334) 2021-09-25 20:23:58 -07:00
Vidar Holen ad92cb4112 Disable UUOC for cat with unquoted variable (fixes #2333) 2021-09-25 19:46:27 -07:00
Vidar Holen db4701d8b5 Add a `setgitversion` script to update the version string with git 2021-09-18 20:46:46 -07:00
Vidar Holen e7df718724 Strip lines containing "STRIP" from ./striptests 2021-09-18 20:43:42 -07:00
Vidar Holen b044f5b23a Don't trigger SC2140 on ${x+"a" "b"} (fixes #2265) 2021-09-18 18:59:42 -07:00
Vidar Holen 8012f6761d Suppress SC2094 when both are input redirections (fixes #2325) 2021-09-18 18:00:15 -07:00
Vidar Holen 2536507060 Remove SC1004 (fixes #2326) 2021-09-18 17:43:55 -07:00
Vidar Holen 09aa15c9b7 Allow `disable=all` to disable all warnings (fixes #2323) 2021-09-18 12:50:01 -07:00
Vidar Holen 9a54e91195
Merge pull request #2318 from FabianWolff/grep-lL-wc-l
Do not suggest `grep -c` as a replacement for `grep -l/-L | wc -l`
2021-09-16 19:40:40 -07:00
Vidar Holen 4e703e5c61 Allow specifying external-sources=true in shellcheckrc (fixes #1818) 2021-09-15 18:02:37 -07:00
Vidar Holen 64733cc110
Merge pull request #2303 from DoxasticFox/set-e-functions
Show info about `set -e` suppression during function calls
2021-09-04 17:06:24 -04:00
Christian Nassif-Haynes dc9032fca5 Show info about `set -e` suppression during function calls 2021-09-05 04:23:25 +10:00
Fabian Wolff 40216487d6 Do not suggest `grep -c` as a replacement for `grep -l/-L | wc -l` 2021-09-02 17:47:06 +02:00
Vidar Holen 747bd8fd6a Warn about strings for numerical operators in [[ ]] (fixes #2312) 2021-08-30 19:50:00 -07:00
Vidar Holen f5fd9c2fed Improve warnings about unnecessary subshells (fixes #2169) 2021-08-30 10:56:55 -07:00
Vidar Holen 081f7eba24 Fix parsing of [$var] (fixes #2309) 2021-08-26 23:05:14 -07:00
Vidar Holen 81b7ee5598 Don't warn about unused variables starting with _ (fixes #1498) 2021-08-26 19:40:21 -07:00
Vidar Holen c85ce2cb06 Add `rg` to list of commands ignored for SC2016 (fixes #2209) 2021-08-26 18:50:40 -07:00
Vidar Holen 5b6fd60279 Improve warnings for expr (fixes #2033) 2021-08-22 21:12:58 -07:00
Vidar Holen da7b28213e Recognize wait -p as assigning a variable (fixes #2179) 2021-08-17 21:53:27 -07:00
Vidar Holen c61fc7546e Don't warn about variables guarded with :+ (fixes #2296) 2021-08-17 16:20:32 -07:00
Vidar Holen 8c0bf8d41f Warn about looping over array values and using them as keys 2021-08-17 12:51:27 -07:00
Vidar Holen bb0a571a1e Improve warnings for bad parameter expansion (fixes #2297) 2021-08-16 21:02:20 -07:00
Vidar Holen fed4a048bc Suppress SC2167 when name is "_" (fixes #2298) 2021-08-13 23:11:20 -07:00
Vidar Holen e5745568e8 Extend warnings about spaces around = to 'let' 2021-08-08 15:48:50 -07:00
Vidar Holen cf8066c07c SC2295 Warn about unquoted variables in PE patterns (fixes #2290) 2021-08-03 13:02:53 -07:00
Vidar Holen a44f3edb14 Warn about eval'ing arrays 2021-07-30 18:46:19 -07:00
Vidar Holen e33146d530 Avoid trigger SC2181 on composite $? checks (fixes #1167) 2021-07-29 20:51:19 -07:00
Vidar Holen fe81dc1c27 Optionally suggest [[ over [ in Bash scripts (-o require-double-brackets) (fixes #887) 2021-07-27 18:53:30 -07:00
Vidar Holen fbc8d2cb2f Don't consider [ -n/-z/-v $var ] assignments for subshell modification (fixes #2217) 2021-07-27 09:33:22 -07:00
Vidar Holen c471e45822 Allow printf/return/assignments after exec (fixes #2249) 2021-07-26 19:32:33 -07:00
Vidar Holen 754ab22d94 Warn about unquoted blanks in echo (fixes #377) 2021-07-26 18:59:33 -07:00
Vidar Holen 4956b006ac Fix broken test from previous commit 2021-07-25 19:56:51 -07:00
Vidar Holen 02e07625d1 Warn about quoting in assignments to sh declaration utilities (fixes #1556) 2021-07-25 19:36:42 -07:00
Vidar Holen 44471b73cc Have SC2155 trigger on 'typeset' as well (fixes #2262) 2021-07-25 17:34:14 -07:00
Vidar Holen 364c33395e Don't print colors when $TERM is 'dumb' or unset (fixes #2260) 2021-07-25 14:44:35 -07:00
Vidar Holen 0d58337cdd Don't warn about repeated range in [[ -v arr[xxx] ]] (fixes #2285) 2021-07-25 13:01:57 -07:00
Vidar Holen 9eb63c97e6 Re-add warnings about 'declare var = value' (fixes #2279) 2021-07-24 13:25:56 -07:00
Vidar Holen 8be60028ef Don't warn when line starts with &> (fixes #2281) 2021-07-22 19:25:48 -07:00
Vidar Holen 9b077e28cb Add :/. to chars recognized for \alias suppression (fixes #2287) 2021-07-21 16:44:21 -07:00
Vidar Holen 99f6554c9b SC2181: Add '!' in suggestion as appropriate (fixes #2189) 2021-07-18 16:59:45 -07:00
Vidar Holen 022bc8277c
Merge pull request #2238 from bcran/legacy-backticks-msg
Fix typo in SC2006 message: "backticked" vs "backticks"
2021-07-02 09:55:18 -07:00
Vidar Holen 5e60f1eddb
Merge pull request #2241 from Kamilcuk/master
Add a comma to function characters
2021-07-02 09:54:51 -07:00
Vidar Holen 163b2f12e2 Sanity check command names (fixes #2227) 2021-06-05 18:16:22 -07:00
Kamil Cukrowski 5100960303 Add a comma to function characters
Bash has very relaxed function name rules and a comma is also a valid
character. This commit silences SC1036 check when a function name has a
comma in its name.
2021-05-26 10:58:38 +02:00
Rebecca Cran b61a7658d6 Fix typo in SC2006 message: "backticked" vs "backticks" 2021-05-24 13:33:50 -06:00
Vidar Holen 331e89be99 Fix bad warning for ${#arr[*]}. Fixes #2218. 2021-04-26 10:44:33 -07:00
Vidar Holen fe25a2b00e Treat ${arr[*]} like $* for SC2048 2021-04-24 17:08:10 -07:00
Vidar Holen 9e60b3ea84 Fix haddock failures (fixes #2216) 2021-04-22 22:17:51 -07:00
Vidar Holen 5669eb2203 Make x-comparison warning default 2021-04-11 15:52:13 -07:00
Matthias Diener 087865c680
Clarify 'which' 2021-03-20 20:43:18 -05:00
Vidar Holen 98952df35b Improve warnings on backslashes in comments 2021-03-20 18:12:39 -07:00
Vidar Holen a277efdbb1 Merge branch 'comment-backslash' of https://github.com/m-ildefons/shellcheck into m-ildefons-comment-backslash 2021-03-20 13:34:40 -07:00
Vidar Holen ecdc21b0b7
Merge pull request #2112 from pepeiborra/patch-1
Add Haddock markup to SystemInterface
2021-03-14 13:16:29 -07:00
Vidar Holen f02c297fdd Merge parser and analyzer shebang parsing 2021-03-11 23:04:17 -08:00
Vidar Holen ea83b602d7 Merge branch 'busybox' of https://github.com/austin987/shellcheck into austin987-busybox 2021-03-11 21:44:17 -08:00
Vidar Holen 83435c4f2e
Merge pull request #2134 from kolyshkin/podman-sc2016
Whitelist podman for SC2016 about '$var'
2021-03-07 20:48:58 -08:00
Vidar Holen a69d6cb661
Merge pull request #2117 from brother/patch-1
Change error 2076 to a warning.
2021-03-07 20:47:53 -08:00
Moritz Röhrich d6bb8fc0d8 Error on backslash in comment #2132
- Report error in case of a backspace in a comment

Backspaces in comments are no good. In most cases they are the result of
commenting out a longer line, that was broken down. This usually results
in the shell treating the following lines as their own commands on their
own lines instead of as parts of the longer, broken down line.
2021-02-14 19:13:29 +01:00
Claudio Bley 8bb5e01401 Allow `env` to have flags and variables in shebang
The `env` command has a `-S,--split-string` option which enables
having arguments for the command in a shebang.

Also, one could use variable assignments for the command since
`env` treats only the first word without a `=` character as the
command to run.

Fixes #2143.
2021-02-12 10:53:54 +01:00
Austin English 2e59eba6eb add support for `/bin/busybox sh` shebang 2021-02-05 19:56:44 -06:00
Vidar Holen 15ff87cf80
Merge pull request #2119 from josephcsible/refactors
Various refactorings
2021-02-02 18:14:27 -08:00
Kir Kolyshkin 99e9d5c54b Whitelist podman for SC2016 about '$var'
Same as 08d2eef411 but for podman.

Fixes https://github.com/koalaman/shellcheck/issues/2057

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2021-01-27 16:21:44 -08:00
Vidar Holen dff8f9492a Improve SC2283 message and position 2021-01-05 10:07:39 -08:00
Vidar Holen 2e5c56b270 Parse heredocs correctly with carriage returns (fixes #2103) 2020-12-31 13:19:14 -08:00
Vidar Holen 9584266a8b Escape control characters when adding user data to messages 2020-12-31 12:28:48 -08:00
Vidar Holen 5fbaae2bb3 Don't treat ${!x@} as reference of x (fixes #2116) 2020-12-30 20:55:18 -08:00
Vidar Holen fbb14d6b38 Improve checks for = in command names (fixes #2102) 2020-12-30 20:30:43 -08:00
Joseph C. Sible 2cfd1f2714 Fuse maps 2020-12-28 18:13:34 -05:00
Joseph C. Sible 953d9bc56d Remove unused helper stub 2020-12-28 18:13:34 -05:00
Joseph C. Sible e272fa04ee Remove redundant bind and return 2020-12-28 18:13:34 -05:00
Joseph C. Sible 81e84c2939 Use execState instead of snd . runState 2020-12-28 18:13:34 -05:00
Joseph C. Sible 34939ca0b7 Fuse map into any 2020-12-28 18:13:34 -05:00
Joseph C. Sible e7820479f0 Use find 2020-12-28 18:13:34 -05:00
Joseph C. Sible 8480563672 Use syntactic sugar instead of building lists by hand 2020-12-28 18:13:34 -05:00
Joseph C. Sible dfbcc9595e Use mapM instead of reimplementing it 2020-12-28 17:48:58 -05:00
Joseph C. Sible 2c0766825e Implement groupByLink in terms of foldr 2020-12-28 17:45:11 -05:00
Joseph C. Sible cb4f4e7edc Use mapM_ instead of reimplementing it 2020-12-28 17:34:52 -05:00
Joseph C. Sible 0607039d41 Simplify actualArgs 2020-12-28 17:21:47 -05:00
Joseph C. Sible 46f177b5be Simplify parseArgs 2020-12-28 17:19:08 -05:00
Joseph C. Sible eaccd3d02c Simplify parser 2020-12-28 17:19:08 -05:00
Joseph C. Sible 35033a9f2f Remove unnecessary use of Maybe from shellFor 2020-12-28 17:09:50 -05:00
Martin Bagge / brother 19355226e1
Change error 2076 to a warning.
Implementing the suggestion by @pixarbuff #1985.
2020-12-27 00:27:36 +01:00
Pepe Iborra 4e7e3f9456
Add Haddock markup to SystemInterface 2020-12-22 09:15:57 +00:00
Vidar Holen bd3299edd3 Treat 'exec $1' like '$1' for the purpose of quoting (fixes #2068) 2020-12-17 20:31:45 -08:00
Vidar Holen cc3884cf9f Support env -S/--split-string in shebangs (fixes #2105) 2020-12-12 20:24:32 -08:00
Vidar Holen 6ba1af0898 Warn when a variable is assigned to itself 2020-12-11 20:28:36 -08:00
Vidar Holen 8e332ce879 Improve handling of trailing tokens for []/compounds (fixes #2091) 2020-12-06 21:26:24 -08:00
Vidar Holen b625562d60 Add POSIX checks for more Bash-specific variables (fixes #2093) 2020-12-05 20:11:12 -08:00
Vidar Holen 65044c2568 SC2095: Also warn if the command is backgrounded 2020-11-29 13:01:23 -08:00
Keith Smiley 619662adb6 Add readonly to SC2155
This adds a warning for readonly masking the return value of function.
This is mentioned in the wiki
https://github.com/koalaman/shellcheck/wiki/SC2155#problematic-code-in-the-case-of-readonly
but didn't actually produce a warning.

Fixes https://github.com/koalaman/shellcheck/issues/1336
2020-10-23 17:29:04 -07:00
Vidar Holen 28d3279ba6 Optional style warning about [ x$var = xval ] 2020-10-19 20:04:58 -07:00
Vidar Holen 256457c47a Use getopts parser to find 'read' arrays (fixes #2073) 2020-10-18 22:57:16 -07:00
Vidar Holen 3104cec770 SC2267: Warn about xargs -i (fixes #2058) 2020-10-18 22:10:14 -07:00
Vidar Holen f100c2939e Rewrite getopts style option parser 2020-10-18 21:34:58 -07:00
Vidar Holen 8d99926554 Recognize `local -x` similarly to `export` (fixes #2069) 2020-10-18 15:15:31 -07:00
Vidar Holen 218deb6d01 Update SC2091/SC2092 message and ignore in quotes. 2020-09-08 19:30:13 -07:00
Vidar Holen c4cc2debb7 Improve compatibility checks 2020-09-07 21:05:49 -07:00
Vidar Holen cfd68ee0c2 Give each sh/dash compatibility warning its own SC3xxx error code 2020-09-01 16:48:14 -07:00
Vidar Holen 58783ab3cc Allow specifying ranges in disable directives 2020-09-01 16:22:15 -07:00
Vidar Holen 43191fa71d Suppress SC2035 for echo * and printf * (fixes #2036) 2020-09-01 14:19:28 -07:00
Vidar Holen c9be7ab2eb Parse assignments according to spec (fixes #2022) 2020-08-23 18:46:13 -07:00
Vidar Holen 9e59bcca91 Upgrade SC2169 (unsupported in dash) from warning to error (fixes #2013) 2020-08-23 15:49:20 -07:00