diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
index f62389b..bf0927b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
@@ -127,15 +127,15 @@
       mimeType = new MimeType(FileContentUtil.resolveContentType(
           state, key.file, FileMode.FILE, mimeType.toString()));
       FormatterProvider formatter = getFormatter(req, key, mimeType);
-      validateDiffMode(key, formatter, mimeType);
+      validateDiffMode(key);
 
       ProjectControl projectControl = projectControlFactory.validateFor(key.project);
-      String rev = getRevision(cfg,
+      String rev = getRevision(
           key.diffMode == DiffMode.NO_DIFF
               ? MoreObjects.firstNonNull(key.revision, cfg.getIndexRef())
               : key.revision,
           projectControl);
-      String revB = getRevision(cfg, key.revisionB, projectControl);
+      String revB = getRevision(key.revisionB, projectControl);
 
       Repository repo = repoManager.openRepository(key.project);
       try {
@@ -233,8 +233,7 @@
     }
   }
 
-  private static void validateDiffMode(ResourceKey key,
-      FormatterProvider formatter, MimeType mimeType)
+  private static void validateDiffMode(ResourceKey key)
       throws ResourceNotFoundException {
     if (key.diffMode != DiffMode.NO_DIFF && (key.revisionB == null)) {
       throw new ResourceNotFoundException();
@@ -282,7 +281,7 @@
     return "image".equals(mimeType.getMediaType());
   }
 
-  private String getRevision(XDocProjectConfig cfg, String revision,
+  private String getRevision(String revision,
       ProjectControl projectControl) throws ResourceNotFoundException,
       AuthException, IOException {
     if (revision == null) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/ZipFormatter.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/ZipFormatter.java
index 257ee9e..41a0edc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/ZipFormatter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/ZipFormatter.java
@@ -33,7 +33,6 @@
 
   @Inject
   ZipFormatter(
-      Formatters formatters,
       FormatterUtil formatterUtil,
       HtmlBuilder html) {
     this.util = formatterUtil;
