Include bash builtin arrays in SC2128.
This commit is contained in:
parent
b9cb040128
commit
4ce916ec1d
|
@ -991,24 +991,26 @@ prop_checkArrayWithoutIndex2 = verifyNotTree checkArrayWithoutIndex "foo='bar ba
|
||||||
prop_checkArrayWithoutIndex3 = verifyTree checkArrayWithoutIndex "coproc foo while true; do echo cow; done; echo $foo"
|
prop_checkArrayWithoutIndex3 = verifyTree checkArrayWithoutIndex "coproc foo while true; do echo cow; done; echo $foo"
|
||||||
prop_checkArrayWithoutIndex4 = verifyTree checkArrayWithoutIndex "coproc tail -f log; echo $COPROC"
|
prop_checkArrayWithoutIndex4 = verifyTree checkArrayWithoutIndex "coproc tail -f log; echo $COPROC"
|
||||||
prop_checkArrayWithoutIndex5 = verifyTree checkArrayWithoutIndex "a[0]=foo; echo $a"
|
prop_checkArrayWithoutIndex5 = verifyTree checkArrayWithoutIndex "a[0]=foo; echo $a"
|
||||||
|
prop_checkArrayWithoutIndex6 = verifyTree checkArrayWithoutIndex "echo $PIPESTATUS"
|
||||||
checkArrayWithoutIndex params _ =
|
checkArrayWithoutIndex params _ =
|
||||||
concat $ doVariableFlowAnalysis readF writeF Map.empty (variableFlow params)
|
concat $ doVariableFlowAnalysis readF writeF defaultMap (variableFlow params)
|
||||||
where
|
where
|
||||||
|
defaultMap = Map.fromList $ map (\x -> (x,())) arrayVariables
|
||||||
readF _ (T_DollarBraced id token) _ = do
|
readF _ (T_DollarBraced id token) _ = do
|
||||||
map <- get
|
map <- get
|
||||||
return . maybeToList $ do
|
return . maybeToList $ do
|
||||||
name <- getLiteralString token
|
name <- getLiteralString token
|
||||||
assignment <- Map.lookup name map
|
assigned <- Map.lookup name map
|
||||||
return [makeComment WarningC id 2128
|
return [makeComment WarningC id 2128
|
||||||
"Expanding an array without an index only gives the first element."]
|
"Expanding an array without an index only gives the first element."]
|
||||||
readF _ _ _ = return []
|
readF _ _ _ = return []
|
||||||
|
|
||||||
writeF _ t name (DataArray _) = do
|
writeF _ t name (DataArray _) = do
|
||||||
modify (Map.insert name t)
|
modify (Map.insert name ())
|
||||||
return []
|
return []
|
||||||
writeF _ expr name _ = do
|
writeF _ expr name _ = do
|
||||||
if isIndexed expr
|
if isIndexed expr
|
||||||
then modify (Map.insert name expr)
|
then modify (Map.insert name ())
|
||||||
else modify (Map.delete name)
|
else modify (Map.delete name)
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,12 @@ variablesWithoutSpaces = [
|
||||||
"COLUMNS", "HISTFILESIZE", "HISTSIZE", "LINES"
|
"COLUMNS", "HISTFILESIZE", "HISTSIZE", "LINES"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
arrayVariables = [
|
||||||
|
"BASH_ALIASES", "BASH_ARGC", "BASH_ARGV", "BASH_CMDS", "BASH_LINENO",
|
||||||
|
"BASH_REMATCH", "BASH_SOURCE", "BASH_VERSINFO", "COMP_WORDS", "COPROC",
|
||||||
|
"DIRSTACK", "FUNCNAME", "GROUPS", "MAPFILE", "PIPESTATUS", "COMPREPLY"
|
||||||
|
]
|
||||||
|
|
||||||
commonCommands = [
|
commonCommands = [
|
||||||
"admin", "alias", "ar", "asa", "at", "awk", "basename", "batch",
|
"admin", "alias", "ar", "asa", "at", "awk", "basename", "batch",
|
||||||
"bc", "bg", "break", "c99", "cal", "cat", "cd", "cflow", "chgrp",
|
"bc", "bg", "break", "c99", "cal", "cat", "cd", "cflow", "chgrp",
|
||||||
|
|
Loading…
Reference in New Issue