Joseph C. Sible
8b3c37aa36
Use find instead of listToMaybe and filter
2023-10-16 00:06:53 -04:00
Max Ulidtko
c89ec2fd49
Fix: do []-related bashism checks on test(1) calls too
2023-10-01 19:57:19 +02:00
Vidar Holen
90d3172dfe
Add a newSystemInterface to go with the rest of the new* constructors
2023-08-13 16:35:28 -07:00
Vidar Holen
d18b2553cf
Merge pull request #2808 from bruce-ricard/pr/dfbr
...
improve short description for SC2038
2023-08-13 14:53:15 -07:00
Vidar Holen
dd747b2a98
SC2325/SC2326: Warn about ! ! foo and foo | ! bar ( fixes #2810 )
2023-07-30 19:18:27 -07:00
Vidar Holen
9490b94886
Save and restore pending here docs when sourcing files ( fixes #2803 )
2023-07-30 16:52:40 -07:00
Vidar Holen
372c0b667e
SC2324: Warn when x+=1 appends.
2023-07-30 15:00:43 -07:00
Danny Faught
01aee1a859
improve short description
...
* The short description used to say that until commit
aac7d76047
from 2014. It appears that
it was changed by mistake in that commit to something less readable.
* With the message "use -print0/-0" we were confused and introduced a
bug in our code because we didn't understand what to do with the
"-0".
* SC2011 (source
c9e27c2470/src/ShellCheck/Analytics.hs (L591)
)
uses that exact warning message, we copied it from there.
Signed-off-by: Bruce Ricard <bricard@vmware.com>
2023-07-28 14:19:54 -04:00
Joseph C. Sible
f03c437e2f
Get rid of a dangerous partial function from checkSpacefulnessCfg'
2023-05-24 16:38:53 -04:00
Vidar Holen
a54965dd2c
Merge branch 'ArenM-posix-read'
2023-04-30 14:49:36 -07:00
Vidar Holen
46b678fca8
Minor fixes to POSIX read without variable check
2023-04-30 14:49:10 -07:00
James Morris
5fec3f9b34
Add fish to the badShells list
2023-04-24 22:08:22 -04:00
Vidar Holen
c05380d518
Count CFEExit as control flow for the purposes of finding dominators
2023-02-04 14:47:40 -08:00
Vidar Holen
8c5fdc3522
Update copyright years
2022-12-12 21:49:19 -08:00
Vidar Holen
8754c21244
Avoid $ trigger TH
2022-12-11 19:22:06 -08:00
Vidar Holen
3cae6cd6ab
Allow building on deepseq < 1.4.2.0
2022-12-11 15:06:24 -08:00
Vidar Holen
74b1745a19
Fix compiler error on some GHC versions
...
Fixes the following error:
src/ShellCheck/CFGAnalysis.hs:1394:40: error:
* Couldn't match expected type `[S.Set a]'
with actual type `M.Map String FunctionValue'
* In the second argument of `($)', namely
`mapStorage $ sFunctionTargets state'
In the expression: S.unions $ mapStorage $ sFunctionTargets state
In an equation for `declaredFuncs':
declaredFuncs = S.unions $ mapStorage $ sFunctionTargets state
* Relevant bindings include
declaredFuncs :: S.Set a
(bound at src/ShellCheck/CFGAnalysis.hs:1394:13)
2022-12-11 15:06:24 -08:00
Vidar Holen
495e34d101
Add missing Semigroup import for older GHC
2022-12-11 14:19:24 -08:00
Vidar Holen
2a16a4e8c1
Add missing imports for later GHC versions
2022-12-10 15:17:08 -08:00
ArenM
3342902d9a
Warn about 'read' without a variable in POSIX sh
...
Dash throws an error if the read command isn't supplied a variable name.
2022-11-17 18:46:15 -05:00
Vidar Holen
0786b2bf3c
Merge pull request #2601 from mavit/colon-after-exec
...
Permit colon after exec
2022-11-02 21:18:56 -07:00
Vidar Holen
86e2b76730
Improve SC1059 error message
2022-10-29 12:50:26 -07:00
Vidar Holen
b770984dfc
Try to parse the inside of traps ( fixes #2584 )
2022-10-13 21:04:38 -07:00
Vidar Holen
d9c9e60fb0
Allow arbitrary bats @test names ( fixes #2587 )
2022-10-13 20:21:59 -07:00
Vidar Holen
14056a7f3a
Don't suggest pgrep for `ps -p .. | grep` ( fixes #2597 )
2022-10-12 20:22:02 -07:00
Vidar Holen
a524929b69
Remove outdated test
2022-10-12 20:22:02 -07:00
Vidar Holen
81c2ecaccb
Remove true/false from SC2216/SC2217 ( fixes #2603 )
2022-10-11 19:40:29 -07:00
Christian Nassif-Haynes
43aca62ca7
Fix false positive for SC2312 when using `time`
2022-10-10 03:33:38 +11:00
Peter Oliver
128351f5ef
Permit colon after exec
...
ShellCheck throws warning SC2093 when a script contains commands that could never be executed because they are after an `exec`. Command `:` does nothing, so add it to the list of commands that don’t trigger this warning.
2022-10-07 17:02:31 +01:00
Vidar Holen
d71d6ff294
Merge pull request #2581 from larryv/updatebashvars
...
Support more Bash internal variables
2022-09-25 11:24:45 -07:00
Vidar Holen
bd65b67578
Merge pull request #2586 from DoxasticFox/issue-2537
...
Suppress SC2311 with `set -o posix`
2022-09-25 11:04:30 -07:00
Christian Nassif-Haynes
ef5f9a7af5
Add `mapfile` to harmless commands for SC2094
2022-09-25 03:04:20 +10:00
Christian Nassif-Haynes
581981ba76
Suppress SC2311 with `set -o posix`
2022-09-24 07:20:48 +10:00
Vidar Holen
fcc473e27f
Include inherited env for DFA of leftover functions ( fixes #2560 )
2022-09-21 18:11:18 -07:00
Lawrence Velázquez
0845b81183
Add READLINE_POINT to list of variables without spaces
2022-09-20 20:39:17 -04:00
Lawrence Velázquez
966fb3e3dd
Recognize more Bash internal variables
...
- BASH_ARGV0, introduced in Bash 5.0
- BASH_COMPAT, 4.3
- BASH_LOADABLES_PATH, 4.4
- CHILD_MAX, 4.3
- EPOCHREALTIME, 5.0
- EPOCHSECONDS, 5.0
- EXECIGNORE, 4.4
- INSIDE_EMACS, 4.4
- PS0, 4.4
- READLINE_ARGUMENT, 5.2
- READLINE_MARK, 5.1
- SRANDOM, 5.1
Fixes #1780 and #2554 .
2022-09-20 20:39:10 -04:00
Lawrence Velázquez
f28462b01c
Remove duplicate "COPROC" from internal vars list
2022-09-20 20:25:21 -04:00
Lawrence Velázquez
ccab132b38
Reflow lists of internal shell variables
...
No functional changes; this just makes the next few commits cleaner.
2022-09-20 20:24:37 -04:00
Vidar Holen
4806719035
Handle variable assignments from `read` in CFG
2022-08-02 15:47:59 -07:00
Vidar Holen
0df9345142
Trace numerical status, use for SC2071 (ref #2541 )
2022-08-02 11:29:56 -07:00
Vidar Holen
77069f7445
Store postdominators as Array Node [Node] for a significant win
2022-07-31 15:43:24 -07:00
Vidar Holen
04db46381f
Use Data.Map.Strict instead for a ~15% parsing speedup
2022-07-29 09:02:45 -07:00
Vidar Holen
c76b8d9a32
Let annotations take effect earlier ( fixes #2534 )
2022-07-28 11:05:16 -07:00
Vidar Holen
d0dd81e1fa
Allow quoting values in directives ( fixes #2517 )
2022-07-28 08:56:44 -07:00
Vidar Holen
f440912279
Refactor to not generate Parameters twice
2022-07-28 08:26:56 -07:00
Vidar Holen
3ce310e939
Plug space leaks when processing multiple files
2022-07-27 14:42:57 -07:00
Vidar Holen
a30ac402eb
Don't use & for updates as result is unspecified
...
This fixes `Prelude.foldl1: empty list []` when script has `( exit )`
2022-07-27 11:30:26 -07:00
Vidar Holen
4a27c9a8d5
Fix overlap check
2022-07-26 15:33:25 -07:00
Vidar Holen
b5f5e6347d
Discard next rather than existing fixes when they overlap
2022-07-26 13:41:22 -07:00
Vidar Holen
c57e447c89
Correctly discard overlapping fixes in diff output ( fixes #2370 )
2022-07-26 10:16:12 -07:00
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