Commit Graph

258 Commits

Author SHA1 Message Date
Vidar Holen 2f0ae44de4 Fix parsing of here documents 2016-04-16 19:14:02 -07:00
Vidar Holen f835c2d4c1 Fix handling of spaces in shebangs. 2016-04-16 09:42:07 -07:00
Vidar Holen 2957fb64c9 Allow parsing 'time ( foo )' 2016-03-19 16:13:54 -07:00
Vidar Holen 944313c6ba Directives after the shebang now apply to the entire script.
Also adds support for the shell= directive.
2016-03-08 20:16:16 -08:00
Vidar Holen 8a3bd25f7c Improve error for missing final ) in $((foo) 2016-02-07 14:16:40 -08:00
Vidar Holen 825c1b5d22 Support parsing $((( as $( ((, with warning. 2016-02-06 22:19:29 -08:00
Vidar Holen 92473b512a Add warning for trailing spaces after \ breaks. 2016-02-01 20:20:34 -08:00
Vidar Holen 528381796e Allow escaped characters in [..] globs 2015-12-13 10:19:48 -08:00
Vidar Holen c7964a7a78 Warn about missing space in 'function foo{'. 2015-12-05 16:09:44 -08:00
Vidar Holen 1a5296659b Properly handle escaped double quotes in quoted backtick expressions. 2015-11-01 12:30:33 -08:00
Vidar Holen ffb9578a98 Support parsing quoted test operators, and also warn about unicode dashes. 2015-10-17 16:33:21 -07:00
Vidar Holen 630f20e888 Count ~/ as dynamic for resolving source paths. 2015-10-17 10:50:07 -07:00
Vidar Holen d01b59a827 Don't warn about empty assignments when at end of command. 2015-10-13 12:16:39 -07:00
Vidar Holen 55692926b9 Don't consider {} and {a} brace expansions. 2015-10-03 21:12:28 -07:00
Vidar Holen 0f00de80fd Support {n}>&1 named file descriptors. 2015-09-05 09:48:34 -07:00
Vidar Holen c808c9b6fe End here doc tokens on < and >. 2015-09-03 20:58:21 -07:00
Vidar Holen bf9297e2a5 Parse ksh ${ ..; } expansions. 2015-09-03 20:26:02 -07:00
Vidar Holen 7f547cc0ec Warn when using unescaped parens in eval. 2015-09-02 21:11:39 -07:00
Vidar Holen 01c27dc96a Parse double arithmetic negation, i.e. (( !!a )); 2015-09-02 19:31:22 -07:00
Matteo Beniamino f054e2e2cc Added FlexibleContexts extension in Parser.hs to fix compilation. 2015-08-23 10:55:18 +02:00
Vidar Holen 090e09e4ca Support nested trinary expressions. 2015-08-22 14:20:20 -07:00
Vidar Holen d0029ae1d4 Ignore === in assignments, and add a special warning 1097 for ==. 2015-08-22 12:20:03 -07:00
Vidar Holen eea7bc326e Improved parsing error expected messages. 2015-08-22 11:06:49 -07:00
Vidar Holen 73cd2cdd6f Also warn about missing 'then' before 'else' 2015-08-19 20:27:14 -07:00
Vidar Holen a01862bc12 Adds a #shellcheck source=file directive to override source statements. 2015-08-19 19:09:55 -07:00
Vidar Holen f31c8bd3a3 Preliminary support for sourced files. 2015-08-16 17:18:51 -07:00
Vidar Holen f85441add9 Removed unused pragma. 2015-08-15 13:25:34 -07:00
Vidar Holen 67cfcfd206 Separated formatters into multiple files. 2015-08-15 12:51:13 -07:00
Vidar Holen 72eeafe002 Some cleanup to make room for future improvements. 2015-08-15 09:34:19 -07:00
Vidar Holen cbda90eeb5 Warn about zero-width spaces. 2015-07-25 13:59:00 -07:00
Vidar Holen 0522a5f0bd Allow escaped linefeeds to break lines in $(()) 2015-07-15 09:01:29 -07:00
Vidar Holen 3d83b87c9a Added copyright notice to individual source files. 2015-06-30 19:21:12 -07:00
Vidar Holen 349dfdab35 Relicense from AGPL v3 to GPL v3. 2015-06-20 09:52:07 -07:00
Vidar Holen ca37794b7c Allow empty scripts, $()s and <()s. Also improves related error messages. 2015-06-14 14:30:11 -07:00
Vidar Holen 6076f0b1da Parse variables and subexpressions in brace expansions 2015-05-10 12:49:50 -07:00
Vidar Holen 93debd3556 Add expect to list of known non-shells 2015-04-02 19:22:47 -07:00
Vidar Holen 47b971c582 Declared FlexibleContexts for GHC 7.10 2015-03-31 21:59:03 -07:00
Vidar Holen ed56a837c3 Killed Zsh support 2015-03-20 10:03:56 -07:00
Vidar Holen 0a80188363 Fix parsing of ((a?b:c)) 2015-03-08 18:11:23 -07:00
Vidar Holen 0e1a64b6ba Warn about export/declare/local masking return values. 2015-03-08 14:17:43 -07:00
Vidar Holen 0a2cf208c8 Fixed quoted ~ warning to only trigger for ~/ 2015-03-07 23:48:01 -08:00
Vidar Holen 0d74140650 Multiple wrong assignment warning fixes 2015-03-07 20:15:04 -08:00
Vidar Holen 955ad60823 Fixed parser errors not being excluded by -e 2015-03-01 13:44:57 -08:00
Vidar Holen 33c78b7c95 Track variables created through coproc. 2015-01-27 10:11:17 -08:00
Vidar Holen a485482979 Add support for coproc 2015-01-26 22:21:04 -08:00
Vidar Holen a8ff7a02fd Fix $10 warning triggering for $?!, and also warn about $arr[index]. 2014-11-22 10:09:19 -08:00
Vidar Holen d9dd58bec8 Warn about 'for $var in values'. 2014-11-09 16:22:01 -08:00
Vidar Holen af1bb93aba Better warnings for repeated ;;s 2014-11-09 14:33:36 -08:00
Vidar Holen e909c8ac42 More lenient line feed handling in test expressions. 2014-11-08 15:35:06 -08:00
Vidar Holen 9dadce96c0 Improve messages for missing 'then' statements. 2014-10-12 16:17:03 -07:00
Vidar Holen a69e27b774 Warn about swapped !# in the shebang. 2014-10-11 12:35:45 -07:00
Vidar Holen 2f3533fff6 Improve warnings for $ in (()). Also improves array subscripts. 2014-08-16 17:08:57 -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 b000b05507 Parse empty and comment-only backtick expansions. 2014-07-26 12:07:59 -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 c11c0196d5 Fixed broken parsing of <( in arithmetics 2014-06-10 00:42:07 -07:00
Vidar Holen fc421adb45 Reworked arithmetics to allow composite terms 2014-06-07 22:09:34 -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
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