From a313b48ca66af6034d941fdf8ac45b5005f226bd Mon Sep 17 00:00:00 2001 From: Benjamin Gordon Date: Tue, 2 Jul 2019 12:24:11 -0600 Subject: [PATCH] Disable SC2155 for portage files This idiom is extremely common in Gentoo: In tensorflow-1.9.0_rc1.ebuild line 400: export GCC_HOST_COMPILER_PATH="$(which $(tc-getBUILD_CC))" ^--------------------^ SC2155: Declare and assign separately to avoid masking return values. Gentoo shell scripts don't run under `set -e`, and no one ever runs code like `if export ...`, so this warning doesn't help with ebuilds. --- src/ShellCheck/Analytics.hs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ShellCheck/Analytics.hs b/src/ShellCheck/Analytics.hs index 067a53f..3be1077 100644 --- a/src/ShellCheck/Analytics.hs +++ b/src/ShellCheck/Analytics.hs @@ -2745,10 +2745,12 @@ prop_checkMaskedReturns2 = verify checkMaskedReturns "declare a=$(false)" prop_checkMaskedReturns3 = verify checkMaskedReturns "declare a=\"`false`\"" prop_checkMaskedReturns4 = verifyNot checkMaskedReturns "declare a; a=$(false)" prop_checkMaskedReturns5 = verifyNot checkMaskedReturns "f() { local -r a=$(false); }" -checkMaskedReturns _ t@(T_SimpleCommand id _ (cmd:rest)) = potentially $ do +prop_checkMaskedReturns6 = verifyNot checkMaskedReturns "#shellcheck shell=portage\ndeclare a=$(false)" +checkMaskedReturns params t@(T_SimpleCommand id _ (cmd:rest)) = potentially $ do name <- getCommandName t - guard $ name `elem` ["declare", "export"] - || name == "local" && "r" `notElem` map snd (getAllFlags t) + guard $ (name `elem` ["declare", "export"] + || name == "local" && "r" `notElem` map snd (getAllFlags t)) + && (not $ isPortageBuild params) return $ mapM_ checkArgs rest where checkArgs (T_Assignment id _ _ _ word) | any hasReturn $ getWordParts word =