Commit Graph

246 Commits

Author SHA1 Message Date
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 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 fd909eeca0 Fix parsing of &;; in case statements 2014-05-10 11:29:30 -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 0a263579e0 Support for zsh short form for loops and anonymous functions 2014-04-13 13:37:37 -07:00
Vidar Holen 67f4a0d6eb Accept and warn about capitalization in keywords. 2014-03-15 16:08:33 -07: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 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 c5141b77bf Fixed parser not accepting `` in arithmetic contex 2014-02-03 16:45:48 -08:00
Vidar Holen 075d58ee90 Replaced parser error for 'function' with shell-aware check. 2014-02-02 13:39:44 -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 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 4262c4b1bf Allow {} in arithmetic for loops 2014-01-26 12:44:51 -08:00
Vidar Holen 74ea5eaeec Parse but warn about "else if" 2014-01-25 14:12:31 -08:00
Vidar Holen 43ed5e748d Allow '# shellcheck disable=SC1234' to ignore by code. 2014-01-16 23:08:56 -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 95ebe1cd07 Fixed parser error for '..; done| ..' 2013-12-15 14:39:47 -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 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 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 71bc26aefa Fixed parsing of | outside of groups in =~ regex 2013-11-03 13:13:24 -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 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 5a959bc340 Fix parser errors for unclosed $( in here docs 2013-09-21 16:27:17 -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 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 4d9f8ebb39 Allow lack of spaces/separators in for((;;))do .. 2013-07-23 23:30:48 -07:00
Vidar Holen 5ba382d79b Fixed parsing of IFS= read as single assignment 2013-07-23 22:12:13 -07:00
Vidar Holen 6974497f45 Don't warn for \. (regex) and \, (printf "%q" output) 2013-07-23 21:35:00 -07:00
Vidar Holen d6dab3bd05 Don't warn about IFS= read .. 2013-07-23 21:23:33 -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 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 636c6a9336 Parser support for export a=(b c). Also declare/local/typeset. 2013-07-09 23:32:13 -07:00
Vidar Holen d04262c70f Fixed broken recursive backtick expansion. 2013-07-09 21:53:15 -07:00
Vidar Holen 599beff5b1 Moved shebang verification to parser 2013-07-08 09:39:54 -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 10b5e44ad0 Improved help for missing here doc terminator. 2013-07-04 14:19:54 -07:00
Vidar Holen dbd4ff109c Mention second level structure being parsed when error. 2013-07-04 13:07:27 -07:00
Vidar Holen b060370b92 Added and improved parse warnings for missing spaces. 2013-07-03 16:37:58 -07:00
Vidar Holen 651bab73de Fixed crash for ''foo due to unsafe 'last' 2013-07-01 09:14:33 -07:00
Vidar Holen f820298b6e Added recursive parsing support for `..` 2013-06-26 21:04:39 -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 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 1dbbc51f86 Improved regex parsing. To think [[ f =~ f( ]] )* ]] is valid.. 2013-05-28 21:32:15 -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 92d0ae8b6b Allow [ foo \> bar ], while warning for [[ .. \> .. ]] and [ 1 \< 2 ] 2013-05-14 15:59:58 -07:00
Vidar Holen ce0b313b93 Better messages for ignored backslashes like 'echo foo\n' 2013-05-13 09:15:45 -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 899d9eb445 Warn against open parenthesis in normal words 2013-02-05 20:35:39 -08:00
Vidar Holen e64698dc78 Improved empty then/elif/else clause errors 2013-01-26 17:21:34 -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 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 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 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 b144700ae0 Support for arithmetic for loops. 2012-12-01 12:56:35 -08:00
Vidar Holen a73d898bd8 Added warning for { if :; then :; fi > cow } 2012-11-30 15:16: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 b718e5f108 Parser help with globs, fixed message for grep foo\* 2012-11-29 19:20:44 -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 01d3e5e858 Fixed unquoted error for [ ! $(foo) ] 2012-11-27 23:59:08 -08:00
Vidar Holen 55ea991da7 Misspelled 'deprecated' 2012-11-27 23:42:50 -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 2b2ee0a897 Suggest IFS='' as style for assigning empty vars. 2012-11-27 20:27:07 -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 1aeff4f955 Added more robust a=cat foo | grep bar checker 2012-11-27 01:05:32 -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 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 211c923f8b Replaced common commands from /bin to posix utility list 2012-11-26 21:22:20 -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 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 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 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 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 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 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 7dbae12c7e Fixed bugs related to groupings in conditions 2012-11-08 21:48:32 -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 e264f64266 Renamed from codename Shpell to final name ShellCheck. 2012-11-06 11:31:53 -08:00