diff --git a/.hgignore b/.hgignore
index d0d9f4898697549c6dfb0351856976c619947787..c845b48c74bd501a2e95f5b6e1a377492620f86d 100644
--- a/.hgignore
+++ b/.hgignore
@@ -83,3 +83,4 @@ agent/make/sa17.tar.gz
 R.tokens
 .tmp.unit.knucleotide.input
 *.o
+findbugs.html
diff --git a/mx.fastr/mx_fastr.py b/mx.fastr/mx_fastr.py
index 3c93d53678a6142c8d95ac07e8bcc53a93f3367b..485cd02336d168c764bd3d04df7335dbbf9db30e 100644
--- a/mx.fastr/mx_fastr.py
+++ b/mx.fastr/mx_fastr.py
@@ -82,17 +82,13 @@ def findbugs(args):
     assert exists(findbugsJar)
     nonTestProjects = [p for p in _fastr_suite.projects if not p.name.endswith('.test') and not p.native]
     outputDirs = [p.output_dir() for p in nonTestProjects]
-    findbugsResults = join(_fastr_suite.dir, 'findbugs.results')
+    findbugsResults = join(_fastr_suite.dir, 'findbugs.html')
 
-    cmd = ['-jar', findbugsJar, '-textui', '-low', '-maxRank', '15', '-exclude', join(_fastr_suite.mxDir, 'findbugs-exclude.xml')]
+    cmd = ['-jar', findbugsJar, '-low', '-maxRank', '15', '-exclude', join(_fastr_suite.mxDir, 'findbugs-exclude.xml'), '-html']
     if sys.stdout.isatty():
         cmd.append('-progress')
     cmd = cmd + ['-auxclasspath', mx.classpath([p.name for p in nonTestProjects]), '-output', findbugsResults, '-exitcode'] + args + outputDirs
     exitcode = mx.run_java(cmd, nonZeroIsFatal=False)
-    if exitcode != 0:
-        with open(findbugsResults) as fp:
-            mx.log(fp.read())
-    os.unlink(findbugsResults)
     return exitcode
 
 def _fastr_gate_body(args, tasks):