diff options
author | Vidar Holen <vidar@vidarholen.net> | 2023-04-30 14:37:37 -0700 |
---|---|---|
committer | Vidar Holen <vidar@vidarholen.net> | 2023-04-30 14:49:10 -0700 |
commit | 46b678fca8f8aac035d04e676f77f1a92f6742f4 (patch) | |
tree | 3e003729f65a33eaaf93e300d7626c3fb05f1998 | |
parent | 3342902d9a354c71ba72a939af82d535f043d079 (diff) |
Minor fixes to POSIX read without variable check
-rw-r--r-- | src/ShellCheck/Checks/ShellSupport.hs | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/ShellCheck/Checks/ShellSupport.hs b/src/ShellCheck/Checks/ShellSupport.hs index eda6882..cf8acc9 100644 --- a/src/ShellCheck/Checks/ShellSupport.hs +++ b/src/ShellCheck/Checks/ShellSupport.hs @@ -188,6 +188,7 @@ prop_checkBashisms100 = verify checkBashisms "read -r" prop_checkBashisms101 = verify checkBashisms "read" prop_checkBashisms102 = verifyNot checkBashisms "read -r foo" prop_checkBashisms103 = verifyNot checkBashisms "read foo" +prop_checkBashisms104 = verifyNot checkBashisms "read ''" checkBashisms = ForShell [Sh, Dash] $ \t -> do params <- ask kludge params t @@ -288,13 +289,6 @@ checkBashisms = ForShell [Sh, Dash] $ \t -> do argString = concat $ oversimplify arg flagRegex = mkRegex "^-[eEsn]+$" - bashism t@(T_SimpleCommand _ _ (cmd:args)) - | t `isCommand` "read" && length (onlyNames args) == 0 = - warnMsg (getId cmd) 3061 "read without a variable is" - where - notFlag arg = head (concat $ oversimplify arg) /= '-' - onlyNames = filter (notFlag) - bashism t@(T_SimpleCommand _ _ (cmd:arg:_)) | getLiteralString cmd == Just "exec" && "-" `isPrefixOf` concat (oversimplify arg) = warnMsg (getId arg) 3038 "exec flags are" @@ -390,6 +384,9 @@ checkBashisms = ForShell [Sh, Dash] $ \t -> do let literal = onlyLiteralString format guard $ "%q" `isInfixOf` literal return $ warnMsg (getId format) 3050 "printf %q is" + + when (name == "read" && all isFlag rest) $ + warnMsg (getId cmd) 3061 "read without a variable is" where unsupportedCommands = [ "let", "caller", "builtin", "complete", "compgen", "declare", "dirs", "disown", |