Vidar Holen
3e3e4fd0cd
Avoid defining flags for non-literal parameters
2019-07-01 23:22:09 -07:00
Vidar Holen
561075ea79
Merge branch 'shflags' of https://github.com/yetamrra/shellcheck into yetamrra-shflags
2019-07-01 20:00:28 -07:00
Vidar Holen
9702f1ff9c
Handle diffs for files without trailing linefeed
2019-06-30 20:19:10 -07:00
Vidar Holen
544047c5af
Warn about ending double quotes just to make $ literal
2019-06-30 18:43:42 -07:00
Vidar Holen
321afa427e
Remove unused parse-time AST warnings
2019-06-30 17:38:17 -07:00
Vidar Holen
c381c5746f
Remove unnecessary lookahead in readDollarLonely
2019-06-30 17:28:15 -07:00
Vidar Holen
eeb7ea01c9
Allow SC2103 to be silenced ( fixes #1591 )
2019-06-30 16:36:45 -07:00
Vidar Holen
3116ed3ae5
Filter warnings by annotations in unit tests
2019-06-30 16:36:03 -07:00
Benjamin Gordon
f6ba500d6b
Add support for basic shflags semantics
...
The shflags command-line flags library creates variables at runtime
with a few well-defined functions. This causes shellcheck to spit out
lots of warnings about unassigned variables, as well as miss warnings
about unused flag variables.
We can address this with two parts:
1. Pretend that the shflags global variables are predefined like other
shell variables so that shellcheck doesn't expect users to set them.
2. Treat DEFINE_string, DEFINE_int, etc. as new commands that create
variables, similar to the existing read, local, mapfile, etc.
Part 1 can theoretically be addresssed without this by following sourced
files, but that doesn't help if people are otherwise not following
external sources.
The new behavior is on by default, similar to automatic bats test
behavior.
Addresses #1597
2019-06-25 12:14:54 -06:00
Vidar Holen
c5aa171a5f
Use mappend over <> for compatibility
2019-06-24 09:02:35 -07:00
Vidar Holen
b1aeee564c
Add a Diff output format
2019-06-23 20:02:01 -07:00
Vidar Holen
e099625e7d
Remove unused ioref
2019-06-23 15:50:48 -07:00
Vidar Holen
5242e384a1
Fix error spans for shebang warnings ( fixes #1620 )
2019-06-23 13:49:08 -07:00
Vidar Holen
7e77bfae49
Improve message for SC2055
2019-06-23 13:48:43 -07:00
Vidar Holen
9059024de6
Merge pull request #1592 from hugopeixoto/fix/SC2016-false-positive
...
SC2016: Don't trigger when using empty backticks
2019-06-19 19:55:34 -07:00
Vidar Holen
61d2112e71
Add missing JSON1.hs
2019-06-02 13:00:38 -07:00
Vidar Holen
9f0ef5983a
Optionally check for unassigned uppercase variables
2019-06-02 10:29:04 -07:00
Vidar Holen
1297ef46d7
Add JSON1 as a separate format, wrap result in an object
2019-06-02 10:28:37 -07:00
Vidar Holen
f4be53eb19
Warn about [ -v var ] for POSIX sh
2019-06-02 10:28:20 -07:00
Vidar Holen
3e7c2bfec0
Warn about [ $a != x ] || [ $a != y ]
2019-06-02 09:26:54 -07:00
Hugo Peixoto
07ffcb626e
SC2016: Don't trigger when using empty backticks
...
When using '``' or '```', it should not suggest using double quotes.
2019-05-27 11:03:24 +01:00
Vidar Holen
95b1185882
Inform about ineffectual ! on commands ( fixes #1531 )
2019-05-22 17:14:28 -07:00
Vidar Holen
8efbecd64a
Don't suggest removing braces from $((${x+1})) ( fixes #1533 )
2019-05-19 15:29:47 -07:00
Vidar Holen
52a9d90e1a
Merge pull request #1580 from virgilwashere/copyright
...
Update Copyright to year 2019; README linting
2019-05-19 12:03:15 -07:00
Vidar Holen
861b63aa77
Specify 'variable' in require-braces
2019-05-14 18:48:41 -07:00
Benjamin Gordon
64c9c83cc8
SC2250: New optional check for braces around variable references
...
Always using braces makes it harder to accidentally change a variable by
pasting other text next to it, but the warning is off by default because
it's definitely a style preference. Omit special and positional
variables from the check because appending additional characters to them
already doesn't change parsing.
2019-05-14 11:01:38 -06:00
Benjamin Gordon
aa3b709b5d
Track whether braces were present in T_DollarBraced
...
References of the form $var and ${var} both map to the same structure in
the AST, which prevents any later analysis functions from distinguishing
them. In preparation for adding checks that need this info, add a Bool
to T_DollarBraced that tracks whether the braces were seen at parsing
time and update all references so that this change is a no-op.
2019-05-14 11:01:38 -06:00
Benjamin Gordon
0358090b3c
Refactor definition of special variables.
...
This ensures that the parser and other places that refer to special
variables can use the same list.
2019-05-14 08:57:56 -06:00
Virgil
ea05271fa3
📝 Update Copyright to year 2019 and Markdown linting
...
- [x] 📝 Update Copyright to year 2019
- [x] 📝 MD009/no-trailing-spaces: Trailing spaces [Expected: 0 or 2; Actual: 1]
- [x] 📝 MD034/no-bare-urls: Bare URL used
- [ ] 📝 ~MD004/ul-style: Unordered list style [Expected: dash; Actual: asterisk]~
- [ ] ~add missing TOC entries~
2019-05-14 20:12:34 +10:00
Vidar Holen
50116e8aee
Don't suggest [[..]] for sh in SC2081 ( fixes #1562 )
2019-05-13 20:45:53 -07:00
Benjamin Gordon
50af8aba29
Add json1 format that ignores tabs
...
The new json1 format works just like json except that it treats tabs as
single characters instead of 8-character tabstops.
The main use case is to allow editors to pass -fjson1 so that they can
consume the json output in a character-oriented way without breaking
backwards compatibility.
Also addresses #1048 .
2019-05-13 10:55:16 -06:00
Vidar Holen
5fb1da6814
Replace verbose checks with optional checks
2019-05-12 19:14:04 -07:00
Vidar Holen
58205a3573
Emit resolved rather than apparent filename for 'source' ( fixes #1579 )
2019-05-12 15:55:37 -07:00
Vidar Holen
d9e419d60f
Add support for source-path directives ( fixes #1577 )
2019-05-09 19:54:41 -07:00
Vidar Holen
a3cd5979a2
Update message for SC2171
2019-05-04 12:54:59 -07:00
Vidar Holen
37b24cc129
Don't warn about "a"b"c" in =~ regex ( fixes #1565 )
2019-05-04 12:18:45 -07:00
Vidar Holen
e2e65e1350
Warn about arithmetic base conversation in sh ( fixes #1547 )
2019-04-29 18:02:44 -07:00
Vidar Holen
9470b9dc31
Don't mention arrays in SC2089 in sh/dash ( fixes #1014 )
2019-04-27 16:22:01 -07:00
Vidar Holen
bf1003eae3
Auto-disable SC2119 when disabling SC2120 ( fixes #703 )
2019-04-27 15:20:07 -07:00
Vidar Holen
c6c12f52bd
Expand root paths into source paths
2019-04-24 18:51:24 -07:00
Pontus Andersson
af46758ff1
Add option to look for sources in alternate root paths
...
Add a new optional flag "-r|--root ROOTPATHS", where ROOTPATHS is a
colon separated list of paths, that will look for external sources in
alternate roots.
This is particular useful when the run-time environment does not fully
match the development environment. The #shellcheck source=file directive
is useful, but has its limitations in certain scenarios. Also, in many
cases the directive could be removed from scripts when the root flag is
used.
Script example.bash:
#!/bin/bash
source /etc/foo/config
Example usage where etc/foo/config exists in skel/foo:
# shellcheck -x -r skel/foo:skel/core example.bash
2019-04-22 17:54:42 +02:00
Vidar Holen
b824294961
Limit SC2032 to likely command args ( fixes #1537 )
2019-04-14 20:58:01 -07:00
Vidar Holen
5b7354918f
SC2249: When verbose, warn about missing default case ( fixes #997 )
2019-04-14 16:58:17 -07:00
Vidar Holen
b76c0a8221
SC2248: Warn about unquoted variables without special chars
2019-04-13 20:19:13 -07:00
Vidar Holen
c860b74505
Set SC2243/SC2244 level to "verbose"
2019-04-13 13:40:18 -07:00
Vidar Holen
9652ccfdbd
Add a verbose mode: `-S verbose`
2019-04-13 13:16:41 -07:00
Vidar Holen
f514f5f735
Warn about flipped $ and " in $"(cmd)" ( fixes #1517 )
2019-03-20 22:10:04 -07:00
Vidar Holen
c53c8a5ead
Allow using 'source -- file' ( fixes #1518 )
2019-03-17 19:37:35 -07:00
Vidar Holen
581bcc3907
Add support for `.shellcheckrc` files
2019-03-03 18:57:13 -08:00
Vidar Holen
293c3b27b8
Continue on parse errors in backticks ( fixes #1475 )
2019-03-03 13:37:32 -08:00
Vidar Holen
05e657e130
Merge pull request #1499 from jabberabbe/iss896-printf-v-arrays
...
Fix issues #896 and #433 : printf -v and arrays
2019-03-02 12:05:50 -08:00
Tito Sacchi
bd19ab4fa9
Fix issues #896 and #433 : printf -v and arrays
2019-02-24 09:45:31 +01:00
Cristian Adrián Ontivero
d3f6e045e2
Check wait flags in dash & POSIX sh
...
Flags for the wait builtin are undefined under both POSIX sh and dash.
Bash though, accepts [-fn].
2019-02-10 12:44:22 +01:00
Vidar Holen
d984f8cbe7
Don't look at 'set' options after a non-literal.
2019-02-08 22:36:22 -08:00
Cristian Adrián Ontivero
acef53be9c
Check set flags under dash & POSIX sh ( fixes #990 )
...
The set builtin accepts certain flags, and some longer synonyms (for
instance set -e is the same as set -o errexit) under POSIX sh. This
makes ShellCheck warn if any of the used flags and options are
undefined when targeting POSIX sh.
This fixes #990 , while adding general flag-support checking for set in
the process.
2019-02-03 17:27:36 +01:00
Vidar Holen
2ea2293154
Update SC1008 to suggest using directive.
2019-01-27 15:02:15 -08:00
Cristian Adrián Ontivero
a669e1684b
Check hash flags under dash and POSIX sh
...
Flags for the hash builtin other than [-r] are undefined under POSIX sh.
Dash also accepts [-v], while bash adds [-l] [-p filename] [-dt] aside
from [-r].
2019-01-27 08:22:37 +01:00
Vidar Holen
420d913bbf
Merge branch 'issue_1330_unsupported_echo_flags' of https://github.com/Gandalf-/shellcheck
2019-01-26 20:16:34 -08:00
Vidar Holen
fb7ac3f57e
Merge pull request #1474 from contivero/unset-flags
...
Check unset flags under dash and POSIX sh
2019-01-26 20:11:03 -08:00
Gandalf-
112a7d8b9b
Issue 1330 unsupported echo flags
...
Issue https://github.com/koalaman/shellcheck/issues/1330
Addresses false positives when quoted arguments to echo begin with what
looks like a flag. Now, warn only when the first argument is a
recognized echo flag when flags are unsupported.
2019-01-24 19:00:19 -08:00
Cristian Adrián Ontivero
31c5601c5e
Check unset flags under dash and POSIX sh
...
The only acceptable flags for the unset builtin under POSIX sh and dash
are [-fv]. Bash though, accepts [-n] too. This commits makes shellcheck
warn about this.
2019-01-23 06:35:08 +01:00
Vidar Holen
2737496b3a
Fix grammatical error in comments
2019-01-22 19:47:40 -08:00
Vidar Holen
a404efab65
Merge branch 'issue_837_opposite_of_exclude_option' of https://github.com/Gandalf-/shellcheck
2019-01-22 19:39:55 -08:00
Vidar Holen
3c94d8b3eb
Merge branch 'issue_1393_quiet_flag' of https://github.com/Gandalf-/shellcheck
2019-01-22 19:15:28 -08:00
Gandalf-
a89403f09b
Issue 1393 quiet flag
...
Issue https://github.com/koalaman/shellcheck/issues/1393
Provide '-q' and '--quiet' flags that suppress all normal output, but keep the
return status, similar to 'grep -q'.
2019-01-21 18:25:41 -08:00
Vidar Holen
d4d219affd
Don't warn that `cd ../..` and similar can fail in SC2164
2019-01-21 16:55:01 -08:00
Vidar Holen
489c3a4ddf
Fix SC2164 always saying 'cd' even when using 'pushd'
2019-01-21 16:55:01 -08:00
Cristian Adrián Ontivero
63a259e5be
Check type flags under dash and POSIX sh ( fixes #1471 )
...
There are no flags for the type builtin defined under POSIX sh, nor does
dash define any. Bash, however, allows [-aftpP]. We check this now under
POSIX and dash.
2019-01-21 19:49:14 +01:00
Gandalf-
59c47f2266
Issue 837 flag to include only certain warnings
...
Issue https://github.com/koalaman/shellcheck/issues/837
Add an --include option, which creates a whitelist of warnings to report
on, the opposite of --exclude.
2019-01-20 16:42:27 -08:00
Vidar Holen
a621eba6d3
Merge pull request #1456 from contivero/issue-667
...
Silence SC2103 when using 'set -e' (fixes #667 )
2019-01-20 14:54:29 -08:00
Vidar Holen
978bfdd5da
Merge pull request #1462 from contivero/trap-flags
...
Check trap flags under dash & POSIX sh (fixes #1461 )
2019-01-20 14:48:01 -08:00
Vidar Holen
a03d94c0b2
Merge pull request #1468 from Gandalf-/issue_824_grep_fixed_strings
...
Issue 824 grep fixed strings and SC2063
2019-01-20 14:06:40 -08:00
Vidar Holen
e1fe9be7af
Fix minor details in new Bats support
2019-01-20 14:02:42 -08:00
Vidar Holen
c97cb8cf54
Merge branch 'bats-support' of https://github.com/damienrg/shellcheck
2019-01-20 13:35:12 -08:00
Vidar Holen
a504ca6b57
Add some unit tests for extension detection
2019-01-20 13:24:31 -08:00
Vidar Holen
437f73c001
Merge branch 'iss1369-shell-from-file-extension' of https://github.com/jabberabbe/shellcheck
2019-01-20 12:50:06 -08:00
Vidar Holen
f187382a0c
Add bats support
...
This is motivated by the fact that the popularity of bats is increasing
since the creation of bats-core/bats-core.
The code is a cherry-pick of koalaman/shellcheck/bats branch.
Fix koalaman/shellcheck#417 .
2019-01-20 14:59:37 +01:00
Gandalf-
661be056f1
Issue 824 grep fixed strings and SC2063
...
Issue https://github.com/koalaman/shellcheck/issues/824
Fix up to original change to include '--fixed-strings' in the grep +
regex special cases.
2019-01-19 08:49:26 -08:00
Tito Sacchi
9f45dc4c8b
Not determine the shell from `.sh` extension
...
See discussion on issue #1369 for details.
2019-01-18 09:21:07 +01:00
Cristian Adrián Ontivero
8e31e86cc4
Check trap flags under dash & POSIX sh ( fixes #1461 )
2019-01-16 08:44:41 +01:00
Vidar Holen
c6c615217b
Allow specifying that flags should not be checked for support.
...
This was motivated by the fact that `-a` was missing from Dash's
long list.
2019-01-15 19:50:23 -08:00
Cristian Adrián Ontivero
3107a1bae0
Check umask flags under dash & POSIX sh ( fixes #1459 )
2019-01-15 08:24:23 +01:00
Tito Sacchi
1e6a30905a
Make ShellCheck not emit warnings about the shebang if the shell
...
type is determined from the extension
2019-01-14 14:32:25 +01:00
Tito Sacchi
a4b9cec9f0
Fix #1369 (Use file extension to detect shell)
...
The precedence order that is used to determine the shell
is the following:
1. ShellCheck directive
2. Shebang
3. File extension
A new field `asFallbackShell` has been
added to the record type `AnalysisSpec`.
2019-01-14 14:32:25 +01:00
Cristian Adrián Ontivero
c3a56659f4
Check cd flags under dash & POSIX sh ( fixes #1457 )
2019-01-14 08:18:17 +01:00
Vidar Holen
e0a4241baa
Warn if a shebang's interpreter ends in / ( fixes #373 )
2019-01-13 17:32:25 -08:00
Vidar Holen
1835ebd3a0
SC2245: Warn that Ksh [ -f * ] only applies to first ( Fixes #1452 )
2019-01-13 16:41:08 -08:00
Cristian Adrián Ontivero
b34f4c1f4b
Silence SC2103 when using 'set -e' ( fixes #667 )
2019-01-13 16:20:41 +01:00
Cristian Adrián Ontivero
3760e7945f
Check readonly flags in dash/POSIX sh ( fixes #1448 )
2019-01-10 11:05:37 +01:00
Vidar Holen
fcdd6055df
Add new replacement format to the JSON
2019-01-09 18:35:36 -08:00
Vidar Holen
fd2beaadfa
Make Fixer responsible for realigning tab stops
2019-01-09 18:08:59 -08:00
Vidar Holen
df7f00eaed
Remove duplicate `pathTo` and unused `replaceMultiLines`
2019-01-09 17:51:43 -08:00
Vidar Holen
e45b679d58
Merge pull request #1445 from Gandalf-/issue_1318_single_comma_array
...
Issue 1318 single comma array delimiter
2019-01-09 17:42:35 -08:00
Gandalf-
263401cfcb
Issue 1318 single comma array delimiter
...
Issue https://github.com/koalaman/shellcheck/issues/1318
The case in which a single comma, with no spaces, used in an array
assignment is now caught for SC2054.
2019-01-08 19:56:34 -08:00
Vidar Holen
0e21f91c07
Merge pull request #1433 from contivero/fix-export-p
...
Fix 'export -p' being undefined under POSIX sh
2019-01-08 19:33:03 -08:00
Vidar Holen
4ecdc10599
Merge branch 'shellcheck_sed_herestring_130' of https://github.com/Gandalf-/shellcheck
2019-01-08 19:19:44 -08:00
Vidar Holen
baa4d2e555
Let checkGrepRe only parse flags once
2019-01-08 19:06:00 -08:00
Vidar Holen
26c55750cf
Merge branch 'issue_1404_grep_globs' of https://github.com/Gandalf-/shellcheck
2019-01-08 18:53:51 -08:00
Vidar Holen
9c42d43e90
Merge branch 'sc2093-exec-in-loops' of https://github.com/jabberabbe/shellcheck
2019-01-08 18:31:59 -08:00
Vidar Holen
434b904746
Process replacements according to AST depth ( fixes #1431 )
2019-01-08 18:25:37 -08:00
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