From 558d8ffc6ce00d621f1ca24d0382680bf580aed2 Mon Sep 17 00:00:00 2001 From: Vidar Holen Date: Wed, 7 May 2014 21:47:27 -0700 Subject: [PATCH] Warn about suspiciously unquoted literal parts like "var="value"" --- ShellCheck/Analytics.hs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ShellCheck/Analytics.hs b/ShellCheck/Analytics.hs index 369d90d..67f6a6c 100644 --- a/ShellCheck/Analytics.hs +++ b/ShellCheck/Analytics.hs @@ -1605,6 +1605,8 @@ checkIndirectExpansion _ _ = return () prop_checkInexplicablyUnquoted1 = verify checkInexplicablyUnquoted "echo 'var='value';'" prop_checkInexplicablyUnquoted2 = verifyNot checkInexplicablyUnquoted "'foo'*" prop_checkInexplicablyUnquoted3 = verifyNot checkInexplicablyUnquoted "wget --user-agent='something'" +prop_checkInexplicablyUnquoted4 = verify checkInexplicablyUnquoted "echo \"VALUES (\"id\")\"" +prop_checkInexplicablyUnquoted5 = verifyNot checkInexplicablyUnquoted "\"$dir\"/\"$file\"" checkInexplicablyUnquoted _ (T_NormalWord id tokens) = mapM_ check (tails tokens) where check ((T_SingleQuoted _ _):(T_Literal id str):_) @@ -1613,13 +1615,16 @@ checkInexplicablyUnquoted _ (T_NormalWord id tokens) = mapM_ check (tails tokens check ((T_DoubleQuoted _ _):trapped:(T_DoubleQuoted _ _):_) = case trapped of - T_DollarExpansion id _ -> warnAbout id - T_DollarBraced id _ -> warnAbout id + T_DollarExpansion id _ -> warnAboutExpansion id + T_DollarBraced id _ -> warnAboutExpansion id + T_Literal id s -> unless (s == "/") $ warnAboutLiteral id _ -> return () check _ = return () - warnAbout id = - info id 2027 $ "Surrounding quotes actually unquotes this (\"inside\"$outside\"inside\"). Did you forget your quote level?" + warnAboutExpansion id = + warn id 2027 $ "The surrounding quotes actually unquote this. Remove or escape them." + warnAboutLiteral id = + warn id 2140 $ "The double quotes around this do nothing. Remove or escape them." checkInexplicablyUnquoted _ _ = return () prop_checkTildeInQuotes1 = verify checkTildeInQuotes "var=\"~/out.txt\""