diff --git a/hadolint.cabal b/hadolint.cabal
--- a/hadolint.cabal
+++ b/hadolint.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: c21bd56e27b146d3a8ede82b69ed4a592a00e364a49e159607b05fc414cb1609
+-- hash: f7ed30bdbbcff79f1034336129985743db40eb1859e0c84f7567b0978c70e535
 
 name:           hadolint
-version:        1.6.3
+version:        1.6.4
 synopsis:       Dockerfile Linter JavaScript API
 description:    A smarter Dockerfile linter that helps you build best practice Docker images.
 category:       Development
diff --git a/src/Hadolint/Formatter/Checkstyle.hs b/src/Hadolint/Formatter/Checkstyle.hs
--- a/src/Hadolint/Formatter/Checkstyle.hs
+++ b/src/Hadolint/Formatter/Checkstyle.hs
@@ -64,7 +64,9 @@
         attr "message" msg <>
         attr "source" source <>
         "/>"
-    fileName = file (head checks)
+    fileName = case checks of
+      [] -> ""
+      h:_ -> file h
 
 attr name value = Builder.string8 name <> "='" <> Builder.string8 (escape value) <> "' "
 
diff --git a/src/Hadolint/Rules.hs b/src/Hadolint/Rules.hs
--- a/src/Hadolint/Rules.hs
+++ b/src/Hadolint/Rules.hs
@@ -87,7 +87,8 @@
     rule dockerfile =
         [RuleCheck metadata (filename dockerfile) (-1) (f (map instruction dockerfile))]
     metadata = Metadata code severity message
-    filename dockerfile = sourcename $ head dockerfile
+    filename (inst:_) = sourcename inst
+    filename [] = ""
 
 -- Enforce rules on a dockerfile and return failed checks
 analyze :: [Rule] -> Dockerfile -> [RuleCheck]
@@ -216,7 +217,9 @@
     code = "DL3000"
     severity = ErrorC
     message = "Use absolute WORKDIR"
-    check (Workdir dir) = head dir == '$' || head dir == '/'
+    check (Workdir ('$':_)) = True
+    check (Workdir ('/':_)) = True
+    check (Workdir _) = False
     check _ = True
 
 hasNoMaintainer = dockerfileRule code severity message check
@@ -229,7 +232,7 @@
     isMaintainer _ = False
 
 -- Check if a command contains a program call in the Run instruction
-usingProgram prog args = or [head cmds == prog | cmds <- bashCommands args]
+usingProgram prog args = or [True | cmd:_ <- bashCommands args, cmd == prog]
 
 multipleCmds = dockerfileRule code severity message check
   where
@@ -271,7 +274,7 @@
     message =
         "For some bash commands it makes no sense running them in a Docker container like `ssh`, \
         \`vim`, `shutdown`, `service`, `ps`, `free`, `top`, `kill`, `mount`, `ifconfig`"
-    check (Run (Arguments args)) = head args `notElem` invalidCmds
+    check (Run (Arguments (arg:_))) = arg `notElem` invalidCmds
     check _ = True
     invalidCmds = ["ssh", "vim", "shutdown", "service", "ps", "free", "top", "kill", "mount"]
 
