Include `local -r` in check-extra-masked-returns (fixes #2362)

This commit is contained in:
Vidar Holen 2021-11-06 15:37:59 -07:00
parent efd49e486f
commit 8db220ae43
1 changed files with 9 additions and 2 deletions

View File

@ -4782,6 +4782,8 @@ prop_checkExtraMaskedReturns31 = verifyNotTree checkExtraMaskedReturns "false <
prop_checkExtraMaskedReturns32 = verifyNotTree checkExtraMaskedReturns "false < <(basename \"${BASH_SOURCE[0]}\")" prop_checkExtraMaskedReturns32 = verifyNotTree checkExtraMaskedReturns "false < <(basename \"${BASH_SOURCE[0]}\")"
prop_checkExtraMaskedReturns33 = verifyNotTree checkExtraMaskedReturns "{ false || true; } | true" prop_checkExtraMaskedReturns33 = verifyNotTree checkExtraMaskedReturns "{ false || true; } | true"
prop_checkExtraMaskedReturns34 = verifyNotTree checkExtraMaskedReturns "{ false || :; } | true" prop_checkExtraMaskedReturns34 = verifyNotTree checkExtraMaskedReturns "{ false || :; } | true"
prop_checkExtraMaskedReturns35 = verifyTree checkExtraMaskedReturns "f() { local -r x=$(false); }"
checkExtraMaskedReturns params t = runNodeAnalysis findMaskingNodes params t checkExtraMaskedReturns params t = runNodeAnalysis findMaskingNodes params t
where where
findMaskingNodes _ (T_Arithmetic _ list) = findMaskedNodesInList [list] findMaskingNodes _ (T_Arithmetic _ list) = findMaskedNodesInList [list]
@ -4828,8 +4830,13 @@ checkExtraMaskedReturns params t = runNodeAnalysis findMaskingNodes params t
isCheckedElsewhere t = hasParent isDeclaringCommand t isCheckedElsewhere t = hasParent isDeclaringCommand t
where where
isDeclaringCommand t _ = fromMaybe False $ do isDeclaringCommand t _ = fromMaybe False $ do
basename <- getCommandBasename t cmd <- getCommand t
return $ basename `elem` declaringCommands basename <- getCommandBasename cmd
return $
case basename of
-- local -r x=$(false) is intentionally ignored for SC2155
"local" | "r" `elem` (map snd $ getAllFlags cmd) -> False
_ -> basename `elem` declaringCommands
isHarmlessCommand t = fromMaybe False $ do isHarmlessCommand t = fromMaybe False $ do
basename <- getCommandBasename t basename <- getCommandBasename t