From d2c5802a9d0d7ca517b9a08258282ec4f8728fac Mon Sep 17 00:00:00 2001 From: Vidar Holen Date: Thu, 4 Jul 2013 12:26:59 -0700 Subject: [PATCH] Fixed UUOC warning for 'cat * | ..'. --- ShellCheck/Analytics.hs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ShellCheck/Analytics.hs b/ShellCheck/Analytics.hs index ef2f714..63909be 100644 --- a/ShellCheck/Analytics.hs +++ b/ShellCheck/Analytics.hs @@ -267,11 +267,17 @@ checkAssignAteCommand (T_SimpleCommand id ((T_Assignment _ _ assignmentTerm):[]) checkAssignAteCommand _ = return () -prop_checkUuoc = verify checkUuoc "cat foo | grep bar" -checkUuoc (T_Pipeline _ (T_Redirecting _ _ f@(T_SimpleCommand id _ _):_:_)) = - case deadSimple f of ["cat", _] -> style id "Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead." - _ -> return () -checkUuoc _ = return () +prop_checkUuoc1 = verify checkUuoc "cat foo | grep bar" +prop_checkUuoc2 = verifyNot checkUuoc "cat * | grep bar" +prop_checkUuoc3 = verify checkUuoc "cat $var | grep bar" +checkUuoc = checkCommand "cat" f + where + f [word] = when (isSimple word) $ + style (getId word) "Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead." + f _ = return () + isSimple (T_NormalWord _ parts) = all isSimple parts + isSimple (T_DollarBraced _ _) = True + isSimple x = not $ willSplit x prop_checkNeedlessCommands = verify checkNeedlessCommands "foo=$(expr 3 + 2)" checkNeedlessCommands (T_SimpleCommand id _ (w:_)) | w `isCommand` "expr" =