Vidar Holen
210cdcd01a
Treat $x/ or $(x)/ as ./ when finding sourced files ( fixes #1998 )
2020-06-28 17:24:07 -07:00
Vidar Holen
b52f58473d
Merge pull request #1999 from aureliojargas/patch-1
...
SC1102: Fix typo in error message: substition
2020-06-28 16:04:56 -07:00
Vidar Holen
739eaadbf5
Warn about extra spaces between ((s in for((;;))
2020-06-28 16:01:15 -07:00
Aurelio Jargas
a61d8a232c
SC1102: Fix typo in error message: substition
2020-06-26 02:13:33 +02:00
Vidar Holen
12d9c1b76d
Clarify that SC1090 refers to ShellCheck, not sh
2020-06-24 11:50:27 -07:00
Vidar Holen
c2a15ce8e9
Allow disabling SC1072/SC1073 with annotations ( fixes #1931 )
2020-05-03 21:57:16 -07:00
Ville Skyttä
60e80e4ce1
Spelling fixes
2020-04-25 08:29:38 +03:00
Joseph C. Sible
3e17a20965
Simplify thenSkip, and use in another location
2020-04-11 17:29:28 -04:00
Vidar Holen
99d6df8a08
Bump SC1102/SC1105 about ambiguous `$((` to Error ( fixes #1836 )
2020-02-17 12:27:24 -08:00
Vidar Holen
106f321cf0
Parse keywords with case sensitivity ( fixes #1809 )
2020-02-17 11:13:29 -08:00
Vidar Holen
b88b253cad
Merge pull request #1827 from josephcsible/nofromjust2
...
Remove more unnecessary uses of fromJust
2020-02-10 18:01:38 -08:00
Joseph C. Sible
6d06103cab
Remove unnecessary uses of head
2020-02-09 23:18:09 -05:00
Joseph C. Sible
ffbbfcfe25
Use mapM_ and sequence_ instead of reimplementing them
2020-02-09 23:17:52 -05:00
Joseph C. Sible
4fd8de058b
Remove more unnecessary uses of fromJust
2020-02-08 23:48:36 -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
c29b6afa56
Use null instead of comparing with empty lists
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
f5c6771016
Use find instead of listToMaybe and filter
2020-02-01 22:50:16 -05: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
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
93eca1cb8e
Only trigger SC1014 when command is a complete word ( fixes #1737 )
2019-11-03 13:26:23 -08: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
60f75e5b8a
Warn about unexpected characters after ]/]] ( fixes #1680 )
2019-10-13 20:26:40 -07:00
Vidar Holen
ba2c20a08a
Improve message for SC1067
2019-07-03 20:02:14 -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
5242e384a1
Fix error spans for shebang warnings ( fixes #1620 )
2019-06-23 13:49:08 -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
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
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
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
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
2ea2293154
Update SC1008 to suggest using directive.
2019-01-27 15:02:15 -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
Vidar Holen
88aef838f1
SC1068 (var = x) now alternatively suggests quoting ( fixes #1412 )
2018-12-16 15:45:52 -08:00
Vidar Holen
1b207b3d43
Preemptively fix possible '-- |' breakage
2018-11-26 20:43:15 -08: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
932e2b3538
Merge branch 'opqaque-interface' of https://github.com/ngzhian/shellcheck into ngzhian-opqaque-interface
2018-08-18 20:32:27 -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
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
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
b01f1128c7
Make SC1012 "printf '\t'" suggestion use single quotes
2018-06-24 11:47:00 -07:00
Vidar Holen
868a7be33e
Improve spans for some warnings
2018-06-17 19:19:18 -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
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
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
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
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
235bf6605f
Merge pull request #1205 from ngzhian/remove-unused
...
Remove unused code
2018-05-12 19:15:42 -07:00
Vidar Holen
cf608dc2f6
Parse FD move operations like 2>&1- correctly. Fixes #1180 .
2018-05-12 18:30:35 -07:00
Ng Zhi An
728922d2b8
Remove unused code
2018-05-06 15:24:34 -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
32af2783f0
Allow stripping unit tests
2018-04-02 21:14:23 -07:00
Oleg Grenrus
cd7c077ecc
Move library into src/
2018-03-08 19:57:40 +02:00