Don't warn about grep pattern issues when using -F.
This commit is contained in:
parent
41176c23a6
commit
128d5d6013
|
@ -93,7 +93,7 @@ oversimplify token =
|
||||||
(T_Annotation _ _ s) -> oversimplify s
|
(T_Annotation _ _ s) -> oversimplify s
|
||||||
-- Workaround for let "foo = bar" parsing
|
-- Workaround for let "foo = bar" parsing
|
||||||
(TA_Sequence _ [TA_Expansion _ v]) -> concatMap oversimplify v
|
(TA_Sequence _ [TA_Expansion _ v]) -> concatMap oversimplify v
|
||||||
otherwise -> []
|
_ -> []
|
||||||
|
|
||||||
|
|
||||||
-- Turn a SimpleCommand foo -avz --bar=baz into args "a", "v", "z", "bar",
|
-- Turn a SimpleCommand foo -avz --bar=baz into args "a", "v", "z", "bar",
|
||||||
|
@ -115,6 +115,9 @@ getAllFlags = getFlagsUntil (== "--")
|
||||||
-- Get all flags in a BSD way, up until first non-flag argument or --
|
-- Get all flags in a BSD way, up until first non-flag argument or --
|
||||||
getLeadingFlags = getFlagsUntil (\x -> x == "--" || (not $ "-" `isPrefixOf` x))
|
getLeadingFlags = getFlagsUntil (\x -> x == "--" || (not $ "-" `isPrefixOf` x))
|
||||||
|
|
||||||
|
-- Check if a command has a flag.
|
||||||
|
hasFlag cmd str = str `elem` (map snd $ getAllFlags cmd)
|
||||||
|
|
||||||
|
|
||||||
-- Given a T_DollarBraced, return a simplified version of the string contents.
|
-- Given a T_DollarBraced, return a simplified version of the string contents.
|
||||||
bracedString (T_DollarBraced _ l) = concat $ oversimplify l
|
bracedString (T_DollarBraced _ l) = concat $ oversimplify l
|
||||||
|
|
|
@ -194,23 +194,27 @@ prop_checkGrepRe8 = verify checkGrepRe "ls | grep foo*.jpg"
|
||||||
prop_checkGrepRe9 = verifyNot checkGrepRe "grep '[0-9]*' file"
|
prop_checkGrepRe9 = verifyNot checkGrepRe "grep '[0-9]*' file"
|
||||||
prop_checkGrepRe10= verifyNot checkGrepRe "grep '^aa*' file"
|
prop_checkGrepRe10= verifyNot checkGrepRe "grep '^aa*' file"
|
||||||
prop_checkGrepRe11= verifyNot checkGrepRe "grep --include=*.png foo"
|
prop_checkGrepRe11= verifyNot checkGrepRe "grep --include=*.png foo"
|
||||||
|
prop_checkGrepRe12= verifyNot checkGrepRe "grep -F 'Foo*' file"
|
||||||
|
|
||||||
checkGrepRe = CommandCheck (Basename "grep") (f . arguments) where
|
checkGrepRe = CommandCheck (Basename "grep") check where
|
||||||
|
check cmd = f cmd (arguments cmd)
|
||||||
-- --regex=*(extglob) doesn't work. Fixme?
|
-- --regex=*(extglob) doesn't work. Fixme?
|
||||||
skippable (Just s) = not ("--regex=" `isPrefixOf` s) && "-" `isPrefixOf` s
|
skippable (Just s) = not ("--regex=" `isPrefixOf` s) && "-" `isPrefixOf` s
|
||||||
skippable _ = False
|
skippable _ = False
|
||||||
f [] = return ()
|
f _ [] = return ()
|
||||||
f (x:r) | skippable (getLiteralStringExt (const $ return "_") x) = f r
|
f cmd (x:r) | skippable (getLiteralStringExt (const $ return "_") x) = f cmd r
|
||||||
f (re:_) = do
|
f cmd (re:_) = do
|
||||||
when (isGlob re) $
|
when (isGlob re) $
|
||||||
warn (getId re) 2062 "Quote the grep pattern so the shell won't interpret it."
|
warn (getId re) 2062 "Quote the grep pattern so the shell won't interpret it."
|
||||||
let string = concat $ oversimplify re
|
|
||||||
if isConfusedGlobRegex string then
|
unless (cmd `hasFlag` "F") $ do
|
||||||
warn (getId re) 2063 "Grep uses regex, but this looks like a glob."
|
let string = concat $ oversimplify re
|
||||||
else potentially $ do
|
if isConfusedGlobRegex string then
|
||||||
char <- getSuspiciousRegexWildcard string
|
warn (getId re) 2063 "Grep uses regex, but this looks like a glob."
|
||||||
return $ info (getId re) 2022 $
|
else potentially $ do
|
||||||
"Note that unlike globs, " ++ [char] ++ "* here matches '" ++ [char, char, char] ++ "' but not '" ++ wordStartingWith char ++ "'."
|
char <- getSuspiciousRegexWildcard string
|
||||||
|
return $ info (getId re) 2022 $
|
||||||
|
"Note that unlike globs, " ++ [char] ++ "* here matches '" ++ [char, char, char] ++ "' but not '" ++ wordStartingWith char ++ "'."
|
||||||
|
|
||||||
wordStartingWith c =
|
wordStartingWith c =
|
||||||
head . filter ([c] `isPrefixOf`) $ candidates
|
head . filter ([c] `isPrefixOf`) $ candidates
|
||||||
|
|
Loading…
Reference in New Issue