Added checks for tr a-z A-Z and [asdf]

This commit is contained in:
Vidar Holen 2012-11-27 00:28:47 -08:00
parent ba5bb488d1
commit 131b9f0517
1 changed files with 17 additions and 0 deletions

View File

@ -63,6 +63,7 @@ basicChecks = [
,checkOrNeq
,checkEcho
,checkConstantIfs
,checkTrAZ
]
modifyMap = modify
@ -447,6 +448,22 @@ checkPrintfVar = checkCommand "printf" f where
else return ()
prop_checkTrAZ1 = verify checkTrAZ "tr [a-f] [A-F]"
prop_checkTrAZ2 = verify checkTrAZ "tr 'a-z' 'A-Z'"
prop_checkTrAZ3 = verifyNot checkTrAZ "tr -d '[:lower:]'"
prop_checkTrAZ4 = verifyNot checkTrAZ "ls [a-z]"
checkTrAZ = checkCommand "tr" (mapM_ f)
where
f word = case getLiteralString word of
Just "a-z" -> info (getId word) "Use '[:lower:]' to support accents and foreign alphabets."
Just "A-Z" -> info (getId word) "Use '[:upper:]' to support accents and foreign alphabets."
Just s -> unless ("[:" `isPrefixOf` s) $
when ("[" `isPrefixOf` s && "]" `isSuffixOf` s && (length s > 2)) $
info (getId word) "Don't use [] around ranges in tr, it replaces literal square brackets."
Nothing -> return ()
--- Subshell detection
prop_subshellAssignmentCheck = verifyFull subshellAssignmentCheck "cat foo | while read bar; do a=$bar; done; echo \"$a\""