-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Shell script analysis tool
--
-- The goals of ShellCheck are:
--
--
-- - To point out and clarify typical beginner's syntax issues, that
-- causes a shell to give cryptic error messages.
-- - To point out and clarify typical intermediate level semantic
-- problems, that causes a shell to behave strangely and
-- counter-intuitively.
-- - To point out subtle caveats, corner cases and pitfalls, that may
-- cause an advanced user's otherwise working script to fail under future
-- circumstances.
--
@package ShellCheck
@version 0.6.0
module ShellCheck.Regex
mkRegex :: String -> Regex
matches :: String -> Regex -> Bool
matchRegex :: Regex -> String -> Maybe [String]
matchAllStrings :: Regex -> String -> [String]
matchAllSubgroups :: Regex -> String -> [[String]]
subRegex :: Regex -> String -> String -> String
splitOn :: String -> Regex -> [String]
module ShellCheck.AST
newtype Id
Id :: Int -> Id
data Quoted
Quoted :: Quoted
Unquoted :: Quoted
data Dashed
Dashed :: Dashed
Undashed :: Dashed
data AssignmentMode
Assign :: AssignmentMode
Append :: AssignmentMode
newtype FunctionKeyword
FunctionKeyword :: Bool -> FunctionKeyword
newtype FunctionParentheses
FunctionParentheses :: Bool -> FunctionParentheses
data CaseType
CaseBreak :: CaseType
CaseFallThrough :: CaseType
CaseContinue :: CaseType
newtype Root
Root :: Token -> Root
data Token
TA_Binary :: Id -> String -> Token -> Token -> Token
TA_Assignment :: Id -> String -> Token -> Token -> Token
TA_Variable :: Id -> String -> [Token] -> Token
TA_Expansion :: Id -> [Token] -> Token
TA_Sequence :: Id -> [Token] -> Token
TA_Trinary :: Id -> Token -> Token -> Token -> Token
TA_Unary :: Id -> String -> Token -> Token
TC_And :: Id -> ConditionType -> String -> Token -> Token -> Token
TC_Binary :: Id -> ConditionType -> String -> Token -> Token -> Token
TC_Group :: Id -> ConditionType -> Token -> Token
TC_Nullary :: Id -> ConditionType -> Token -> Token
TC_Or :: Id -> ConditionType -> String -> Token -> Token -> Token
TC_Unary :: Id -> ConditionType -> String -> Token -> Token
TC_Empty :: Id -> ConditionType -> Token
T_AND_IF :: Id -> Token
T_AndIf :: Id -> Token -> Token -> Token
T_Arithmetic :: Id -> Token -> Token
T_Array :: Id -> [Token] -> Token
T_IndexedElement :: Id -> [Token] -> Token -> Token
T_UnparsedIndex :: Id -> SourcePos -> String -> Token
T_Assignment :: Id -> AssignmentMode -> String -> [Token] -> Token -> Token
T_Backgrounded :: Id -> Token -> Token
T_Backticked :: Id -> [Token] -> Token
T_Bang :: Id -> Token
T_Banged :: Id -> Token -> Token
T_BraceExpansion :: Id -> [Token] -> Token
T_BraceGroup :: Id -> [Token] -> Token
T_CLOBBER :: Id -> Token
T_Case :: Id -> Token
T_CaseExpression :: Id -> Token -> [(CaseType, [Token], [Token])] -> Token
T_Condition :: Id -> ConditionType -> Token -> Token
T_DGREAT :: Id -> Token
T_DLESS :: Id -> Token
T_DLESSDASH :: Id -> Token
T_DSEMI :: Id -> Token
T_Do :: Id -> Token
T_DollarArithmetic :: Id -> Token -> Token
T_DollarBraced :: Id -> Token -> Token
T_DollarBracket :: Id -> Token -> Token
T_DollarDoubleQuoted :: Id -> [Token] -> Token
T_DollarExpansion :: Id -> [Token] -> Token
T_DollarSingleQuoted :: Id -> String -> Token
T_DollarBraceCommandExpansion :: Id -> [Token] -> Token
T_Done :: Id -> Token
T_DoubleQuoted :: Id -> [Token] -> Token
T_EOF :: Id -> Token
T_Elif :: Id -> Token
T_Else :: Id -> Token
T_Esac :: Id -> Token
T_Extglob :: Id -> String -> [Token] -> Token
T_FdRedirect :: Id -> String -> Token -> Token
T_Fi :: Id -> Token
T_For :: Id -> Token
T_ForArithmetic :: Id -> Token -> Token -> Token -> [Token] -> Token
T_ForIn :: Id -> String -> [Token] -> [Token] -> Token
T_Function :: Id -> FunctionKeyword -> FunctionParentheses -> String -> Token -> Token
T_GREATAND :: Id -> Token
T_Glob :: Id -> String -> Token
T_Greater :: Id -> Token
T_HereDoc :: Id -> Dashed -> Quoted -> String -> [Token] -> Token
T_HereString :: Id -> Token -> Token
T_If :: Id -> Token
T_IfExpression :: Id -> [([Token], [Token])] -> [Token] -> Token
T_In :: Id -> Token
T_IoFile :: Id -> Token -> Token -> Token
T_IoDuplicate :: Id -> Token -> String -> Token
T_LESSAND :: Id -> Token
T_LESSGREAT :: Id -> Token
T_Lbrace :: Id -> Token
T_Less :: Id -> Token
T_Literal :: Id -> String -> Token
T_Lparen :: Id -> Token
T_NEWLINE :: Id -> Token
T_NormalWord :: Id -> [Token] -> Token
T_OR_IF :: Id -> Token
T_OrIf :: Id -> Token -> Token -> Token
T_ParamSubSpecialChar :: Id -> String -> Token
T_Pipeline :: Id -> [Token] -> [Token] -> Token
T_ProcSub :: Id -> String -> [Token] -> Token
T_Rbrace :: Id -> Token
T_Redirecting :: Id -> [Token] -> Token -> Token
T_Rparen :: Id -> Token
T_Script :: Id -> String -> [Token] -> Token
T_Select :: Id -> Token
T_SelectIn :: Id -> String -> [Token] -> [Token] -> Token
T_Semi :: Id -> Token
T_SimpleCommand :: Id -> [Token] -> [Token] -> Token
T_SingleQuoted :: Id -> String -> Token
T_Subshell :: Id -> [Token] -> Token
T_Then :: Id -> Token
T_Until :: Id -> Token
T_UntilExpression :: Id -> [Token] -> [Token] -> Token
T_While :: Id -> Token
T_WhileExpression :: Id -> [Token] -> [Token] -> Token
T_Annotation :: Id -> [Annotation] -> Token -> Token
T_Pipe :: Id -> String -> Token
T_CoProc :: Id -> Maybe String -> Token -> Token
T_CoProcBody :: Id -> Token -> Token
T_Include :: Id -> Token -> Token
T_SourceCommand :: Id -> Token -> Token -> Token
data Annotation
DisableComment :: Integer -> Annotation
SourceOverride :: String -> Annotation
ShellOverride :: String -> Annotation
data ConditionType
DoubleBracket :: ConditionType
SingleBracket :: ConditionType
tokenEquals :: Token -> Token -> Bool
analyze :: Monad m => (Token -> m ()) -> (Token -> m ()) -> (Token -> m Token) -> Token -> m Token
getId :: Token -> Id
blank :: Monad m => Token -> m ()
doAnalysis :: Monad m => (Token -> m ()) -> Token -> m Token
doStackAnalysis :: Monad m => (Token -> m ()) -> (Token -> m ()) -> Token -> m Token
doTransform :: (Token -> Token) -> Token -> Token
instance GHC.Show.Show ShellCheck.AST.Token
instance GHC.Classes.Eq ShellCheck.AST.ConditionType
instance GHC.Show.Show ShellCheck.AST.ConditionType
instance GHC.Classes.Eq ShellCheck.AST.Annotation
instance GHC.Show.Show ShellCheck.AST.Annotation
instance GHC.Classes.Eq ShellCheck.AST.CaseType
instance GHC.Show.Show ShellCheck.AST.CaseType
instance GHC.Classes.Eq ShellCheck.AST.FunctionParentheses
instance GHC.Show.Show ShellCheck.AST.FunctionParentheses
instance GHC.Classes.Eq ShellCheck.AST.FunctionKeyword
instance GHC.Show.Show ShellCheck.AST.FunctionKeyword
instance GHC.Classes.Eq ShellCheck.AST.AssignmentMode
instance GHC.Show.Show ShellCheck.AST.AssignmentMode
instance GHC.Classes.Eq ShellCheck.AST.Dashed
instance GHC.Show.Show ShellCheck.AST.Dashed
instance GHC.Classes.Eq ShellCheck.AST.Quoted
instance GHC.Show.Show ShellCheck.AST.Quoted
instance GHC.Classes.Ord ShellCheck.AST.Id
instance GHC.Classes.Eq ShellCheck.AST.Id
instance GHC.Show.Show ShellCheck.AST.Id
instance GHC.Classes.Eq ShellCheck.AST.Token
module ShellCheck.Interface
newtype SystemInterface m
SystemInterface :: (String -> m (Either ErrorMessage String)) -> SystemInterface m
[siReadFile] :: SystemInterface m -> String -> m (Either ErrorMessage String)
data CheckSpec
data CheckResult
data ParseSpec
data ParseResult
data AnalysisSpec
data AnalysisResult
data FormatterOptions
data Shell
Ksh :: Shell
Sh :: Shell
Bash :: Shell
Dash :: Shell
data ExecutionMode
Executed :: ExecutionMode
Sourced :: ExecutionMode
type ErrorMessage = String
type Code = Integer
data Severity
ErrorC :: Severity
WarningC :: Severity
InfoC :: Severity
StyleC :: Severity
data Position
data Comment
data PositionedComment
data ColorOption
ColorAuto :: ColorOption
ColorAlways :: ColorOption
ColorNever :: ColorOption
data TokenComment
emptyCheckResult :: CheckResult
newParseResult :: ParseResult
newAnalysisSpec :: Token -> AnalysisSpec
newAnalysisResult :: AnalysisResult
newFormatterOptions :: FormatterOptions
newPosition :: Position
newTokenComment :: TokenComment
mockedSystemInterface :: [(String, String)] -> SystemInterface Identity
newParseSpec :: ParseSpec
emptyCheckSpec :: CheckSpec
newPositionedComment :: PositionedComment
newComment :: Comment
instance GHC.Show.Show ShellCheck.Interface.ColorOption
instance GHC.Classes.Eq ShellCheck.Interface.ColorOption
instance GHC.Classes.Ord ShellCheck.Interface.ColorOption
instance GHC.Classes.Eq ShellCheck.Interface.TokenComment
instance GHC.Show.Show ShellCheck.Interface.TokenComment
instance GHC.Classes.Eq ShellCheck.Interface.CheckResult
instance GHC.Show.Show ShellCheck.Interface.CheckResult
instance GHC.Classes.Eq ShellCheck.Interface.ParseResult
instance GHC.Show.Show ShellCheck.Interface.ParseResult
instance GHC.Classes.Eq ShellCheck.Interface.PositionedComment
instance GHC.Show.Show ShellCheck.Interface.PositionedComment
instance GHC.Classes.Eq ShellCheck.Interface.Comment
instance GHC.Show.Show ShellCheck.Interface.Comment
instance GHC.Classes.Eq ShellCheck.Interface.Position
instance GHC.Show.Show ShellCheck.Interface.Position
instance GHC.Classes.Eq ShellCheck.Interface.CheckSpec
instance GHC.Show.Show ShellCheck.Interface.CheckSpec
instance GHC.Classes.Ord ShellCheck.Interface.Severity
instance GHC.Classes.Eq ShellCheck.Interface.Severity
instance GHC.Show.Show ShellCheck.Interface.Severity
instance GHC.Classes.Eq ShellCheck.Interface.ExecutionMode
instance GHC.Show.Show ShellCheck.Interface.ExecutionMode
instance GHC.Classes.Eq ShellCheck.Interface.ParseSpec
instance GHC.Show.Show ShellCheck.Interface.ParseSpec
instance GHC.Classes.Eq ShellCheck.Interface.Shell
instance GHC.Show.Show ShellCheck.Interface.Shell
module ShellCheck.Data
shellcheckVersion :: String
internalVariables :: [[Char]]
variablesWithoutSpaces :: [[Char]]
arrayVariables :: [[Char]]
commonCommands :: [[Char]]
nonReadingCommands :: [[Char]]
sampleWords :: [[Char]]
binaryTestOps :: [[Char]]
unaryTestOps :: [[Char]]
shellForExecutable :: String -> Maybe Shell
module ShellCheck.Formatter.Format
data Formatter
Formatter :: IO () -> (CheckResult -> SystemInterface IO -> IO ()) -> (FilePath -> ErrorMessage -> IO ()) -> IO () -> Formatter
[header] :: Formatter -> IO ()
[onResult] :: Formatter -> CheckResult -> SystemInterface IO -> IO ()
[onFailure] :: Formatter -> FilePath -> ErrorMessage -> IO ()
[footer] :: Formatter -> IO ()
sourceFile :: PositionedComment -> String
lineNo :: PositionedComment -> Integer
endLineNo :: PositionedComment -> Integer
colNo :: PositionedComment -> Integer
endColNo :: PositionedComment -> Integer
codeNo :: PositionedComment -> Code
messageText :: PositionedComment -> String
severityText :: PositionedComment -> String
makeNonVirtual :: [PositionedComment] -> [Char] -> [PositionedComment]
module ShellCheck.Formatter.TTY
format :: FormatterOptions -> IO Formatter
module ShellCheck.Formatter.JSON
format :: IO Formatter
instance Data.Aeson.Types.ToJSON.ToJSON ShellCheck.Interface.PositionedComment
module ShellCheck.Formatter.GCC
format :: IO Formatter
module ShellCheck.Formatter.CheckStyle
format :: IO Formatter
module ShellCheck.ASTLib
isLoop :: Token -> Bool
willSplit :: Token -> Bool
isGlob :: Token -> Bool
isConstant :: Token -> Bool
isEmpty :: Token -> Bool
oversimplify :: Token -> [[Char]]
getFlagsUntil :: ([Char] -> Bool) -> Token -> [(Token, [Char])]
getAllFlags :: Token -> [(Token, String)]
getLeadingFlags :: Token -> [(Token, [Char])]
hasFlag :: Token -> String -> Bool
isFlag :: Token -> Bool
isUnquotedFlag :: Token -> Bool
bracedString :: Token -> [Char]
isArrayExpansion :: Token -> Bool
mayBecomeMultipleArgs :: Token -> Bool
willBecomeMultipleArgs :: Token -> Bool
willConcatInAssignment :: Token -> Bool
getLiteralString :: Token -> Maybe String
onlyLiteralString :: Token -> String
getUnquotedLiteral :: Token -> Maybe [Char]
getTrailingUnquotedLiteral :: Token -> Maybe Token
getLeadingUnquotedString :: Token -> Maybe String
getGlobOrLiteralString :: Token -> Maybe String
getLiteralStringExt :: (Token -> Maybe String) -> Token -> Maybe String
isLiteral :: Token -> Bool
getWordParts :: Token -> [Token]
braceExpand :: Token -> [Token]
getCommand :: Token -> Maybe Token
getCommandName :: Token -> Maybe String
getCommandTokenOrThis :: Token -> Token
getCommandNameAndToken :: Token -> (Maybe String, Token)
getCommandNameFromExpansion :: Token -> Maybe String
getCommandBasename :: Token -> Maybe [Char]
isAssignment :: Token -> Bool
isOnlyRedirection :: Token -> Bool
isFunction :: Token -> Bool
isBraceExpansion :: Token -> Bool
getCommandSequences :: Token -> [[Token]]
getAssociativeArrays :: Token -> [String]
data PseudoGlob
PGAny :: PseudoGlob
PGMany :: PseudoGlob
PGChar :: Char -> PseudoGlob
wordToPseudoGlob :: Token -> Maybe [PseudoGlob]
wordToExactPseudoGlob :: Token -> Maybe [PseudoGlob]
simplifyPseudoGlob :: [PseudoGlob] -> [PseudoGlob]
pseudoGlobsCanOverlap :: [PseudoGlob] -> [PseudoGlob] -> Bool
pseudoGlobIsSuperSetof :: [PseudoGlob] -> [PseudoGlob] -> Bool
wordsCanBeEqual :: Token -> Token -> Bool
isQuoteableExpansion :: Token -> Bool
instance GHC.Show.Show ShellCheck.ASTLib.PseudoGlob
instance GHC.Classes.Eq ShellCheck.ASTLib.PseudoGlob
module ShellCheck.Parser
parseScript :: Monad m => SystemInterface m -> ParseSpec -> m ParseResult
runTests :: IO Bool
instance GHC.Show.Show ShellCheck.Parser.HereDocContext
instance GHC.Show.Show ShellCheck.Parser.Context
instance GHC.Classes.Eq ShellCheck.Parser.ParseNote
instance GHC.Show.Show ShellCheck.Parser.ParseNote
instance GHC.Classes.Eq ShellCheck.Parser.Note
instance GHC.Show.Show ShellCheck.Parser.Note
module ShellCheck.AnalyzerLib
type Analysis = AnalyzerM ()
type AnalyzerM a = RWS Parameters [TokenComment] Cache a
nullCheck :: () => b -> RWST Parameters [TokenComment] Cache Identity ()
data Checker
Checker :: (Root -> Analysis) -> (Token -> Analysis) -> Checker
[perScript] :: Checker -> Root -> Analysis
[perToken] :: Checker -> Token -> Analysis
runChecker :: Parameters -> Checker -> [TokenComment]
composeAnalyzers :: (a -> Analysis) -> (a -> Analysis) -> a -> Analysis
data Parameters
Parameters :: Bool -> Bool -> [StackData] -> Map Id Token -> Shell -> Bool -> Token -> Parameters
[hasLastpipe] :: Parameters -> Bool
[hasSetE] :: Parameters -> Bool
[variableFlow] :: Parameters -> [StackData]
[parentMap] :: Parameters -> Map Id Token
[shellType] :: Parameters -> Shell
[shellTypeSpecified] :: Parameters -> Bool
[rootNode] :: Parameters -> Token
data Cache
Cache :: Cache
data Scope
SubshellScope :: String -> Scope
NoneScope :: Scope
data StackData
StackScope :: Scope -> StackData
StackScopeEnd :: StackData
Assignment :: (Token, Token, String, DataType) -> StackData
Reference :: (Token, Token, String) -> StackData
data DataType
DataString :: DataSource -> DataType
DataArray :: DataSource -> DataType
data DataSource
SourceFrom :: [Token] -> DataSource
SourceExternal :: DataSource
SourceDeclaration :: DataSource
SourceInteger :: DataSource
SourceChecked :: DataSource
data VariableState
Dead :: Token -> String -> VariableState
Alive :: VariableState
defaultSpec :: Token -> AnalysisSpec
pScript :: [Char] -> Maybe Token
producesComments :: Checker -> String -> Maybe Bool
makeComment :: Severity -> Id -> Code -> String -> TokenComment
addComment :: MonadWriter [a] m => a -> m ()
warn :: MonadWriter [TokenComment] m => Id -> Code -> String -> m ()
err :: MonadWriter [TokenComment] m => Id -> Code -> String -> m ()
info :: MonadWriter [TokenComment] m => Id -> Code -> String -> m ()
style :: MonadWriter [TokenComment] m => Id -> Code -> String -> m ()
makeParameters :: AnalysisSpec -> Parameters
containsSetE :: Token -> Bool
containsLastpipe :: Token -> Bool
prop_determineShell0 :: Bool
prop_determineShell1 :: Bool
prop_determineShell2 :: Bool
prop_determineShell3 :: Bool
prop_determineShell4 :: Bool
prop_determineShell5 :: Bool
prop_determineShell6 :: Bool
prop_determineShell7 :: Bool
determineShell :: Token -> Shell
executableFromShebang :: String -> String
getParentTree :: Token -> Map Id Token
getTokenMap :: Token -> Map Id Token
isStrictlyQuoteFree :: Map Id Token -> Token -> Bool
isQuoteFree :: Map Id Token -> Token -> Bool
isQuoteFreeNode :: Bool -> Map Id Token -> Token -> Bool
isParamTo :: Map Id Token -> String -> Token -> Bool
getClosestCommand :: Map Id Token -> Token -> Maybe Token
getClosestCommandM :: MonadReader Parameters m => Token -> m (Maybe Token)
usedAsCommandName :: Map Id Token -> Token -> Bool
getPath :: Map Id Token -> Token -> [Token]
getPathM :: MonadReader Parameters m => Token -> m [Token]
isParentOf :: Map Id Token -> Token -> Token -> Bool
parents :: Parameters -> Token -> [Token]
pathTo :: MonadReader Parameters m => Token -> m [Token]
findFirst :: (a -> Maybe Bool) -> [a] -> Maybe a
tokenIsJustCommandOutput :: Token -> Bool
getVariableFlow :: Parameters -> Token -> [StackData]
leadType :: Parameters -> Token -> Scope
getModifiedVariables :: Token -> [(Token, Token, String, DataType)]
isClosingFileOp :: Token -> Bool
getReferencedVariableCommand :: Token -> [(Token, Token, String)]
getModifiedVariableCommand :: Token -> [(Token, Token, [Char], DataType)]
getIndexReferences :: String -> [String]
prop_getOffsetReferences1 :: Bool
prop_getOffsetReferences2 :: Bool
prop_getOffsetReferences3 :: Bool
prop_getOffsetReferences4 :: Bool
getOffsetReferences :: String -> [String]
getReferencedVariables :: Map Id Token -> Token -> [(Token, Token, [Char])]
dataTypeFrom :: (DataSource -> DataType) -> Token -> DataType
isCommand :: Token -> String -> Bool
isUnqualifiedCommand :: Token -> String -> Bool
isCommandMatch :: Token -> (String -> Bool) -> Bool
isConfusedGlobRegex :: String -> Bool
isVariableStartChar :: Char -> Bool
isVariableChar :: Char -> Bool
variableNameRegex :: Regex
prop_isVariableName1 :: Bool
prop_isVariableName2 :: Bool
prop_isVariableName3 :: Bool
isVariableName :: [Char] -> Bool
getVariablesFromLiteralToken :: Token -> [String]
prop_getVariablesFromLiteral1 :: Bool
getVariablesFromLiteral :: String -> [String]
prop_getBracedReference1 :: Bool
prop_getBracedReference2 :: Bool
prop_getBracedReference3 :: Bool
prop_getBracedReference4 :: Bool
prop_getBracedReference5 :: Bool
prop_getBracedReference6 :: Bool
prop_getBracedReference7 :: Bool
prop_getBracedReference8 :: Bool
prop_getBracedReference9 :: Bool
prop_getBracedReference10 :: Bool
prop_getBracedReference11 :: Bool
prop_getBracedReference12 :: Bool
prop_getBracedReference13 :: Bool
getBracedReference :: [Char] -> [Char]
prop_getBracedModifier1 :: Bool
prop_getBracedModifier2 :: Bool
prop_getBracedModifier3 :: Bool
getBracedModifier :: [Char] -> [Char]
potentially :: Monad m => Maybe (m ()) -> m ()
headOrDefault :: () => p -> [p] -> p
(!!!) :: () => [a] -> Int -> Maybe a
whenShell :: (MonadReader Parameters m, Foldable t) => t Shell -> m () -> m ()
filterByAnnotation :: AnalysisSpec -> Parameters -> [TokenComment] -> [TokenComment]
isCountingReference :: Token -> Bool
isQuotedAlternativeReference :: Token -> Bool
getGnuOpts :: String -> Token -> Maybe [(String, Token)]
getBsdOpts :: String -> Token -> Maybe [(String, Token)]
getOpts :: (Token -> [(Token, String)]) -> String -> Token -> Maybe [(String, Token)]
runTests :: IO Bool
instance GHC.Show.Show ShellCheck.AnalyzerLib.VariableState
instance GHC.Show.Show ShellCheck.AnalyzerLib.StackData
instance GHC.Show.Show ShellCheck.AnalyzerLib.DataType
instance GHC.Show.Show ShellCheck.AnalyzerLib.DataSource
instance GHC.Classes.Eq ShellCheck.AnalyzerLib.Scope
instance GHC.Show.Show ShellCheck.AnalyzerLib.Scope
instance GHC.Base.Semigroup ShellCheck.AnalyzerLib.Checker
instance GHC.Base.Monoid ShellCheck.AnalyzerLib.Checker
module ShellCheck.Checks.ShellSupport
checker :: Parameters -> Checker
runTests :: IO Bool
module ShellCheck.Checks.Commands
checker :: Parameters -> Checker
runTests :: IO Bool
instance GHC.Classes.Ord ShellCheck.Checks.Commands.CommandName
instance GHC.Classes.Eq ShellCheck.Checks.Commands.CommandName
module ShellCheck.Analytics
runAnalytics :: AnalysisSpec -> [TokenComment]
runTests :: IO Bool
module ShellCheck.Analyzer
analyzeScript :: AnalysisSpec -> AnalysisResult
module ShellCheck.Checker
checkScript :: Monad m => SystemInterface m -> CheckSpec -> m CheckResult
runTests :: IO Bool