Vidar Holen
a62d9f10c2
Warn when using &/| between test statements
2020-08-23 15:43:33 -07:00
Vidar Holen
50067ddf94
Consider variables in -z/-n tests to be checked
2020-08-08 12:32:20 -07:00
Vidar Holen
3fa5b7d3bd
Merge branch 'supportMinusNZ' of https://github.com/donnerpeter/shellcheck into donnerpeter-supportMinusNZ
2020-08-08 11:22:00 -07:00
Vidar Holen
e779aedac3
Modernize getting mapfile array name
2020-08-07 16:41:18 -07:00
Vidar Holen
3ef1175566
Merge branch 'issue_1759_mapfile_proc_substition' of https://github.com/Gandalf-/shellcheck into Gandalf--issue_1759_mapfile_proc_substition
2020-08-07 15:57:59 -07:00
Vidar Holen
3e50a2fce8
Suppress SC2216 for du --files0-from or --exclude-from ( fixes #1286 )
2020-08-07 14:59:34 -07:00
Vidar Holen
1ac2c31728
Warn when shell functions blatantly recurse ( fixes #1994 )
2020-07-27 21:50:33 -07:00
Vidar Holen
cc81bdee31
Improve SC1033/SC1034 message
2020-07-27 18:44:07 -07:00
Vidar Holen
34885142e7
Handle tilde expansion in pattern matching ( fixes #1769 )
2020-07-27 18:34:42 -07:00
Vidar Holen
14e6806092
Handle literal linefeeds in printf format strings ( fixes #2007 )
2020-07-25 17:36:22 -07:00
Vidar Holen
5d753212fb
Improve handling of command prefixes like exec/command ( fixes #2008 )
2020-07-25 13:45:05 -07:00
Vidar Holen
5b86777f9d
Warn about non-POSIX case modification expansions ( fixes #1977 )
2020-07-22 17:32:00 -07:00
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
5cf2c00ff7
Warn about defining and using an alias in a single command ( fixes #1807 )
2020-05-25 23:24:33 -07:00
Vidar Holen
a08ad3bee9
Count $# as an argument reference in SC2120
2020-05-25 23:24:33 -07:00
Vidar Holen
c2a15ce8e9
Allow disabling SC1072/SC1073 with annotations ( fixes #1931 )
2020-05-03 21:57:16 -07:00
Vidar Holen
d6adbfde78
Improve SC2259/60/61 messages
2020-05-03 21:46:16 -07:00
Vidar Holen
2030b83607
Warn about duplicate uses of stdin/out/err
2020-05-03 11:54:25 -07:00
Vidar Holen
8aa40c43ed
Merge pull request #1926 from scop/spelling
...
Spelling fixes
2020-05-02 18:39:44 -07:00
Ville Skyttä
60e80e4ce1
Spelling fixes
2020-04-25 08:29:38 +03:00
Joseph C. Sible
e0daa936d2
Revert "Use fromRight instead of reimplementing it"
...
We still support GHC 8.0, which didn't have fromRight.
This reverts commit 64c31d9142
.
2020-04-24 22:14:08 -04:00
Vidar Holen
75863a887e
Merge pull request #1918 from josephcsible/getsuspiciousregexwildcard
...
Clean up and optimize getSuspiciousRegexWildcard
2020-04-12 15:32:00 -07:00
Vidar Holen
413f0048b8
Merge pull request #1917 from josephcsible/thenskip
...
Simplify thenSkip, and use in another location
2020-04-12 15:26:36 -07:00
Vidar Holen
e7b5fb9742
Merge pull request #1907 from josephcsible/formatters
...
Clean up formatters
2020-04-12 15:23:17 -07:00
Vidar Holen
30523555af
Merge pull request #1906 from josephcsible/shellsupport
...
Simplify ShellSupport
2020-04-12 15:22:52 -07:00
Vidar Holen
58d3e50f43
Merge pull request #1905 from josephcsible/skiprepeating
...
Make skipRepeating lazier and faster
2020-04-12 15:21:39 -07:00
Vidar Holen
73cc11fd0a
Merge pull request #1901 from josephcsible/bracedstring
...
Mostly get rid of bracedString
2020-04-12 15:14:50 -07:00
Joseph C. Sible
163c710ba7
Clean up and optimize getSuspiciousRegexWildcard
2020-04-12 16:15:45 -04:00
Vidar Holen
ab1610b004
Merge pull request #1903 from josephcsible/fixer
...
Only perform the comparisons once
2020-04-11 17:23:51 -07:00
Vidar Holen
148468be70
Merge pull request #1904 from josephcsible/commands
...
Simplify Commands
2020-04-11 17:23:39 -07:00
Vidar Holen
5eac721fcf
Merge pull request #1902 from josephcsible/astlib
...
Clean up ASTLib
2020-04-11 17:23:08 -07:00
Joseph C. Sible
b58bb4ba9d
Move bracedString to be local to its last use site
2020-04-11 19:24:11 -04:00
Joseph C. Sible
999b7e2596
Get rid of bracedString everywhere it's easy to
2020-04-11 19:24:11 -04:00
Joseph C. Sible
a9d564a8bc
Combine bracedString into getSingleUnmodifiedVariable
...
Everywhere we used getSingleUnmodifiedVariable, we just called bracedString on
the result. Move this into that function instead, and rename it accordingly.
2020-04-11 19:23:13 -04:00
Joseph C. Sible
8a7497c4f0
Simplify checkVariableBraces
2020-04-11 19:23:13 -04:00
Vidar Holen
1eac0d7340
Merge pull request #1900 from josephcsible/analyzerlib
...
Clean up AnalyzerLib
2020-04-11 16:21:20 -07:00
Vidar Holen
f8c1ffb0dc
Merge pull request #1898 from josephcsible/nameexpansion
...
Simplify nameExpansion
2020-04-11 16:18:54 -07:00
Joseph C. Sible
3e17a20965
Simplify thenSkip, and use in another location
2020-04-11 17:29:28 -04:00
Joseph C. Sible
1c6202dba4
Avoid some awkward parentheses with forM_
2020-04-05 22:25:19 -04:00
Joseph C. Sible
64c31d9142
Use fromRight instead of reimplementing it
2020-04-05 22:23:22 -04:00
Joseph C. Sible
8a6679fd8a
Remove unnecessary fromMaybe and when from bashism
2020-04-05 22:03:50 -04:00
Joseph C. Sible
facf0d1e27
Write getLiteralArgs with foldr and without fromMaybe or monads
2020-04-05 21:59:27 -04:00
Joseph C. Sible
cd38afce26
Make it slightly lazier still (and more clear)
2020-04-05 21:46:08 -04:00
Joseph C. Sible
5084ba8d7e
Make skipRepeating lazier and faster
2020-04-05 21:39:14 -04:00
Joseph C. Sible
ed331b816b
Simplify warnRedundant
2020-04-05 20:32:39 -04:00
Joseph C. Sible
cfa2a663af
Simplify checkSetAssignment
2020-04-05 20:30:37 -04:00
Joseph C. Sible
df4928f4e3
Use MultiWayIf instead of case-matching on ()
2020-04-05 20:30:37 -04:00
Joseph C. Sible
9747b1d5c3
Simplify checkArg
2020-04-05 20:10:56 -04:00
Joseph C. Sible
fa841cb270
Prefer pattern matching in undirected
2020-04-05 20:08:02 -04:00
Joseph C. Sible
e8501151dd
Use a guard instead of unless
2020-04-05 20:04:54 -04:00
Joseph C. Sible
9027a9239f
Use pattern matching instead of snd
2020-04-05 20:03:17 -04:00
Joseph C. Sible
773e98868d
Use foldr in checkFindNameGlob
2020-04-05 19:53:40 -04:00
Joseph C. Sible
d45ab327b0
Only perform the comparisons once
2020-04-05 19:45:28 -04:00
Joseph C. Sible
0f9b0f18a4
Remove unnecessary cases from wordToPseudoGlob
2020-04-05 19:30:21 -04:00
Joseph C. Sible
322842b57e
Remove unnecessary monadicity from wordToPseudoGlob
2020-04-05 19:29:40 -04:00
Joseph C. Sible
b6cff5ea0e
Simplify getAssociativeArrays
2020-04-05 19:06:30 -04:00
Joseph C. Sible
8f105074fe
Simplify getCommandNameAndToken
2020-04-05 19:01:56 -04:00
Joseph C. Sible
d22e0aa4a7
Simplify process
...
Note to self: This is a lot like foldr or traverse, and would be trivial to
implement as such if it didn't need to peek ahead when takesArg is true. I
wonder if there's a clean way to implement it in terms of one of them anyway.
2020-04-05 16:45:45 -04:00
Joseph C. Sible
fb55072302
Implement supportsArrays with pattern-matching
2020-04-05 16:30:59 -04:00
Joseph C. Sible
0cc5ed4563
Don't bother with asks if you're just immediately binding the result anyway
2020-04-05 16:25:43 -04:00
Joseph C. Sible
ca41440a67
Simplify getSpecial
2020-04-05 16:21:07 -04:00
Joseph C. Sible
1cf0aa25e9
Simplify dropPrefix
2020-04-05 16:19:18 -04:00
Joseph C. Sible
4604066c37
Use head instead of (!! 0)
2020-04-05 16:16:12 -04:00
Joseph C. Sible
2ebf522a52
Simplify isArrayFlag
2020-04-05 16:13:55 -04:00
Joseph C. Sible
e4eb2d157f
Remove an unnecessary operator section
2020-04-05 16:13:55 -04:00
Joseph C. Sible
f109f9ab92
Remove unnecessary as-patterns
2020-04-05 16:13:55 -04:00
Joseph C. Sible
67e091674e
Remove unnecessary maybeToList
...
The functions we use here are polymorphic enough to work in the [] monad,
so there's no point to use them in the Maybe monad and then convert.
2020-04-05 16:13:54 -04:00
Joseph C. Sible
f833ee3d5a
Use a list comprehension instead of a concatMap with extra lists
2020-04-05 15:54:12 -04:00
Joseph C. Sible
f55d8c45e5
Simplify causesSubshell
2020-04-05 15:54:12 -04:00
Joseph C. Sible
14ee462ccd
Use execState instead of reimplementing it
2020-04-05 15:50:42 -04:00
Joseph C. Sible
b3c04ce3d0
Implement findFirst in terms of foldr
2020-04-05 15:50:42 -04:00
Joseph C. Sible
b0dbc79f69
Remove unnecessary Maybe from isQuoteFreeElement
2020-04-05 15:07:36 -04:00
Joseph C. Sible
2a8170ba05
Use force instead of reimplementing it
2020-04-05 15:01:57 -04:00
Vidar Holen
01f4423465
Disable SC2257 about > $((i=42)) for Dash
2020-04-05 11:38:22 -07:00
Joseph C. Sible
d2fa88dd91
Simplify nameExpansion
2020-04-05 14:04:23 -04:00
Vidar Holen
bd717c9d1b
Don't warn about [ 0 -ne $FOO ] || [ 0 -ne $BAR ] ( fixes #1891 )
2020-04-01 22:09:00 -07:00
Vidar Holen
da0931740f
Merge pull request #1876 from fork-graveyard/master
...
recognize `: ${parameter=word}` as assignment
2020-04-01 18:52:53 -07:00
Vidar Holen
c60323fb25
Merge pull request #1873 from josephcsible/checkwhilereadpitfalls
...
Simplify checkWhileReadPitfalls
2020-03-31 19:10:53 -07:00
Vidar Holen
db11e2f663
Merge pull request #1872 from josephcsible/checkforinquoted
...
Simplify checkForInQuoted
2020-03-31 19:10:25 -07:00
Joseph C. Sible
8cf037fe5e
Fix #1892 : Use pattern synonyms to clean up AST
2020-03-28 18:38:07 -04:00
Vidar Holen
7963eeab9d
Include shebang in AST traversal ( fixes #1858 )
2020-03-16 21:36:41 -07:00
girst
7a5e261d03
recognize `: ${parameter=word}` as assignment
2020-03-16 23:04:54 +01:00
Joseph C. Sible
9d5363377e
Simplify checkWhileReadPitfalls
...
* Clean up usage of not
* Use a case match instead of sequence_ and a do block
2020-03-16 00:14:22 -04:00
Joseph C. Sible
86d470c74f
Simplify checkForInQuoted
...
* Avoid some unnecessary fmaps
* Reuse an identical pattern-match for two guards
* Apply De Morgan's law
* Use forM_ to avoid an unnecessary where
2020-03-15 16:05:55 -04:00
Vidar Holen
a57f6d2886
Improve detection of for loops with single values
2020-03-15 11:30:56 -07:00
Vidar Holen
d28c8f883f
Merge pull request #1865 from josephcsible/patch-1
...
Use headOrDefault instead of fromMaybe and listToMaybe
2020-03-14 21:21:13 -07:00
Vidar Holen
c43b19f897
Make SC2095 (ssh in while read loops) more robust and suggest fixes
2020-03-14 21:15:47 -07:00
Joseph C. Sible
45a67e7c64
Use headOrDefault instead of fromMaybe and listToMaybe
2020-03-10 13:27:52 -04:00
Austin English
741d499b3d
src/ShellCheck/Analytics.hs: suggest using a shell directive for SC2148
2020-03-07 19:23:35 -06:00
Vidar Holen
7b998239af
SC2257: Warn when changing arithmetic variables in redirections
2020-02-17 18:16:57 -08:00
Vidar Holen
4c9210af79
Inspect 'alias' commands for referenced variables ( Fixes #1832 )
2020-02-17 14:20:21 -08:00
Vidar Holen
a75219e525
Remove unused instance Ord Replacement ( fixes #1829 )
2020-02-17 12:44:38 -08: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
Joseph C. Sible
eecd003e2d
Optimize patterns in checkFindNameGlob
...
1. Instead of pattern-matching the same list multiple times, do it only
once and then pass the pieces separately.
2. Don't reconstruct an object equivalent to one we just deconstructed.
2020-02-11 01:04:49 -05:00
Joseph C. Sible
440d0038aa
Remove a partial pattern match equivalent to fromJust from checkFindNameGlob
2020-02-11 01:03:10 -05:00
Vidar Holen
c2d67c15f8
Merge pull request #1802 from szydell/master
...
SC2016, repair false error for M language parser
2020-02-10 18:25:28 -08:00
Vidar Holen
6043deb8f2
Merge pull request #1824 from josephcsible/patch-1
...
Simplify literalEquals
2020-02-10 18:20:05 -08:00
Vidar Holen
d0beac6d0b
Merge pull request #1826 from josephcsible/nofromjust
...
Use the Identity monad to avoid unnecessary uses of fromJust
2020-02-10 18:05:36 -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
85c49a8af9
Simplify mockedSystemInterface
2020-02-09 23:50:48 -05:00
Joseph C. Sible
42abcb7ae2
Simplify shellFromFilename
2020-02-09 23:18:09 -05:00
Joseph C. Sible
d5c5128115
Use isJust instead of reimplementing it
2020-02-09 23:18:09 -05:00
Joseph C. Sible
6d06103cab
Remove unnecessary uses of head
2020-02-09 23:18:09 -05:00
Joseph C. Sible
c95914f9b3
Simplify determineShell
2020-02-09 23:18:09 -05:00
Joseph C. Sible
ea24e25efd
Use Map.member instead of isJust and Map.lookup
2020-02-09 23:18:09 -05:00
Joseph C. Sible
8f0448133c
Use isNothing instead of reimplementing it
2020-02-09 23:18:08 -05:00
Joseph C. Sible
7fc9496320
Use forM_ instead of reimplementing it
2020-02-09 23:18:08 -05:00
Joseph C. Sible
962fad038c
Avoid a zip that breaks fusion
2020-02-09 23:18:08 -05:00
Joseph C. Sible
a223a7a5a5
Remove unnecessary fromMaybes
2020-02-09 23:18:08 -05:00
Joseph C. Sible
8e9290badb
Do toLower earlier
2020-02-09 23:17:53 -05:00
Joseph C. Sible
292b0840d9
Simplify a double negative
2020-02-09 23:17:53 -05:00
Joseph C. Sible
43c24cf79c
Use Map.! instead of reimplementing it
2020-02-09 23:17:53 -05:00
Joseph C. Sible
21ad4196db
Simplify findFunction
2020-02-09 23:17:53 -05:00
Joseph C. Sible
172aa7c4fc
Avoid unnecessary use of when and unless
2020-02-09 23:17:53 -05:00
Joseph C. Sible
c290eace54
Inline an uncurry
2020-02-09 23:17:53 -05:00
Joseph C. Sible
a6efd02807
Simplify <> for SpaceStatus
2020-02-09 23:17:53 -05:00
Joseph C. Sible
057cc714b3
Simplify matchToken
2020-02-09 23:17:52 -05:00
Joseph C. Sible
0e00249eae
Use void instead of do and return ()
2020-02-09 23:17:52 -05:00
Joseph C. Sible
0ca50159ec
Use head instead of reimplementing it
...
Normally I wouldn't use head, but this code is partial anyway.
2020-02-09 23:17:52 -05:00
Joseph C. Sible
7e6a556ef1
Get rid of potentially
...
This already exists as sequence_.
2020-02-09 23:17:52 -05:00
Joseph C. Sible
4bfe6496d9
Simplify check and checkTranslatedStringVariable
...
Avoid the "potentially" and "Maybe" business, and just use regular guards.
2020-02-09 23:17:52 -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
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
Peter Gromov
a82e606e8d
Don't trigger SC2154 (unassigned var) in `-n`/`-z` expressions #1583
2020-01-31 14:49:25 +01:00
Marcin Szydelski
93486ed6ac
SC2016: disable for mumps -run %XCMD and LOOP%XCMD
2020-01-21 12:43:27 +01:00
Gandalf-
fdd02c94c0
Issue 1759 mapfile and process substition
...
https://github.com/koalaman/shellcheck/issues/1759
When a simple process substition is used, this tripped up
the getMapfileArray function by making the last argument
not a variable
2019-12-22 23:19:03 -08: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
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