Commit Graph

623 Commits

Author SHA1 Message Date
Vidar Holen 39bc011757 Rewrote catastrophic rm detection, now simpler and more robust. 2015-01-25 12:18:06 -08:00
Vidar Holen c9aa133282 Fix pattern matching error in z=$(echo) 2015-01-02 18:06:10 -08:00
Vidar Holen 7b70500d41 Suppress SC2140 if the user just prefers quoting single items at a time. 2014-12-23 19:47:55 -08:00
Vidar Holen 8bed447411 Warn when trying to find -exec "shell command" \; 2014-11-22 12:16:30 -08:00
Vidar Holen 22710bf4d8 Fixed $! counting as a positional parameter reference. 2014-11-22 11:21:54 -08:00
Vidar Holen a354685ab1 Warn about redirecting to globs in sh 2014-11-22 10:50:38 -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
Veres Lajos 97f3834852 typo fixes - https://github.com/vlajos/misspell_fixer 2014-11-04 21:55:42 +00:00
Vidar Holen 0369f43bac Fixed 2148 to not trigger if a shell is specified with `-s`. 2014-11-01 13:51:19 -07:00
Vidar Holen eb2eae2888 Don't warn about ${args[@]} when nested in other ${} 2014-11-01 12:44:27 -07:00
Vidar Holen 30c0c1f27d Allow export "foo"="bar" in 2140 2014-11-01 12:20:10 -07:00
Vidar Holen bff5d11566 Warn about `` in '' 2014-11-01 12:17:12 -07:00
Vidar Holen eccb9f3f71 Added -or and -print0 to SC2146 2014-11-01 12:07:09 -07:00
Vidar Holen 2814572116 cat "$@" is not UUOC 2014-10-18 19:59:13 -07:00
Vidar Holen 90bafb9aba Fixed bug where (($b)) counted as a positional reference 2014-10-18 19:51:13 -07:00
Vidar Holen 39805ab200 Don't warn about unpassed parameters in functions using 'set ..'. 2014-10-12 17:10:46 -07:00
Vidar Holen 9dadce96c0 Improve messages for missing 'then' statements. 2014-10-12 16:17:03 -07:00
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 &nbsp; 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