Joseph C. Sible
ffbbfcfe25
Use mapM_ and sequence_ instead of reimplementing them
2020-02-09 23:17:52 -05:00
Joseph C. Sible
cc424bac11
Use find instead of take 1 and filter
2020-02-09 23:17:52 -05:00
Joseph C. Sible
cb01cbf7eb
Use mapM instead of implementing a slower version of it
2020-02-09 23:17:52 -05:00
Joseph C. Sible
1e32139f66
Replace mapMaybe and concatMap with list comprehensions
2020-02-09 23:17:52 -05:00
Joseph C. Sible
4d92a2e15c
Add getLiteralStringDef and simplify with it
2020-02-09 21:36:38 -05:00
Joseph C. Sible
f8648e5465
Switch getLiteralStringExt to Identity where it can never be Nothing
2020-02-09 21:26:42 -05:00
Joseph C. Sible
4fd8de058b
Remove more unnecessary uses of fromJust
2020-02-08 23:48:36 -05:00
Joseph C. Sible
aaffe38198
Use the Identity monad to avoid unnecessary uses of fromJust
2020-02-08 23:20:54 -05:00
Joseph C. Sible
ef51ed3950
Simplify literalEquals
2020-02-08 14:09:17 -05:00
Vidar Holen
9d604ae732
Merge pull request #1822 from yetamrra/arrayindex
...
SC2191: Tighten index checks
2020-02-08 10:48:07 -08:00
Vidar Holen
1ca0b72329
Merge pull request #1816 from josephcsible/cleanups
...
Various cleanups and refactorings
2020-02-08 10:38:27 -08:00
Benjamin Gordon
474b23d6e7
SC2191: Tighten index checks
...
When adding a value containing an equals sign to an indexed array, the
left side is treated as an index if it looks like [N]=val and N is
numeric. SC2191 currently warns about anything that looks like key=val
even though non-numeric values of key will never be treated as an index.
This causes spurious warnings for the common pattern of building up
program arguments in an array, such as:
args=(
--dry-run
--in="${my_var}"
--out=/some/path
-f
)
/bin/program "${args[@]}"
Since only numeric expressions can be a valid index for an indexed
array, only emit SC2191 if the left side of a literal string containing
an equals looks numeric. Other more complicated constructs should still
warn because shellcheck doesn't know if they may evaluate to a numeric
result. Associative arrays still warn because a non-numeric left side
is a valid subscript.
2020-02-05 16:50:32 -07:00
Joseph C. Sible
e820a5642b
Adjust a pattern to get rid of a fromJust
2020-02-02 00:40:22 -05:00
Joseph C. Sible
392b57b8e8
Use maybe instead of isJust and fromJust
2020-02-02 00:27:05 -05:00
Joseph C. Sible
6595e14d25
Adjust a pattern to avoid tail
2020-02-02 00:24:24 -05:00
Joseph C. Sible
115ef29079
Use pattern matching instead of head
2020-02-02 00:16:59 -05:00
Joseph C. Sible
76b798394f
Use case matching instead of null
...
Using null followed by a head, tail, or a partial pattern match is
an anti-pattern. Use case matching instead.
2020-02-01 23:07:16 -05:00
Joseph C. Sible
8a005526cc
Use drop instead of splitAt since we only use the second half
2020-02-01 23:04:04 -05:00
Joseph C. Sible
c29b6afa56
Use null instead of comparing with empty lists
2020-02-01 23:04:04 -05:00
Joseph C. Sible
e6e89d68fd
Use list comprehensions instead of clunky combinations of map and filter
2020-02-01 23:04:04 -05:00
Joseph C. Sible
f25b8bd03a
Use gets instead of fmapping the result of get
2020-02-01 22:50:20 -05:00
Joseph C. Sible
d7278b95f2
Remove unnecessary "map snd"
2020-02-01 22:50:19 -05:00
Joseph C. Sible
5487b3f229
Use sortOn instead of sortBy and comparing
2020-02-01 22:50:18 -05:00
Joseph C. Sible
28978a8b65
Use maybe instead of fromMaybe and fmap
2020-02-01 22:50:17 -05:00
Joseph C. Sible
f5c6771016
Use find instead of listToMaybe and filter
2020-02-01 22:50:16 -05:00
Joseph C. Sible
0f48bb78a5
Remove incorrect otherwise
...
You're supposed to use otherwise where you need a Boolean, not a pattern
match. This is misleadingly shadowing the real otherwise. Use _ instead.
2020-02-01 22:50:14 -05:00
Joseph C. Sible
93be86f988
Use "drop 1" instead of clumsily rewriting it
2020-02-01 22:50:14 -05:00
Joseph C. Sible
3449e6be21
Get rid of our getOpt, as it already exists as lookup
2020-02-01 22:50:13 -05:00
Joseph C. Sible
2e52c2b56a
Use notElem instead of not on the result of elem
2020-02-01 22:50:11 -05:00
Vidar Holen
1696296c0a
Make SC2141 trigger more broadly
2020-02-01 16:51:40 -08:00
Marcin Szydelski
93486ed6ac
SC2016: disable for mumps -run %XCMD and LOOP%XCMD
2020-01-21 12:43:27 +01:00
Vidar Holen
cbcca528ae
Merge branch 'iss1724-builtin-support' of https://github.com/jabberabbe/shellcheck into jabberabbe-iss1724-builtin-support
2019-12-21 18:13:07 -08:00
Vidar Holen
83187dafd7
Added a unit test for parsing shell keyword case branches
2019-12-21 17:59:09 -08:00
Gandalf-
3f296a08c1
Issue 1731 Literals in case patterns
...
https://github.com/koalaman/shellcheck/issues/1731
Any literal except esac is valid pattern in a case statement
2019-12-18 20:23:48 -08:00
Vidar Holen
0f15fa49ba
Make SC2230 optional
2019-12-07 16:11:49 -08:00
Vidar Holen
9f578f41a1
Explicitly add 'mappend' for old GHC versions
2019-11-16 11:16:15 -08:00
Vidar Holen
989ac32625
Merge pull request #1734 from gabrielelana/braced-regular-for
...
Parse regular `for` with body in curly braces
2019-11-15 20:59:51 -08:00
Vidar Holen
2bbfd0570d
Merge pull request #1735 from gabrielelana/quoted-heredoc
...
Support for heredoc quoted token like `'"FOO"`
2019-11-15 20:27:10 -08:00
Vidar Holen
f44624a9c0
Hide <> from Writer to not conflict with Semigroup
2019-11-14 20:02:25 -08:00
Vidar Holen
c75bbcbd60
Include missing Semigroup import
2019-11-13 22:10:27 -08:00
Vidar Holen
4a63a3a8bd
For SC2256, make sure the complete string is a variable name
2019-11-13 21:48:01 -08:00
Benjamin Gordon
2341a4c683
SC2256: Check for translated strings matching known variables
...
SC2247 already warns about translated strings that look like $"(foo)" or
$"{foo}". Since typical use of translated strings is to translate whole
messages, a string like $"foo" is likely to be a similar mistake if foo
is the name of an existing variable. Conversely, a string like
$"foo bar" is potentially meant to be a message id even if foo is a
known variable.
Add a warning for the $"foo" case, but make it separate from the
existing warning so that projects that reuse variable names as their
message ids can separately disable the new warning.
2019-11-13 16:41:16 -07:00
Vidar Holen
93eca1cb8e
Only trigger SC1014 when command is a complete word ( fixes #1737 )
2019-11-03 13:26:23 -08:00
Vidar Holen
e701cf6fad
Warn about [ x -ot y ] in POSIX mode
2019-11-03 13:25:35 -08:00
Vidar Holen
5962b01816
Correctly handle empty variables for SC2086 ( fixes #1722 )
2019-11-03 12:46:25 -08:00
Tito Sacchi
84ca7711c4
Make command-specific checks act on `builtin ...`
...
Now if shellchecks encounters a command like `builtin cmd ...`
it applies the same check that would be applied to `cmd ...`.
2019-11-01 14:28:00 +01:00
Tito Sacchi
0e0de94045
Fix issue #1724
...
(bash: missing support for 'builtin' keyword)
Now shellcheck looks for the arguments to 'builtin' to determine
read/written variables. A change in the parser makes sure that
assignments are parsed correctly in commands that start with 'builtin'.
2019-11-01 13:49:17 +01:00
gabriele.lana
699aac589a
Support for heredoc quoted token like `'"FOO"`
...
Fixes #1650
2019-10-26 17:36:32 +02:00
gabriele.lana
30c75340e6
Parse regular `for` with body in curly braces
...
Fixes #1694
2019-10-26 15:41:46 +02:00
Vidar Holen
4dfd7eb1cf
Use single quotes for the format string example in SC2059
2019-10-24 10:33:17 -07:00
Vidar Holen
60f75e5b8a
Warn about unexpected characters after ]/]] ( fixes #1680 )
2019-10-13 20:26:40 -07:00
Vidar Holen
f042b0ebd1
Merge branch 'iboss-ptk-read-t-0'
2019-10-12 20:55:32 -07:00
Vidar Holen
764fdcb260
Move failing test to correct check
2019-10-12 20:50:55 -07:00
Vidar Holen
7473d4a743
Make `read -t 0` test more forgiving towards other flags
2019-10-12 20:45:36 -07:00
Vidar Holen
91abd979f2
Merge branch 'read-t-0' of https://github.com/iboss-ptk/shellcheck into iboss-ptk-read-t-0
2019-10-12 20:23:13 -07:00
Vidar Holen
afea62de4e
Suggest using `$((..))` in `[ 2*3 -eq 6 ]` ( fixes #1641 )
2019-10-12 19:55:20 -07:00
Supanat Pothivarakorn
7fb399528c
Allow `read -t 0` to not require -r flag
...
since it has specific purpose for checking only
2019-10-02 22:34:43 +07:00
Vidar Holen
de9ab4e6ef
Fix glob range duplicate warning in [!!] ( fixes #1706 )
2019-09-28 14:03:11 -07:00
Vidar Holen
e01c470598
Suggest quoting case patterns, as for SC2053 ( fixes #1682 )
2019-09-08 20:08:43 -07:00
Vidar Holen
c175971bf0
Make `-f diff` stop saying it found more issues when it didn't.
2019-07-28 20:50:50 -07:00
Vidar Holen
38bb156a1c
Warn about $_ in POSIX sh ( fixes #1647 )
2019-07-21 21:22:16 -07:00
Vidar Holen
023ae5dfda
Don't warn about printf '%()T' without corresponding argument
2019-07-20 15:10:41 -07:00
Vidar Holen
788cf17076
Fix bad advice for SC2251 ( fixes #1588 )
2019-07-04 19:10:14 -07:00
Vidar Holen
78b8e76066
Also mention globbing in SC2206 ( fixes #1626 )
2019-07-04 17:43:18 -07:00
Vidar Holen
914974bd4f
Don't consider `.*` a glob-like regex ( fixes #1214 )
2019-07-04 17:41:23 -07:00
Vidar Holen
c0d3a98fcd
Add warning for chmod -r ( fixes #1321 )
2019-07-04 16:54:42 -07:00
Vidar Holen
380221a02c
Recognize `read -ra foo` as arrays ( fixes #1636 )
2019-07-03 20:40:41 -07:00
Vidar Holen
ba2c20a08a
Improve message for SC1067
2019-07-03 20:02:14 -07:00
Vidar Holen
be1f1c1ab7
Don't count 'readonly x' as a reference to x ( fixes #1573 )
2019-07-02 20:58:08 -07:00
Vidar Holen
bee4303c32
Add an empty Custom.hs to simplify site-specific patching
2019-07-02 20:07:05 -07:00
Vidar Holen
ef764b60ca
Fix botched variable usage
2019-07-01 23:47:13 -07:00
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