Tito Sacchi
ab2b0e11a3
Fix #1340 (SC2093 about removing "exec" should trigger in loops)
2019-01-08 20:20:26 +01:00
Gandalf-
4a2b2c7396
Issue 1404 grep glob false positives
...
https://github.com/koalaman/shellcheck/issues/1404
Some grep flags support globs; these are now all checked prevent false
positives.
2019-01-06 17:45:29 -08:00
Vidar Holen
98266a1878
Merge branch 'issue_1039_case_pattern_context' of https://github.com/Gandalf-/shellcheck
2019-01-01 16:50:59 -08:00
Vidar Holen
6138206ce5
Merge branch 'autofix-tab' of https://github.com/ngzhian/shellcheck
2019-01-01 13:06:20 -08:00
Gandalf-
6debd59f02
Add context to case pattern warnings
...
https://github.com/koalaman/shellcheck/issues/1039
2018-12-31 18:52:30 -08:00
Gandalf-
9425654a42
Expand echo + sed style warning to herestrings
...
https://github.com/koalaman/shellcheck/issues/130
2018-12-31 15:33:37 -08:00
Ng Zhi An
461be74976
Realign virtual tabs when applying fix
...
Fix an off-by-one error, in the case that is commented `should never happen`.
It happens when the end of a range is the at the end of a line.
In that case we should update the real column count (probably just by +1)
instead of returning it.
I modified makeNonVirtual to use a helper, realign, that works on
Ranged. That way we can share the code to realign a PositionedComment
and also a Replacement.
Fixes #1420
2018-12-29 17:16:29 +08:00
Vidar Holen
73822c3588
Allow SC2243 and SC2244 to trigger with quotes, add fix
2018-12-28 19:02:06 -08:00
Cristian Adrián Ontivero
29dedbdc9c
Fix 'export -p' being undefined under POSIX sh
...
Fixes #1432
2018-12-28 21:23:49 -03:00
Vidar Holen
f6bc009331
Merge branch '1416-encourage-n' of https://github.com/ngzhian/shellcheck into ngzhian-1416-encourage-n
2018-12-28 15:56:15 -08:00
Cristian Adrián Ontivero
73a41cdd2f
Check jobs flags in dash/POSIX sh ( fixes #1429 )
2018-12-28 10:04:19 -03:00
Vidar Holen
1b4c486748
Merge pull request #1426 from ngzhian/dash-1406
...
Update supported ulimit flags for dash
2018-12-27 12:19:30 -08:00
Ng Zhi An
95a8cf93c9
Add check for ambiguous nullary test
...
Given an input like `if [[ $(a) ]]; then ...`, this is a implicit `-n` test,
so it works like `if [[ -n $(a) ]]; then ...`. Users might confuse this for
a check for the exit code of the command a, which should be tested with:
if a; then
...
We warn the user to be more explicity and specifity the `-n`.
Fixes #1416
2018-12-25 17:14:21 +08:00
Ng Zhi An
bd04af0769
Update supported ulimit flags for dash
...
Values are retrieved from https://linux.die.net/man/1/dash , search for
ulimit.
Fixes #1406
2018-12-25 09:33:58 +08:00
Vidar Holen
9acc8fcb53
Fix semigroup incompatibility
2018-12-23 11:08:48 -08:00
Vidar Holen
897f019353
Move Ranged definition to Fixer to avoid overpromising
2018-12-22 10:04:00 -08:00
Ng Zhi An
0636e7023c
Fix applying multiple fixes per line
...
Fixes #1421
2018-12-21 14:34:03 +08:00
Vidar Holen
08ca1ee6e9
Remove unnecessary Regex constraint
2018-12-17 20:15:39 -08:00
Vidar Holen
ecd61bfc68
Merge pull request #1376 from ngzhian/autofix
...
Add method to apply a multi-line replacement
2018-12-17 17:24:59 -08:00
Ng Zhi An
a8d88dfe98
Fix calculation of changed lines
2018-12-17 00:20:50 -08:00
Ng Zhi An
7d2c519d64
Remove spurious new line in fix message
2018-12-17 00:20:50 -08:00
Ng Zhi An
3403f8d75b
Fix bug in overlap check
2018-12-17 00:20:50 -08:00
Ng Zhi An
408a3b99d8
Remove overlaps before applying replacements
2018-12-17 00:20:50 -08:00
Ng Zhi An
bc111141f8
Move fix application logic to separate module
2018-12-17 00:20:50 -08:00
Ng Zhi An
3471ad45b1
Smarter sorting and application of fix to handle multiple replacements
2018-12-17 00:20:50 -08:00
Ng Zhi An
d5ba41035b
Add method to apply a multi-line replacement
2018-12-16 21:53:48 -08:00
Vidar Holen
88aef838f1
SC1068 (var = x) now alternatively suggests quoting ( fixes #1412 )
2018-12-16 15:45:52 -08:00
Vidar Holen
138080bdc7
Fix infinite loop on annotations for SC2188 ( fixes #1413 )
2018-12-16 14:42:19 -08:00
Vidar Holen
5b3f17c29d
Allow tests to access token positions for fixes
2018-12-16 13:17:59 -08:00
Vidar Holen
eb588f62f6
Enable autofix support. It's still preliminary.
2018-12-09 15:01:08 -08:00
Vidar Holen
bcd13614eb
Improve Fix memory usage
2018-12-09 15:01:08 -08:00
Vidar Holen
a8376a09a9
Minor renaming and output fixes
2018-12-09 15:01:08 -08:00
Ng Zhi An
5ed89d2241
Change definition of Replacement, add ToJSON instance for it
2018-12-09 15:01:08 -08:00
Ng Zhi An
4a87d2a3de
Expose token positions in params, use that to construct fixes
2018-12-09 15:01:08 -08:00
Ng Zhi An
41613babd9
Prototype fix
2018-12-09 15:01:08 -08:00
Vidar Holen
66b5f13c6f
Make wiki links fit in 80 columns
2018-12-02 19:08:06 -08:00
Vidar Holen
1b207b3d43
Preemptively fix possible '-- |' breakage
2018-11-26 20:43:15 -08:00
Vidar Holen
cb76951ad2
Add warnings for 'exit' similar to 'return' ( fixes #1388 )
2018-11-24 23:05:40 -08:00
Vidar Holen
2827b35696
SC2240: Warn about `. script args..` in sh/dash ( fixes #1373 )
2018-11-07 18:04:18 -08:00
Vidar Holen
620c9c2023
Also warn about glob matching with [ a != b* ] ( fixes #1374 )
2018-11-01 04:47:44 -07:00
Vidar Holen
df0a0d41fa
Add SC1133: Warn when a line starts with |/||/&& ( fixes #1359 )
2018-10-21 17:46:46 -07:00
Vidar Holen
b815242506
Improve regex parsing ( fixes #1367 )
2018-10-21 15:25:35 -07:00
Vidar Holen
07b5aa2971
Add SC2239: shebang is not absolute path.
2018-10-17 20:38:21 -07:00
Vidar Holen
f7b82658f4
Add $# to list of variables not containing spaces ( fixes #1362 )
2018-10-17 09:00:52 -07:00
Vidar Holen
e0e46e979a
Add wiki links to output, and a -W controlling it. ( Fixes #920 )
2018-10-10 21:53:43 -07:00
Peter Simons
5f1c969546
getParentTree: avoid pattern matching in do notation
...
Pattern matching in "do" requires a MonadFail context, which we don't have in
pure code. Instead, we'll use "case-of" to bind the part of the state that
we're interested in.
2018-09-27 17:30:41 +02:00
Vidar Holen
dadfdfde97
Don't suggest subshells for cd ..; foo; cd..
2018-09-21 21:08:41 -07:00
Vidar Holen
3e2cb26119
Add SC2238 about redirections to command names
2018-09-17 17:46:49 -07:00
Vidar Holen
a06d7c1841
Merge pull request #1324 from ngzhian/679
...
Understand array variable declaration in read (fixes #679 )
2018-09-15 12:33:58 -07:00
Michael Diamond
6db392511b
Expand "rhs"; this abbreviation seems needlessly obfuscating.
2018-09-12 14:22:40 -07:00
Ng Zhi An
07f04e13ce
Understand array variable declaration in read ( fixes #679 fixes #1272 )
...
It used to only treat all trailing variables in read as varaible
declarings, but an array variable can be declared in other positions:
read -a foo -r
foo is a declared variable, and multiple such variables can be declared.
2018-09-08 09:19:02 -07:00
Vidar Holen
f0a2e688c4
Don't warn about LINENO since it's now POSIX. Fixes #644
2018-09-03 12:36:25 -07:00
Vidar Holen
3d03b0ab3b
Suggest -z/-n instead of ! -n/-z ( fixes #1326 ).
2018-08-28 20:15:54 -07:00
Vidar Holen
488d6dcb41
Improve find leading flag detection ( fixes #1312 )
2018-08-26 18:18:57 -07:00
Vidar Holen
d02a9bbcce
Account for &&/||/{}/() in SC2233&co ( fixes #1320 ).
2018-08-26 17:36:10 -07:00
Vidar Holen
932e2b3538
Merge branch 'opqaque-interface' of https://github.com/ngzhian/shellcheck into ngzhian-opqaque-interface
2018-08-18 20:32:27 -07:00
Martin Schwenke
3fe11927bb
SQUASH: --severity specifies *minimum* severity to be handled
...
Signed-off-by: Martin Schwenke <martin@meltin.net>
2018-08-18 20:05:56 -07:00
Martin Schwenke
b16da4b242
Add command-line option -S/--severity
...
Specifies the maximum severity of errors to handle. For example,
specifying "-S warning" means that errors of severity "info" and
"style" are ignored.
Signed-off-by: Martin Schwenke <martin@meltin.net>
2018-08-18 20:05:56 -07:00
Ng Zhi An
c8e0797350
Make data in Interface more opaque
2018-08-17 22:10:18 -07:00
Vidar Holen
15aaacf715
Add test for parsing bitwise not
2018-08-15 18:30:10 -07:00
Vidar Holen
5ef4229f61
Modernize SC2028 echo escape test
2018-08-07 19:31:28 -07:00
Ng Zhi An
8be76b13b9
Use regex to match special flags for printf
...
Fixes #1310
2018-08-05 22:45:24 -07:00
Vidar Holen
581be5878b
Suggest 'cat' when piping/redirecting to echo ( fixes #1292 )
2018-07-28 17:38:53 -07:00
Vidar Holen
0f835a5a2c
Don't trigger SC2222 for fallthrough case branches ( fixes #1044 )
2018-07-28 12:30:06 -07:00
Vidar Holen
4b0a35d4c9
Merge pull request #1302 from pjeby/fix949
...
Fix #949 (failing on @ in function names)
2018-07-26 21:07:48 -07:00
Vidar Holen
51e0c1be62
Use three instead of two dots in 2006 message
2018-07-26 19:59:42 -07:00
Vidar Holen
d8a32da07f
Retire SC1117 (unknown quoted escapes) due to noise
2018-07-26 19:23:53 -07:00
PJ Eby
0d1a34a291
Fix #949 (failing on @ in function names)
...
'@' was previously mentioned in 5005dc0fa1
as a
character needed to fix #909 , but was not included
in the actual change at that time.
2018-07-23 16:18:35 -04:00
Vidar Holen
5005dc0fa1
Allow directive/-s to override shebang blacklist ( fixes #974 )
2018-07-22 12:43:51 -07:00
Vidar Holen
b8ee7436e5
Add a test for 03ce3b15
2018-07-21 13:51:21 -07:00
Vidar Holen
da8e450386
Realign =s
2018-07-21 13:51:08 -07:00
Ng Zhi An
03ce3b15b6
Fix false positive when indexing into array in cond
...
Fixes #1268
2018-07-18 22:31:58 -07:00
Vidar Holen
f91b5bc270
Merge pull request #1256 from ngzhian/mv-stdin
...
Do not warn on mv -i (fixes #1251 )
2018-06-24 11:47:53 -07:00
Vidar Holen
b01f1128c7
Make SC1012 "printf '\t'" suggestion use single quotes
2018-06-24 11:47:00 -07:00
Vidar Holen
75fb4da387
Don't warn about tr '[=e=]' equivalence classes
2018-06-23 16:55:35 -07:00
Vidar Holen
6869c2fa18
Merge pull request #1261 from ngzhian/1188
...
Do not warn find --help (fixes #1188 )
2018-06-23 16:07:23 -07:00
Vidar Holen
868a7be33e
Improve spans for some warnings
2018-06-17 19:19:18 -07:00
Vidar Holen
7138abff4b
Expose (some) span information in TTY output
2018-06-17 17:44:31 -07:00
Vidar Holen
9d3e79b576
Require all Ids to be constructed with a span
2018-06-16 17:33:08 -07:00
Vidar Holen
402e635f86
Warn about & followed by letters, e.g. http://foo/?a=b&c=d
2018-06-16 12:30:19 -07:00
Ng Zhi An
91cbcddd9d
Do not warn find --help ( fixes #1188 )
2018-06-14 22:40:26 -07:00
Ng Zhi An
0cc45447d3
Do not warn on mv -i ( fixes #1251 )
2018-06-13 21:39:37 -07:00
Vidar Holen
32a53f21b5
Merge pull request #1239 from ngzhian/end_column
...
End column
2018-06-13 19:29:55 -07:00
Ng Zhi An
7adeaccd11
Check popd flags for -n ( fixes #1252 )
2018-06-12 22:53:41 -07:00
Ng Zhi An
b63483d44c
Remove unused import
2018-06-12 22:50:02 -07:00
Ng Zhi An
4111ce8fde
Make end pos non-optional
2018-06-12 22:39:06 -07:00
Ng Zhi An
b9a9eb2529
Change getNextId to create a zero width span at new id
2018-06-12 22:17:35 -07:00
Ng Zhi An
e717802de1
Change usage of endPosOfStartId to startSpan and endSpan
2018-06-12 22:11:11 -07:00
Ng Zhi An
1699c9e9ba
Add api to begin and end a span of source code
2018-06-12 21:56:53 -07:00
Vidar Holen
bfc32200e2
Correctly consider $'..' a literal ( fixes #1242 )
2018-06-10 20:23:10 -07:00
Ng Zhi An
8ff35fb4af
Add end pos to readSingleQuoted
2018-06-07 23:09:59 -07:00
Ng Zhi An
29e8c0a16e
Add end pos to readDollarBraced
2018-06-07 22:25:16 -07:00
Ng Zhi An
3848788c2d
Add end pos to readDollarVariable
2018-06-07 21:55:41 -07:00
Ng Zhi An
0c459ae2cb
Add function to set end pos of start id
2018-06-07 21:55:41 -07:00
Ng Zhi An
e496b413bd
Remove usage of withNextId
2018-06-07 21:55:41 -07:00
Ng Zhi An
48ac654a93
Merge end pos map into start pos map
2018-06-07 21:55:41 -07:00
Russell Harmon
4470fe715c
Support emitting a correct end column on SC2086
...
This does the necessary work to emit end columns on AST analyses. SC2086
is made to emit a correct end column as an illustrative example.
For example:
```
$ shellcheck -s bash -f json /dev/stdin <<< 'echo $1'
[{"file":"/dev/stdin","line":1,"endLine":1,"column":6,"endColumn":8,"level":"info","code":2086,"message":"Double quote to prevent globbing and word splitting."}]
```
This change deprecates the parser's getNextId and getNextIdAt, replacing
it with a new withNextId function. This function has the type signature:
withNextId :: Monad m => ParsecT s UserState (SCBase m) (Id -> b) -> ParsecT s UserState (SCBase m) b
Specifically, it should be used to wrap read* functions and will pass in
a newly generated Id which should be used to represent that node.
Sub-parsers will need their own call to withNextId in order to get a
unique Id.
In doing this, withNextId can now track both the entry and exit position
of every read* parser which uses it, enabling the tracking of end
columns throughout the application.
2018-06-07 21:55:41 -07:00
Vidar Holen
b5e5d249c4
Merge pull request #1237 from ngzhian/1234
...
Check if builtin cd is called
2018-05-27 18:34:18 -07:00
Vidar Holen
efffc6150b
Warn about string operations on $@/$* ( fixes #1236 )
2018-05-27 12:53:01 -07:00
Ng Zhi An
cb4a0c0250
Check if builtin cd is called
...
Fixes #1234
2018-05-27 11:42:37 -07:00
Vidar Holen
135cf5932f
Parse here docs as per spec ( fixes #1050 )
2018-05-26 21:01:18 -07:00
Vidar Holen
467dfe07b6
Add a unit test and separate ids for 884eff0c
2018-05-23 19:51:36 -07:00
Vidar Holen
d140388bea
Merge pull request #1232 from ngzhian/source-x
...
Add T_SourceCommand to wrap source commands and sourced code
2018-05-23 19:41:55 -07:00
Ng Zhi An
884eff0c36
Add T_SourceCommand to wrap source commands and sourced code
...
Fixes #1181
2018-05-22 22:43:26 -07:00
Vidar Holen
1d8047cce1
Warn about unnecessary subshells in tests
2018-05-22 22:35:37 -07:00
Vidar Holen
77546fba2f
Merge pull request #1223 from ngzhian/1124
...
Handle offset references of the form [foo]:bar (fixes #1124 )
2018-05-20 17:26:08 -07:00
Vidar Holen
4a5ee06ce4
Merge pull request #1206 from ngzhian/aeson
...
Change to aeson (fixes #1085 )
2018-05-20 17:19:20 -07:00
Ng Zhi An
4dceecb1ed
Handle offset references of the form [foo]:bar ( fixes #1124 )
2018-05-13 22:48:02 -07:00
Vidar Holen
46c10c1571
Merge branch 'master' into 1199
2018-05-13 16:55:53 -07:00
Vidar Holen
407f6a63b9
Merge branch 'master' into 1186
2018-05-13 16:47:18 -07:00
Vidar Holen
7ee7448a70
Merge pull request #1221 from ngzhian/1192
...
Assignments are okay in SC2094 (fixes #1192 )
2018-05-13 16:44:11 -07:00
Ng Zhi An
0c88fbc76d
Suppress SC2016 for git filter-branch ( fixes #196 )
2018-05-13 15:18:55 -07:00
Ng Zhi An
b3362f1dc3
Assignments are okay in SC2094 ( fixes #1192 )
2018-05-13 15:17:32 -07:00
Ng Zhi An
2c6bc43614
Add Data.Monoid
2018-05-13 11:44:21 -07:00
Vidar Holen
235bf6605f
Merge pull request #1205 from ngzhian/remove-unused
...
Remove unused code
2018-05-12 19:15:42 -07:00
Vidar Holen
7029a713c7
Merge pull request #1207 from ngzhian/1184
...
When given a %* format string, expect one more argument
2018-05-12 18:50:23 -07:00
Vidar Holen
cf608dc2f6
Parse FD move operations like 2>&1- correctly. Fixes #1180 .
2018-05-12 18:30:35 -07:00
Vidar Holen
bca2ad4e18
Don't think declare -x -F var is used ( fixes #1209 ).
2018-05-12 17:34:23 -07:00
Vidar Holen
719e1854e5
Clarify 'export' suggestion in SC2034 (unused vars).
2018-05-11 21:39:54 -07:00
Ng Zhi An
20ad7dc8de
Add unset to list of commands exempt from 2016
...
Fixes #1186
2018-05-06 16:45:57 -07:00
Ng Zhi An
f84859ab90
When given a %* format string, expect one more argument
...
Fixes #1184
2018-05-06 16:39:51 -07:00
Ng Zhi An
08235a1cb2
Change to aeson ( fixes #1085 )
...
Adds bytestring as a dependency for putStrLn encoded values.
2018-05-06 16:07:53 -07:00
Ng Zhi An
728922d2b8
Remove unused code
2018-05-06 15:24:34 -07:00
Ng Zhi An
a953dd3454
Whitelist rename for SC2016 ( fixes #1199 )
2018-05-06 10:28:17 -07:00
Vidar Holen
ef6a5b97b9
Refactor sudo checks into CommandChecks
2018-04-30 22:59:23 -07:00
Stefan Knudsen
5adfce72e1
Warn about invalid arguments to sudo
2018-04-29 01:16:31 -04:00
Vidar Holen
bb4ce86fab
Account for array index in SC2154 ${var:?} ( fixes #1166 )
2018-04-28 12:09:54 -07:00
Vidar Holen
7ec2fa2d3e
Remove 'nice' from list of non-reading commands ( fixes #1169 )
2018-04-28 11:39:42 -07:00
Vidar Holen
5481ccd7f7
Warn about elseif or elsif as command names ( fixes #1177 )
2018-04-27 22:23:37 -07:00
Vidar Holen
a1d8947297
Fix broken test stripping
2018-04-22 14:57:43 -07:00
Vidar Holen
ce7658ed86
Merge pull request #1168 from vmchale/master
...
Bump to ghc 8.4.1
2018-04-22 14:10:25 -07:00
Vidar Holen
32af2783f0
Allow stripping unit tests
2018-04-02 21:14:23 -07:00
Vanessa McHale
08aab3c161
hlints
2018-04-02 11:48:21 -05:00
Vanessa McHale
cf39adff75
bump to latest ghc
2018-04-02 11:44:18 -05:00
Vidar Holen
08d2eef411
Whitelist docker for SC2016 about '$var'. Fixes #1161
2018-03-29 19:27:34 -07:00
Vidar Holen
4aca1ff128
Warn when printf arg count is not a multiple of format count
2018-03-28 08:57:38 -07:00
Geir Hauge
55216792c9
Consider type a valid command in sh
...
[type](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/type.html ) *is* defined by POSIX, and even the bourne shell has the `type` command.
2018-03-25 12:11:57 +02:00
Vidar Holen
764b242f1b
Suggest quoting expansions in for loop globs
2018-03-24 17:43:20 -07:00
Oleg Grenrus
cd7c077ecc
Move library into src/
2018-03-08 19:57:40 +02:00