Treat ${arr[*]} like $* for SC2048

This commit is contained in:
Vidar Holen 2021-04-24 17:08:10 -07:00
parent 9e60b3ea84
commit fe25a2b00e
2 changed files with 10 additions and 2 deletions

View File

@ -4,6 +4,7 @@
### Fixed ### Fixed
### Changed ### Changed
- SC2048: Warning about $\* now also applies to ${array[\*]}
## v0.7.2 - 2021-04-19 ## v0.7.2 - 2021-04-19

View File

@ -820,10 +820,17 @@ checkShorthandIf _ _ = return ()
prop_checkDollarStar = verify checkDollarStar "for f in $*; do ..; done" prop_checkDollarStar = verify checkDollarStar "for f in $*; do ..; done"
prop_checkDollarStar2 = verifyNot checkDollarStar "a=$*" prop_checkDollarStar2 = verifyNot checkDollarStar "a=$*"
prop_checkDollarStar3 = verifyNot checkDollarStar "[[ $* = 'a b' ]]" prop_checkDollarStar3 = verifyNot checkDollarStar "[[ $* = 'a b' ]]"
prop_checkDollarStar4 = verify checkDollarStar "for f in ${var[*]}; do ..; done"
prop_checkDollarStar5 = verify checkDollarStar "ls ${*//foo/bar}"
prop_checkDollarStar6 = verify checkDollarStar "ls ${var[*]%%.*}"
checkDollarStar p t@(T_NormalWord _ [T_DollarBraced id _ l]) checkDollarStar p t@(T_NormalWord _ [T_DollarBraced id _ l])
| concat (oversimplify l) == "*" && | not (isStrictlyQuoteFree (parentMap p) t) = do
not (isStrictlyQuoteFree (parentMap p) t) = let str = concat (oversimplify l)
when ("*" `isPrefixOf` str) $
warn id 2048 "Use \"$@\" (with quotes) to prevent whitespace problems." warn id 2048 "Use \"$@\" (with quotes) to prevent whitespace problems."
when ("[*]" `isPrefixOf` (getBracedModifier str)) $
warn id 2048 "Use \"${array[@]}\" (with quotes) to prevent whitespace problems."
checkDollarStar _ _ = return () checkDollarStar _ _ = return ()