Suppress SC2035 for echo * and printf * (fixes #2036)

This commit is contained in:
Vidar Holen 2020-09-01 14:19:28 -07:00
parent c9be7ab2eb
commit 43191fa71d

View file

@ -2320,8 +2320,11 @@ prop_checkGlobsAsOptions1 = verify checkGlobsAsOptions "rm *.txt"
prop_checkGlobsAsOptions2 = verify checkGlobsAsOptions "ls ??.*" prop_checkGlobsAsOptions2 = verify checkGlobsAsOptions "ls ??.*"
prop_checkGlobsAsOptions3 = verifyNot checkGlobsAsOptions "rm -- *.txt" prop_checkGlobsAsOptions3 = verifyNot checkGlobsAsOptions "rm -- *.txt"
prop_checkGlobsAsOptions4 = verifyNot checkGlobsAsOptions "*.txt" prop_checkGlobsAsOptions4 = verifyNot checkGlobsAsOptions "*.txt"
checkGlobsAsOptions _ (T_SimpleCommand _ _ args) = prop_checkGlobsAsOptions5 = verifyNot checkGlobsAsOptions "echo 'Files:' *.txt"
mapM_ check $ takeWhile (not . isEndOfArgs) (drop 1 args) prop_checkGlobsAsOptions6 = verifyNot checkGlobsAsOptions "printf '%s\\n' *"
checkGlobsAsOptions _ cmd@(T_SimpleCommand _ _ args) =
unless ((fromMaybe "" $ getCommandBasename cmd) `elem` ["echo", "printf"]) $
mapM_ check $ takeWhile (not . isEndOfArgs) (drop 1 args)
where where
check v@(T_NormalWord _ (T_Glob id s:_)) | s == "*" || s == "?" = check v@(T_NormalWord _ (T_Glob id s:_)) | s == "*" || s == "?" =
info id 2035 "Use ./*glob* or -- *glob* so names with dashes won't become options." info id 2035 "Use ./*glob* or -- *glob* so names with dashes won't become options."