Vidar Holen
1a0e208cc3
Consider find -exec when warning about vars in single quotes.
2014-10-12 14:00:17 -07:00
Vidar Holen
a69e27b774
Warn about swapped !# in the shebang.
2014-10-11 12:35:45 -07:00
Vidar Holen
b05c12223f
Don't trigger SC2004 for (( $$ ))
2014-09-23 10:27:26 -07:00
Vidar Holen
38ead0385b
Fixed quoting warnings for variables in $".."
2014-09-23 10:18:28 -07:00
Vidar Holen
40ce949a56
Only warn once per unused variable name.
2014-09-07 12:55:08 -07:00
Vidar Holen
9f3802138f
Prevent overlap of 2116 and 2005 in foo $(echo $(bar))
2014-09-04 08:41:09 -07:00
Vidar Holen
2f3533fff6
Improve warnings for $ in (()). Also improves array subscripts.
2014-08-16 17:08:57 -07:00
Vidar Holen
f9c346cfd7
Ignore SC2033 when passing quoted function names.
2014-08-16 10:45:46 -07:00
Vidar Holen
8494509150
Warn about missing shebangs.
2014-08-09 17:32:42 -07:00
Vidar Holen
8ba1f2fdf2
Better handling of directories and inaccessible files.
2014-08-08 09:36:17 -07:00
Vidar Holen
dbadca9f61
Check PS1/PROMPT_COMMAND/trap for simple variable references
2014-07-27 09:51:48 -07:00
Vidar Holen
0347ce1b7a
Warn about quoted ~ in PATH
2014-07-26 13:14:28 -07:00
Vidar Holen
7fbe66e1c6
Warn about ineffectual quotes in a="/foo/'bar baz'"; $a
2014-07-26 12:15:54 -07:00
Vidar Holen
b000b05507
Parse empty and comment-only backtick expansions.
2014-07-26 12:07:59 -07:00
Vidar Holen
64cc7c691a
Warn about precedence in find -name -o -name -exec.
2014-06-22 14:16:24 -07:00
Vidar Holen
b9784cbcc0
Parse let arguments as arithmetic expressions.
2014-06-22 13:23:44 -07:00
Vidar Holen
1a3f6aadaf
Support indices in array declarations
2014-06-22 10:35:45 -07:00
Vidar Holen
0fd351404f
Allow escape sequences in here documents.
2014-06-16 14:18:29 -07:00
Vidar Holen
4caa7e7900
Removed accidentally submotted debug code
2014-06-10 00:49:43 -07:00
Vidar Holen
c11c0196d5
Fixed broken parsing of <( in arithmetics
2014-06-10 00:42:07 -07:00
Vidar Holen
b035331d4a
Fixed failing test
2014-06-10 00:33:54 -07:00
Vidar Holen
aac7d76047
Don't warn when using find -print0 | xargs --null
2014-06-07 22:41:37 -07:00
Vidar Holen
fc421adb45
Reworked arithmetics to allow composite terms
2014-06-07 22:09:34 -07:00
Vidar Holen
3a944de606
Warn when concatening strings and arrays.
2014-06-07 13:47:40 -07:00
Vidar Holen
3dd592a02a
Support ;& and ;;& in case statements
2014-06-07 12:23:42 -07:00
Rodrigo Setti
5dac723593
Collection of HLint fixes
...
http://community.haskell.org/~ndm/hlint/
2014-05-31 22:20:49 +00:00
Vidar Holen
726a4e5848
Merge branch 'cabal-version' of https://github.com/rodrigosetti/shellcheck into rodrigosetti-cabal-version
...
Conflicts:
ShellCheck/Analytics.hs
ShellCheck/Data.hs
2014-05-31 09:55:07 -07:00
Rodrigo Setti
0a9ed917e7
Test Suite in Cabal (cabal test)
...
Please run using "cabal test --show-details=streaming", there's a known
issue about this that was fixed in the latest version of cabal:
https://github.com/haskell/cabal/issues/1810
2014-05-31 01:30:23 +00:00
Vidar Holen
b10d31c8b7
Stable version 0.3.3
...
This release is dedicated to Jarkko Oikarinen, creator of IRC,
the fabric of the author's existence for so many years.
2014-05-29 21:01:34 -07:00
Vidar Holen
133c779701
Also check nested ifs for ssh/ffmpeg in read loops
2014-05-29 20:55:38 -07:00
Rodrigo Setti
3fcc6c44d8
Use version from generated cabal Paths module
2014-05-30 00:08:09 +00:00
Vidar Holen
d830a36bc8
Check for globs in test, e.g. [[ -e file* ]]
2014-05-25 12:04:18 -07:00
Vidar Holen
1af23fd131
Fix SC2051 to only warn about 1..$n and not 1,$n
2014-05-25 11:41:24 -07:00
Vidar Holen
d21b3362b2
Don't warn about splitting in select statements
2014-05-17 12:06:04 -07:00
Vidar Holen
6cd454e88b
Suggest grep -q instead of [ "$(.. | grep)" ]
2014-05-17 10:56:36 -07:00
Vidar Holen
0b5f6b9762
Warn about aliases referencing $1/$*/$@
2014-05-17 09:26:53 -07:00
Vidar Holen
3824e9cfc2
Fixed not recognizing --f=* as option in checkGrepRe
2014-05-15 09:14:57 -07:00
Vidar Holen
fdce0116da
Fix parsing {} in regex
2014-05-13 19:20:34 -07:00
Vidar Holen
c4181d45d2
Warn about suspicious IFS, such as IFS="\n"
2014-05-10 15:37:02 -07:00
Vidar Holen
680f838c63
Warn about literal, unquoted {/}
2014-05-10 14:07:53 -07:00
Vidar Holen
e6d81ca7b7
Warn about using numerical test operators with strings
2014-05-10 12:37:02 -07:00
Vidar Holen
fd909eeca0
Fix parsing of &;; in case statements
2014-05-10 11:29:30 -07:00
Vidar Holen
deab146fab
Don't warn about &&+|| when used with return
2014-05-09 18:08:55 -07:00
Vidar Holen
f9aeabc245
Improved error messages for SC2044/SC2045
2014-05-08 19:38:40 -07:00
Vidar Holen
558d8ffc6c
Warn about suspiciously unquoted literal parts like "var="value""
2014-05-07 21:47:27 -07:00
Vidar Holen
e96c4c3ffa
Warn about aliases that expand at define time
2014-05-07 20:14:21 -07:00
Vidar Holen
c566efd442
Warn about UTF-8 BOMs in scripts.
2014-05-03 10:37:12 -07:00
Vidar Holen
47c220d59c
Removed noisy SC1000 about unescaped $s
2014-05-03 10:19:01 -07:00
Vidar Holen
033ce6d941
Allow zsh =(..) process substitution
2014-05-02 20:36:38 -07:00
Vidar Holen
6ad3f557fe
Don't warn about sed '$s/foo/bar/'
2014-04-19 12:29:49 -07:00
Vidar Holen
d0bad6c057
Suggest grouping redirections when appending on 3+ lines
2014-04-19 11:53:54 -07:00
Vidar Holen
58c362f97c
Warn about foo=(bar baz); echo $foo
2014-04-19 10:20:24 -07:00
Vidar Holen
2c1e414ac5
Only get vars after the last option in read
2014-04-19 08:50:47 -07:00
Vidar Holen
0a263579e0
Support for zsh short form for loops and anonymous functions
2014-04-13 13:37:37 -07:00
Vidar Holen
d63406abe4
Prevent SC2101 to collide with 2060 for tr -d [:space:]
2014-04-12 16:43:57 -07:00
Vidar Holen
81956d324d
Don't warn when single quoting PROMPT_COMMAND and PS1
2014-04-05 17:08:03 -07:00
Vidar Holen
f549aad809
Suggest grep -c for grep|wc
2014-04-05 16:53:09 -07:00
Vidar Holen
f9f965693d
Don't warn about single quoting $0 for xprop
2014-04-05 16:32:59 -07:00
Vidar Holen
727d940e10
Don't warn about expr when using <, > and friends
2014-04-05 16:29:35 -07:00
Vidar Holen
c26c2b8536
Stop using generic char 'c' in 2022
2014-04-05 16:17:52 -07:00
Vidar Holen
d8878ed852
Fixed warnings when assigning arrays to scalars
2014-04-05 14:56:12 -07:00
Vidar Holen
c3cc5f649f
Fixed warning about \n in echo -n -e '\n'
2014-04-05 12:49:24 -07:00
Vidar Holen
f01e6e1a99
Check for accidentally overriding $PATH
2014-03-29 10:07:23 -07:00
Vidar Holen
de0145fb29
Stable version 0.3.2
...
This release is dedicated to knirch, mcandre, Dridi,
ptman, pihentagy, Riviera, and everyone else who keeps
submitting bug reports and feature suggestions!
2014-03-22 11:05:27 -07:00
Vidar Holen
0d4ae95e1d
Recognize declare -x as exporting variables
2014-03-22 10:43:56 -07:00
Vidar Holen
50db49e2fb
Rename Unquotable to QuoteFree
2014-03-22 10:27:59 -07:00
Vidar Holen
60aafae21d
Count array indexes as references, even without $
2014-03-22 10:22:34 -07:00
Vidar Holen
4f1fd43360
Don't suggest removing $ in (( 10#$n ))
2014-03-16 15:06:18 -07:00
Vidar Holen
ca5af5c55a
Don't warn about decimals in (( )) for zsh/ksh
2014-03-16 14:56:23 -07:00
Vidar Holen
2a9c9ae0ad
Warn about using <=/>=, and don't warn about -gt 1.2 in ksh/zsh
2014-03-16 14:51:46 -07:00
Vidar Holen
67f4a0d6eb
Accept and warn about capitalization in keywords.
2014-03-15 16:08:33 -07:00
Vidar Holen
b68de7f42b
Don't warn about for s in "${!var}", it could be an array
2014-03-13 20:54:10 -07:00
Vidar Holen
7dacb62d36
Fixed determining shell for shebangs with flags
2014-03-09 17:24:05 -07:00
Vidar Holen
3423cde931
Check attempts to set variables with 'set'
2014-03-01 16:52:53 -08:00
Vidar Holen
b2d1aa01f7
Don't warn about commas when quoted in a=("a,b")
2014-03-01 15:30:51 -08:00
Vidar Holen
19e1bdf11f
Warn about array assignments for /bin/sh
2014-03-01 15:16:31 -08:00
Vidar Holen
75d51087c8
Warn about functions using parameters that are never passed
2014-03-01 14:42:00 -08:00
Vidar Holen
ed524fb77f
Don't warn about decimals when comparing with =
2014-03-01 10:24:22 -08:00
Vidar Holen
97045c4af1
Fixed x[0] not recognized as reference of x in arithmetics
2014-03-01 10:14:17 -08:00
Vidar Holen
632c1614a1
Added support for |&
2014-03-01 10:05:43 -08:00
Vidar Holen
d07294810b
Allow \n before and after ||/&& in [[ ]]
2014-02-28 18:46:10 -08:00
Vidar Holen
bf3c942294
Warn about using 'su foo' to continue as foo
2014-02-16 18:51:30 -08:00
Vidar Holen
055b40462d
Improved $(echo ..) warnings
2014-02-16 13:26:50 -08:00
Vidar Holen
b087b7efb1
Some hlint fixes.
...
Ironically, this is the first time the linter has been linted.
2014-02-16 12:57:34 -08:00
Vidar Holen
5d8d57cf07
Suggest useless use of echo for $(echo $var)
2014-02-12 19:20:39 -08:00
Vidar Holen
661091a9da
Added better message for SC1007, for 'var= value'
2014-02-12 18:26:41 -08:00
Vidar Holen
2ec60c2627
Added double prime to list of unicode quotes.
2014-02-08 14:15:04 -08:00
Vidar Holen
8b4909b238
Improve warnings for missing quotes.
2014-02-08 14:10:45 -08:00
Vidar Holen
968e34e002
Parse forward ticks (acute accents) just like backticks and warn.
2014-02-08 09:50:20 -08:00
Vidar Holen
197b3e3f20
Some checks for accidental rm -r
2014-02-04 19:43:16 -08:00
Vidar Holen
0e464ea476
Stable version 0.3.1
...
This release is dedicated to the Flycheck team,
even though ShellCheck is written entirely in Vim.
2014-02-03 20:22:30 -08:00
Vidar Holen
4e5d32b05a
Added --version flag
2014-02-03 20:06:59 -08:00
Vidar Holen
c5141b77bf
Fixed parser not accepting `` in arithmetic contex
2014-02-03 16:45:48 -08:00
Vidar Holen
77916d2645
Fixed compilation error on GHC7
2014-02-02 21:47:02 -08:00
Vidar Holen
4968e7d9ff
Added -s flag to override dialect, e.g. -s ksh
2014-02-02 19:28:09 -08:00
Vidar Holen
075d58ee90
Replaced parser error for 'function' with shell-aware check.
2014-02-02 13:39:44 -08:00
Vidar Holen
6a4a5a815e
Don't consider last stage of pipeline a subshell for Ksh/Zsh
...
Also fixes the problem where pipelines were considered a single subshell.
2014-02-02 13:03:26 -08:00
Vidar Holen
76a39f254b
Refactoring, 25% speedup.
...
* Checks now use Writer monad instead of State
* Parser no longer emits notes unrelated to parsing.
* All checks are now passed a parameter value, containing shell type,
map from notes to parents and such. This eliminates recalculation
and removes the need for a special group of parent examining checks.
2014-02-02 04:59:17 -08:00
Vidar Holen
8ec9fa43fd
Warn about break/continue in subshells and outside loops
2014-02-01 23:45:26 -08:00
Vidar Holen
e8634a3c27
Removed duplicate check for [[ a == b + 1 ]]
2014-02-01 20:45:44 -08:00
Vidar Holen
9ae776530b
Check for [[ i + 1 = 2 ]]
2014-01-27 22:47:48 -08:00
Vidar Holen
82328cd86e
Warn about literal "\ " just like literal quotes.
...
Also, do it recursively.
2014-01-27 22:11:46 -08:00
Vidar Holen
4262c4b1bf
Allow {} in arithmetic for loops
2014-01-26 12:44:51 -08:00
Vidar Holen
7ad0110443
Don't warn about sed '$d' or '$p'
2014-01-25 14:54:05 -08:00
Vidar Holen
e9bba2f75a
Don't warn about comma separation in for f in {a,b}
2014-01-25 14:30:25 -08:00
Vidar Holen
74ea5eaeec
Parse but warn about "else if"
2014-01-25 14:12:31 -08:00
Vidar Holen
cfb44b3fe2
Warn about 'cd $f; foo; cd ..' loop antipattern.
2014-01-17 09:02:14 -08:00
Vidar Holen
43ed5e748d
Allow '# shellcheck disable=SC1234' to ignore by code.
2014-01-16 23:08:56 -08:00
Vidar Holen
4dca88aade
Don't warn about quotes in variables for eval
2014-01-16 19:41:09 -08:00
Vidar Holen
1d2c7a8551
Warn about abused char classes, such as [10-15] and [:digit:]
2014-01-14 21:20:21 -08:00
Vidar Holen
659709d529
Fixed ${!var} not counting as reference of var
2013-12-30 10:00:05 -08:00
Vidar Holen
5b4729d940
Parser: allow subshell function definitions
2013-12-30 09:50:14 -08:00
Vidar Holen
8c00850134
Minor performance tweaks (~10% improvement)
2013-12-15 18:43:34 -08:00
Vidar Holen
d1990e3396
Warn about 'i=i+1' and 'i=i + 1'
2013-12-15 16:11:17 -08:00
Vidar Holen
95ebe1cd07
Fixed parser error for '..; done| ..'
2013-12-15 14:39:47 -08:00
Vidar Holen
27822a1f56
Warn about 'foo=bar echo $foo'
2013-12-14 16:06:19 -08:00
Vidar Holen
eb06b06475
Don't warn about single quoted vars for ssh
2013-12-14 15:28:58 -08:00
Vidar Holen
5d72432046
If printf string contains %, don't warn about using vars
2013-12-14 15:27:11 -08:00
Vidar Holen
da51b14789
Parser: accept here doc token strings more liberally
2013-12-14 15:20:15 -08:00
Vidar Holen
7be8485b8b
Fixed parsing of 'time' in front of compound commands
2013-12-14 14:44:47 -08:00
Vidar Holen
a4d36ba0d2
Warn about while read f; do ssh "$f"; done
2013-11-29 23:05:41 -08:00
Vidar Holen
d4bc0f6e10
Don't require separator before do in 'for i do ..'
2013-11-29 16:22:37 -08:00
Vidar Holen
1011ae7b3c
Fixed incorrect parsing of [ foo -a -f bar ]
2013-11-24 18:49:49 -08:00
Vidar Holen
d603ee1e89
Don't warn for A&&B||C if C is echo/exit/assignment
2013-11-24 16:15:10 -08:00
Vidar Holen
4fc518c877
Cleaned up command matching code
2013-11-24 15:48:07 -08:00
Vidar Holen
7fda86d6e2
Fixed warning for 'exec foo; exit 3'
2013-11-24 14:48:12 -08:00
Vidar Holen
6905373b6c
Fix incorrect warning for 'foo > bar 2> bar'
2013-11-24 14:20:24 -08:00
Vidar Holen
1d8401d583
Assume variables have spaces by default
2013-11-17 16:16:58 -08:00
Vidar Holen
a89aee1a34
Assume variables have spaces/globs by default
2013-11-17 16:13:45 -08:00
Vidar Holen
4853dce3fe
Fixed wrong quoting warning for foo=" "; foo
2013-11-17 15:00:07 -08:00
Vidar Holen
a793e09bab
Added hint to suggest missing ;; in case
2013-11-17 14:41:55 -08:00
Vidar Holen
d8b5d6393a
\" should not be treated specially in `backticks`
2013-11-12 18:27:18 -08:00
Vidar Holen
d404bc703d
Show expose error code in shellcheck frontends
2013-11-10 12:22:33 -08:00
Vidar Holen
e5e08df1d9
Numbered messages
2013-11-10 10:55:46 -08:00
Vidar Holen
83c3dd3418
Accept ./? in function names
2013-11-03 13:58:06 -08:00
Vidar Holen
8d265aa25e
Don't warn about expr if using : operator
2013-11-03 13:47:04 -08:00
Vidar Holen
71bc26aefa
Fixed parsing of | outside of groups in =~ regex
2013-11-03 13:13:24 -08:00
Vidar Holen
8a3d259ae6
Don't warn about single quotes in args to perl
2013-11-03 12:47:44 -08:00
Vidar Holen
3a9ae0ebf1
Accept dir-/basename due to edge cases like "/" and "foo"
2013-11-03 12:42:11 -08:00
Vidar Holen
6d0bfcf37a
Fixed parser accepting spaces after here doc token
2013-10-27 16:02:27 -07:00
Vidar Holen
e0bbb89d00
Fixed parser bug where }> wasn't recognized as Rbrace
2013-10-27 15:36:47 -07:00
Vidar Holen
b1af7bb8f2
Fixed parser error for 'for ((;;)) ; do'
2013-10-11 20:03:55 -07:00
Vidar Holen
157fea73da
Suggest ./* instead of * for command arguments
2013-10-06 15:54:31 -07:00
Vidar Holen
b439f02b8e
Improved assignment parsing: track indices and += vs =
2013-10-06 14:44:43 -07:00
Vidar Holen
710a28c572
Revert "Fixed parsing for 'eval var=(values)'", because it fails for 'eval $x=foo'
...
This reverts commit 34e69556b1
.
2013-09-29 21:35:20 -07:00
Vidar Holen
702d57b655
Warn about unicode quotes
2013-09-29 21:22:42 -07:00
Vidar Holen
34e69556b1
Fixed parsing for 'eval var=(values)'
2013-09-29 21:00:29 -07:00
Vidar Holen
7c411b39ac
Fixed warnings for read -p "Name: "
2013-09-29 20:55:26 -07:00
Vidar Holen
5a959bc340
Fix parser errors for unclosed $( in here docs
2013-09-21 16:27:17 -07:00
Vidar Holen
fb5f72951d
Don't warn about unused variables for read ''
2013-09-12 19:11:42 -07:00
Vidar Holen
7630136d6c
Move command and variable lists to ShellCheck.Data.
2013-09-12 18:50:33 -07:00
Vidar Holen
dacb8c597f
Fixed a series of extglob parsing oddities and edge cases
2013-09-04 13:02:30 -07:00
Vidar Holen
58b8e0ab70
Suggest pgrep when grepping ps
2013-08-31 18:32:07 -07:00
Vidar Holen
9586a46c9c
Warn about assigned but unreferenced variables
2013-08-31 18:26:20 -07:00
Vidar Holen
bb49cf8e65
Parse the contents of unquoted here documents
2013-08-31 17:03:15 -07:00
Vidar Holen
de1fa61560
Warn about client side expansion in ssh strings/heredocs.
2013-08-03 21:19:32 -07:00
Vidar Holen
07b1fd6f44
Allow :+- in function names. :(){ :|:;};:, anyone?
2013-08-03 20:22:32 -07:00
Vidar Holen
d0caa1e1df
Don't warn for 'find .. | xargs -0' or 'ls -N | ..'
2013-07-25 19:58:53 -07:00
Vidar Holen
62566ee016
Clarified warning for expr
2013-07-24 00:17:31 -07:00
Vidar Holen
c1731bd72c
Don't warn about redirecting sudo to /dev/null
2013-07-23 23:46:40 -07:00
Vidar Holen
4d9f8ebb39
Allow lack of spaces/separators in for((;;))do ..
2013-07-23 23:30:48 -07:00
Vidar Holen
6aab109afb
Fixed up some warning messages.
2013-07-23 23:13:28 -07:00
Vidar Holen
8c5f0a062e
Warn about suspicious quotes in "foo "$var" bar"
2013-07-23 22:48:35 -07:00
Vidar Holen
5ba382d79b
Fixed parsing of IFS= read as single assignment
2013-07-23 22:12:13 -07:00
Vidar Holen
d28f1fff56
Tried to make [ foo=bar ] messages simpler
2013-07-23 21:53:01 -07:00
Vidar Holen
1784972af7
Don't warn about echo "--------" is posix mode
2013-07-23 21:40:55 -07:00
Vidar Holen
6974497f45
Don't warn for \. (regex) and \, (printf "%q" output)
2013-07-23 21:35:00 -07:00
Vidar Holen
b147419717
Don't warn for $ on $(( ${array[refs]} ))
2013-07-23 21:29:19 -07:00
Vidar Holen
d6dab3bd05
Don't warn about IFS= read ..
2013-07-23 21:23:33 -07:00
Vidar Holen
cd1368b434
Added $PWD as a variable likely to contain spaces
2013-07-23 21:03:43 -07:00
Vidar Holen
f348661e7e
Generalized for f in $(ls) warning, due to many edge cases.
2013-07-23 20:54:04 -07:00
Vidar Holen
9393e4405b
Fixed accidental warning for $".."
2013-07-11 09:32:13 -07:00
Vidar Holen
e84d5abc3e
Support for recursive regex groups
2013-07-10 23:47:25 -07:00
Vidar Holen
0a2314cdcd
Also allow array syntax for args to readonly.
2013-07-10 23:15:08 -07:00
Vidar Holen
3e39411b38
Don't suggest ${foo//bar/baz} for #!/bin/sh
2013-07-10 23:14:10 -07:00
Vidar Holen
2214889a36
Improved messages for missing spaces in [..]
2013-07-10 23:03:42 -07:00
Vidar Holen
5a3493740e
Warn for [ \( foo = bar\) ]
2013-07-10 18:05:51 -07:00
Vidar Holen
e6f2ee1f88
Don't try to parse $'..' in ""
2013-07-10 17:41:38 -07:00
Vidar Holen
3832ca9d5c
Simplified PS1 checks.
2013-07-09 23:43:27 -07:00
Vidar Holen
636c6a9336
Parser support for export a=(b c). Also declare/local/typeset.
2013-07-09 23:32:13 -07:00
Vidar Holen
6b9cad55a5
Better unquoted message, seeing as how it's so common.
2013-07-09 22:18:22 -07:00
Vidar Holen
4780da31c2
Added bashism warning for &>
2013-07-09 22:11:17 -07:00
Vidar Holen
d04262c70f
Fixed broken recursive backtick expansion.
2013-07-09 21:53:15 -07:00
Vidar Holen
8055b6f9c5
Fixed warning for trap '$VAR'
2013-07-09 09:26:48 -07:00
Vidar Holen
c3211e559d
Added check for for f in $(find ..) similar to $(ls)
2013-07-08 21:09:27 -07:00
Vidar Holen
3d47609e78
Warn for [ $foo = *glob* ]
2013-07-08 20:45:15 -07:00
Vidar Holen
52f2f71b40
Added missing id/recursing defintions for DollarBracket
2013-07-08 09:51:57 -07:00
Vidar Holen
599beff5b1
Moved shebang verification to parser
2013-07-08 09:39:54 -07:00
Vidar Holen
a08e60cd07
Don't try to parse scripts declared as perl, ruby or python
2013-07-07 13:22:29 -07:00
Vidar Holen
2500b2cce6
Fixed parser warning for \{foo,bar\}
2013-07-06 15:36:06 -07:00
Vidar Holen
56e0119db1
Fixed some incorrect warnings for PS1 escapes.
2013-07-05 19:12:13 -07:00
Vidar Holen
76c5af2973
Parser support for $[..], plus deprecation warning.
2013-07-05 09:42:08 -07:00
Vidar Holen
fc4a6043d7
Reformatted ugly AST definition
2013-07-05 09:24:22 -07:00
Vidar Holen
a20a3499ed
Improved bad indirection detection
2013-07-05 09:15:08 -07:00
Vidar Holen
73c6202842
Fixed misplaced uuoc for 'cat foo' outside pipe.
2013-07-04 14:27:03 -07:00
Vidar Holen
10b5e44ad0
Improved help for missing here doc terminator.
2013-07-04 14:19:54 -07:00
Vidar Holen
66cebe7c7b
Don't warn about quoting when $var is the command name.
2013-07-04 13:49:00 -07:00
Vidar Holen
af4d24c6f6
Check for 'echo "\n"'.
2013-07-04 13:42:31 -07:00
Vidar Holen
fc3045232f
Don't warn about f=/dev/null in 'foo $f > $f'
2013-07-04 13:18:46 -07:00
Vidar Holen
dbd4ff109c
Mention second level structure being parsed when error.
2013-07-04 13:07:27 -07:00
Vidar Holen
d2c5802a9d
Fixed UUOC warning for 'cat * | ..'.
2013-07-04 12:26:59 -07:00
Vidar Holen
ab20747ef2
Removed warning for ~ in the middle of strings. Too common.
2013-07-04 12:01:34 -07:00
Vidar Holen
9e84ff66f7
Warn about $() but not quotes in 'if $(cmd); ..'
2013-07-04 11:44:36 -07:00
Vidar Holen
b060370b92
Added and improved parse warnings for missing spaces.
2013-07-03 16:37:58 -07:00
Vidar Holen
f557ac3324
Added check for 'exec foo; cmd'
2013-07-02 22:37:33 -07:00
Vidar Holen
5d46c8a53f
Added check for functions used with sudo/xargs/etc
2013-07-02 21:35:17 -07:00
Vidar Holen
99be2736a1
Doubled speed by applying all checks in one iteration.
2013-07-02 20:29:07 -07:00
Vidar Holen
6aafc86a67
Added check for './ file'. Apparently people do that.
2013-07-02 20:09:01 -07:00
Vidar Holen
9cfa25cb56
Added check for ~ in quotes
2013-07-02 19:52:09 -07:00
Vidar Holen
499f7c8733
Warn for possible bad quote nesting like 'echo 'foo''
2013-07-01 10:01:58 -07:00
Vidar Holen
651bab73de
Fixed crash for ''foo due to unsafe 'last'
2013-07-01 09:14:33 -07:00
Vidar Holen
652f8a24fa
Added most checks from 'checkbashisms'. Thanks to Braakman, Rodin and Gilbey!
2013-06-30 12:13:18 -07:00
Vidar Holen
f820298b6e
Added recursive parsing support for `..`
2013-06-26 21:04:39 -07:00
Vidar Holen
25ee7e20f4
Added awkward check for PS1 escapes outside \[..\]
2013-06-25 20:59:54 -07:00
Vidar Holen
438c4ec572
Fixed up warnings for \r, and added warnings for
2013-06-21 01:22:11 -07:00
Vidar Holen
5794f3d390
Fixed parsing of "test$"
2013-06-21 00:33:20 -07:00
Vidar Holen
092073d0b3
Fixed parsing for case foo \n in ..
2013-06-20 23:57:08 -07:00
Vidar Holen
51cd951baa
Added warnings for sudo cmd > file
2013-06-18 20:08:56 -07:00
Vidar Holen
3b246f94a3
Fixed parsing for cmd &> file
2013-06-18 20:08:33 -07:00
Vidar Holen
564e3c5413
Don't start comments for #s in the middle of words. Thanks Mitch!
2013-06-07 18:32:59 -07:00
Vidar Holen
103b037921
Fixed parsing for [] in =~ regex
2013-05-31 14:22:13 -07:00
Vidar Holen
1b8b3b84d0
Fixed broken test for for f in "*.mp3"; do ..
2013-05-29 21:05:15 -07:00
Vidar Holen
1dbbc51f86
Improved regex parsing. To think [[ f =~ f( ]] )* ]] is valid..
2013-05-28 21:32:15 -07:00
Vidar Holen
6b89f33d0c
Warn about arg='--foo="bar"'; cmd $arg
2013-05-28 20:06:20 -07:00
Vidar Holen
b279411d70
Rewrote variable tracking code for future expansion
2013-05-27 20:54:03 -07:00
Vidar Holen
fc1af1b918
Also check for overridden time parameters for /bin/sh
2013-05-25 22:43:17 -07:00
Vidar Holen
17cf796486
Different checks per shell, and increased bashism detection.
2013-05-25 22:33:21 -07:00
Vidar Holen
cf67bf2294
Added check for 'time --format' and such, which Bash swallows.
2013-05-23 22:28:12 -07:00
Vidar Holen
e8a0fe09bf
Added error for ${foo$n}
2013-05-23 21:47:25 -07:00
Vidar Holen
7ae5351de3
Added warning for foo$n=42
2013-05-23 21:31:29 -07:00
Vidar Holen
034cfee66e
Fixed glob parsing for [[:class:]] and [~.:]. Thanks to dualbus!
2013-05-23 20:44:28 -07:00
Vidar Holen
13d4ea6540
Don't complaing about lack of quotes for 'local' and 'declare'
2013-05-20 11:58:08 -07:00
Vidar Holen
92d0ae8b6b
Allow [ foo \> bar ], while warning for [[ .. \> .. ]] and [ 1 \< 2 ]
2013-05-14 15:59:58 -07:00
Vidar Holen
10d4abf235
Warn for test n > 4
2013-05-14 15:23:28 -07:00
Vidar Holen
ce0b313b93
Better messages for ignored backslashes like 'echo foo\n'
2013-05-13 09:15:45 -07:00
Vidar Holen
2f21ced552
Warn for subshell modifications using 'let'
2013-05-02 12:38:47 -07:00
Vidar Holen
82b16b4076
Warn for [[ $foo > 3.14 ]]
2013-03-22 17:10:30 -07:00
Vidar Holen
6abb5fe72b
Quick hack to read and discard array indexing in arithmetic contexts
2013-03-22 16:42:40 -07:00
Vidar Holen
9f244edae3
Warn on "grep foo*.jpg" and "grep *foo*"
2013-03-01 17:28:41 -08:00
Vidar Holen
d2e2d06978
Add check for [[ "foo" ]]
2013-02-14 19:43:43 -08:00
Vidar Holen
585529a636
Return list of notes rather than a Map -> Map
2013-02-11 19:26:40 -08:00
Vidar Holen
05cb806642
Also warn for '$((foo)) $(cmd) ${foo}', not just '$foo'
2013-02-07 17:53:47 -08:00
Vidar Holen
795af72cf7
Fixed warning for ${#@}
2013-02-06 22:35:24 -08:00
Vidar Holen
899d9eb445
Warn against open parenthesis in normal words
2013-02-05 20:35:39 -08:00
Vidar Holen
84f87002b7
Split up numerical and legal binary op function
2013-02-05 20:15:13 -08:00
Vidar Holen
e64698dc78
Improved empty then/elif/else clause errors
2013-01-26 17:21:34 -08:00
Vidar Holen
dd115a6d35
Warn on trap "echo $num" USR1
2013-01-25 20:32:25 -08:00
Vidar Holen
f6f05234bf
Warn on for f in 1,2,3 and for f in ls;
2013-01-25 20:15:42 -08:00
Vidar Holen
0d3dded238
Check if =~ is applied to something that looks like a glob
2013-01-25 20:06:18 -08:00
Vidar Holen
0c66cfb936
Add warnings for empty then clauses
2013-01-23 17:15:55 -08:00
Vidar Holen
844a07afa0
Added warning for empty do clauses
2013-01-23 17:12:05 -08:00
Vidar Holen
389d5588d8
Make [[ foo=bar ]] check say 'operator' instead of '=', because !=
2013-01-22 14:50:30 -08:00
Vidar Holen
7c18ecee4f
Parse single/double quoted literals in arithmetic context
2013-01-14 21:52:09 -08:00
Vidar Holen
b517ad9e19
select loops and bases in arithmetic contexts
2012-12-31 18:48:57 -08:00
Vidar Holen
059ef63b44
Don't warn for awk '$1'
2012-12-12 18:27:57 -08:00
Vidar Holen
1d7c6f68b4
Fixed bad for f in $(ls *.mp3) after T_Glob
2012-12-06 23:43:19 -08:00
Vidar Holen
bb6c155341
{1..$n} is only a problem in Bash
2012-12-05 09:53:16 -08:00
Vidar Holen
6d2e739e09
Hacked in place warnings for if [[ 1 ]] then :; fi
2012-12-02 23:47:17 -08:00
Vidar Holen
6e263e6b76
Parsing support for array indices in assignments.
2012-12-02 21:29:03 -08:00
Vidar Holen
b765ed1a44
Removed superfluous messages for [ cow]
2012-12-02 20:40:01 -08:00
Vidar Holen
1fb3380e68
Added warning for find . -execdir rm *.jpg \;
2012-12-02 18:10:00 -08:00
Vidar Holen
6402f7f4a3
Fixed space warning for foo=$(echo $foo)
2012-12-02 17:19:44 -08:00
Vidar Holen
d3a4c9852f
Read any -* as binary/unary op, and warn on unknown.
2012-12-02 14:50:31 -08:00
Vidar Holen
35b8d58c3e
Fixed warning for [[ greplol ]]
2012-12-02 14:15:50 -08:00
Vidar Holen
55a4c3c44f
Added check for bashisms with #!/bin/sh
2012-12-02 14:08:50 -08:00
Vidar Holen
1a4301ea98
Added check for "#!/usr/bin/env bash -x"
2012-12-02 12:40:46 -08:00
Vidar Holen
3c2d9557e0
Parse the shebang separately
2012-12-02 12:02:29 -08:00
Vidar Holen
8c1ab0c9b6
Fixed warning for tr abc '[d*]'
2012-12-01 13:19:40 -08:00
Vidar Holen
b144700ae0
Support for arithmetic for loops.
2012-12-01 12:56:35 -08:00
Vidar Holen
ff85c67c29
Fixed mistaked message for tr '[:upper:]'
2012-11-30 16:13:42 -08:00
Vidar Holen
a73d898bd8
Added warning for { if :; then :; fi > cow }
2012-11-30 15:16:20 -08:00
Vidar Holen
34259f16db
Fixed message for (($1))
2012-11-30 14:32:20 -08:00
Vidar Holen
24f91ae711
Revert "Added warning for fi }, and not for ) }"
...
This reverts commit ea4176691d
.
I must have had some crack for breakfast.
2012-11-30 10:24:35 -08:00
Vidar Holen
ea4176691d
Added warning for fi }, and not for ) }
2012-11-30 09:25:49 -08:00
Vidar Holen
f7be39cb5f
Added better malformed parsing messages
2012-11-29 22:26:45 -08:00
Vidar Holen
1e3b429abe
Check for tr hello world
2012-11-29 20:11:47 -08:00
Vidar Holen
b718e5f108
Parser help with globs, fixed message for grep foo\*
2012-11-29 19:20:44 -08:00
Vidar Holen
1bc6086aec
Added check for find / -exec foo && bar \;
2012-11-28 22:21:58 -08:00
Vidar Holen
3308ac9173
Warning for dirname/basename
2012-11-28 21:06:58 -08:00
Vidar Holen
089537afed
Added parsing support for $'..', which also fixed bug in `\``
2012-11-28 20:56:27 -08:00
Vidar Holen
beafb9284a
Added support for process substitution
2012-11-28 20:39:27 -08:00
Vidar Holen
8cf899300d
Added error for cat << (foo)
2012-11-28 19:21:11 -08:00
Vidar Holen
5d408875f1
Added [[ op -v and -R
2012-11-28 14:44:51 -08:00
Vidar Holen
7d7624252b
Added check for for f in $(cat foo)
2012-11-28 11:38:54 -08:00
Vidar Holen
3b1ec7f84e
Check for [[ $foo =~ '.*' ]]
2012-11-28 00:16:08 -08:00
Vidar Holen
01d3e5e858
Fixed unquoted error for [ ! $(foo) ]
2012-11-27 23:59:08 -08:00
Vidar Holen
b2c1c103c1
Added check for $(expr 3 + 2)
2012-11-27 23:55:08 -08:00
Vidar Holen
55ea991da7
Misspelled 'deprecated'
2012-11-27 23:42:50 -08:00
Vidar Holen
8db22b02e1
Added check for while $((n>3)); do ..
2012-11-27 23:38:44 -08:00
Vidar Holen
396541f3c2
Stop treating backticks as literals.
2012-11-27 23:11:59 -08:00
Vidar Holen
0cbbee7b89
Added slightly better ${..} parsing
2012-11-27 23:05:39 -08:00
Vidar Holen
77a3e3b331
Fixed incorrectly calling [ -z $foo ] a tautology.
2012-11-27 20:40:13 -08:00
Vidar Holen
2b2ee0a897
Suggest IFS='' as style for assigning empty vars.
2012-11-27 20:27:07 -08:00
Vidar Holen
e8a2ac09c7
Added check for grep foo*
2012-11-27 20:26:41 -08:00
Vidar Holen
96c8a01017
Added check for find / -name *.php
2012-11-27 20:10:54 -08:00
Vidar Holen
e2a6ffbea4
Added check for 'foo(a,b) {', support 'function foo {'
2012-11-27 19:45:32 -08:00
Vidar Holen
807e56355d
Punctuated message.
2012-11-27 01:48:51 -08:00
Vidar Holen
bb7e844125
Added better message for missing ]/]]
2012-11-27 01:28:42 -08:00
Vidar Holen
100fff4835
Added grep | sed check like existing grep | awk.
2012-11-27 01:21:14 -08:00
Vidar Holen
1aeff4f955
Added more robust a=cat foo | grep bar checker
2012-11-27 01:05:32 -08:00
Vidar Holen
adfdc0a627
Added check for a=ls -l
2012-11-27 00:48:09 -08:00
Vidar Holen
a8715d2d5f
Added check for A=foo | grep bar
2012-11-27 00:41:10 -08:00
Vidar Holen
0ca6d0f6cc
Added extglobs as splitting words
2012-11-27 00:32:00 -08:00
Vidar Holen
131b9f0517
Added checks for tr a-z A-Z and [asdf]
2012-11-27 00:28:47 -08:00
Vidar Holen
ba5bb488d1
Case statements are now rightfully unquotable contexts
2012-11-27 00:11:23 -08:00
Vidar Holen
2052adffef
Even more robust then/fi/do/done feedback
2012-11-27 00:08:24 -08:00
Vidar Holen
8cf02e60af
More robust fi/done mixup reporting
2012-11-26 23:50:00 -08:00
Vidar Holen
2ea4711ff4
Added check, for f in 'find /'; do ..
2012-11-26 22:58:30 -08:00
Vidar Holen
ef332217a1
Check for if[ foo ]
2012-11-26 22:49:23 -08:00
Vidar Holen
34690ad3db
Added more helpful message for 'if [ grep .. ]'
2012-11-26 22:23:40 -08:00
Vidar Holen
7025ebd633
Made unquoted $(..) check more robust
2012-11-26 21:52:47 -08:00
Vidar Holen
211c923f8b
Replaced common commands from /bin to posix utility list
2012-11-26 21:22:20 -08:00
Vidar Holen
4a803d2e48
Removed trailing whitespace
2012-11-26 20:43:19 -08:00
Vidar Holen
f4afb9a88f
Added check for constant [[]] expression, e.g. [[ a == b ]]
2012-11-26 20:42:10 -08:00
Vidar Holen
648090af31
Added warnings for then/fi/do/done treated literally.
2012-11-25 10:49:21 -08:00
Vidar Holen
21262399cc
Added a check for spurious }s
2012-11-25 00:42:59 -08:00
Vidar Holen
d58bd400ea
Added check for echo $foo | wc -c
2012-11-25 00:07:53 -08:00
Vidar Holen
aaf5ac6f8f
Added check for echo $a | sed s/foo/bar/g
2012-11-24 20:38:37 -08:00
Vidar Holen
aae87fc030
Added better space/glob checks
2012-11-24 14:41:17 -08:00
Vidar Holen
807ecbd038
Added extglob support that actually works
2012-11-19 23:20:01 -08:00
Vidar Holen
5100bc0989
Added check for [[ a != foo || a != bar ]], and same for (( ))
2012-11-19 22:54:55 -08:00
Vidar Holen
3f3ca2789b
Moved Eq Token instance to AST where it belongs
2012-11-19 22:32:55 -08:00
Vidar Holen
0e4f8a763f
Added extglob support
2012-11-19 22:27:44 -08:00
Vidar Holen
6977963124
Added checks for multiple pipe combinations.
2012-11-19 21:52:26 -08:00
Vidar Holen
090b94161d
Fixed incorrect warning for foo=$3
2012-11-17 10:53:39 -08:00
Vidar Holen
ecccc7a6b7
Added some more punctuation to messages.
2012-11-17 10:21:34 -08:00
Vidar Holen
0141bd812b
Give it some attitude
2012-11-16 23:04:40 -08:00
Vidar Holen
9eac0bfab9
Homogenized punctuation across messages.
2012-11-16 22:20:35 -08:00
Vidar Holen
45d5896cf8
More helpful errors for partial if statements
2012-11-16 21:30:52 -08:00
Vidar Holen
89b0168254
Fixed incorrect errors on [[ $1 ]]
2012-11-16 21:01:26 -08:00
Vidar Holen
258a13721e
Added readme and licenses
2012-11-16 19:43:05 -08:00
Vidar Holen
a7a19fa366
Support a+=foo
2012-11-16 18:53:54 -08:00
Vidar Holen
851de930c0
Removed bash, true and false from [ command ] check, since these could be values
2012-11-16 11:15:26 -08:00
Vidar Holen
a172c8a8b9
Fixed $(( ! n )) and incorrect warning on $(($?))
2012-11-16 11:07:10 -08:00
Vidar Holen
900c6d01d4
Cleaned up analytics notes
2012-11-16 10:22:04 -08:00
Vidar Holen
2581be14e4
Moved AST into its own file
2012-11-16 10:12:51 -08:00
Vidar Holen
5faf8e7141
Added check for printf "$var"
2012-11-16 09:53:35 -08:00
Vidar Holen
686c895858
Added check for [[ foo == $bar ]]
2012-11-15 23:43:57 -08:00
Vidar Holen
a2cc44a04d
Added check for $(($n))
2012-11-15 23:32:45 -08:00
Vidar Holen
ad9db04856
Fixed incorrect n=1 & n=foo$n and same for $((n++))
2012-11-15 23:23:08 -08:00
Vidar Holen
5d26f627cf
Rewrote the horrible analyze code
2012-11-15 22:19:06 -08:00
Vidar Holen
61baf730e0
Added support for parsing arithmetic context
2012-11-15 21:38:36 -08:00
Vidar Holen
38c5c6f847
Added warning for {1..$N}
2012-11-08 21:55:24 -08:00
Vidar Holen
7dbae12c7e
Fixed bugs related to groupings in conditions
2012-11-08 21:48:32 -08:00
Vidar Holen
33913366b1
Fixed bug in allModifiedVariables
2012-11-08 21:08:20 -08:00
Vidar Holen
f9f2982c9f
Added check for [ a==b ]
2012-11-08 20:43:51 -08:00
Vidar Holen
947ae519a2
Fixed [ grep foo bar ] warning not working
2012-11-08 20:28:06 -08:00
Vidar Holen
97e886e6dd
Added more [[]]-related checks
2012-11-08 20:19:34 -08:00
Vidar Holen
977cf427ca
Added parser for [[]]/[] with associated errors
2012-11-08 14:39:14 -08:00
Vidar Holen
99e765ff34
Minor text modifications
2012-11-07 18:27:12 -08:00