diff --git a/java/com/google/gitiles/dev/DevServer.java b/java/com/google/gitiles/dev/DevServer.java
index f278239..f561c52 100644
--- a/java/com/google/gitiles/dev/DevServer.java
+++ b/java/com/google/gitiles/dev/DevServer.java
@@ -145,7 +145,8 @@
     }
 
     ServletContextHandler handler = new ServletContextHandler();
-    handler.setContextPath(MoreObjects.firstNonNull(cfg.getString("gitiles", null, "basePath"), ""));
+    handler.setContextPath(
+        MoreObjects.firstNonNull(cfg.getString("gitiles", null, "basePath"), ""));
     handler.addServlet(new ServletHolder(servlet), "/*");
     return handler;
   }
diff --git a/javatests/com/google/gitiles/LinkifierTest.java b/javatests/com/google/gitiles/LinkifierTest.java
index a51eccd..248cd40 100644
--- a/javatests/com/google/gitiles/LinkifierTest.java
+++ b/javatests/com/google/gitiles/LinkifierTest.java
@@ -104,19 +104,28 @@
     assertThat(l.linkify(REQ, "I0123456789"))
         .containsExactly(
             ImmutableMap.of(
-                "text", "I0123456789", "url", "http://test-host-review/path-prefix/#/q/I0123456789"))
+                "text",
+                "I0123456789",
+                "url",
+                "http://test-host-review/path-prefix/#/q/I0123456789"))
         .inOrder();
     assertThat(l.linkify(REQ, "Change-Id: I0123456789"))
         .containsExactly(
             ImmutableMap.of("text", "Change-Id: "),
             ImmutableMap.of(
-                "text", "I0123456789", "url", "http://test-host-review/path-prefix/#/q/I0123456789"))
+                "text",
+                "I0123456789",
+                "url",
+                "http://test-host-review/path-prefix/#/q/I0123456789"))
         .inOrder();
     assertThat(l.linkify(REQ, "Change-Id: I0123456789 exists"))
         .containsExactly(
             ImmutableMap.of("text", "Change-Id: "),
             ImmutableMap.of(
-                "text", "I0123456789", "url", "http://test-host-review/path-prefix/#/q/I0123456789"),
+                "text",
+                "I0123456789",
+                "url",
+                "http://test-host-review/path-prefix/#/q/I0123456789"),
             ImmutableMap.of("text", " exists"))
         .inOrder();
   }
@@ -149,7 +158,10 @@
                 "text", "http://my/url/I0123456789", "url", "http://my/url/I0123456789"),
             ImmutableMap.of("text", " is not change "),
             ImmutableMap.of(
-                "text", "I0123456789", "url", "http://test-host-review/path-prefix/#/q/I0123456789"))
+                "text",
+                "I0123456789",
+                "url",
+                "http://test-host-review/path-prefix/#/q/I0123456789"))
         .inOrder();
   }
 
diff --git a/javatests/com/google/gitiles/LogServletTest.java b/javatests/com/google/gitiles/LogServletTest.java
index 0072e9c..93bf80a 100644
--- a/javatests/com/google/gitiles/LogServletTest.java
+++ b/javatests/com/google/gitiles/LogServletTest.java
@@ -319,7 +319,7 @@
 
     String path = "/repo/+log/refs/heads/master/bar";
     FakeHttpServletResponse res =
-            buildResponse(path, "format=html" + "&n=" + 2 + "follow=1", SC_OK);
+        buildResponse(path, "format=html" + "&n=" + 2 + "follow=1", SC_OK);
 
     assertThat(res.getActualBodyString()).contains(c1.toObjectId().name());
     assertThat(res.getActualBodyString()).contains(c2.toObjectId().name());
@@ -359,16 +359,16 @@
 
   void enableAndWriteCommitGraph() throws Exception {
     repo.getRepository()
-            .getConfig()
-            .setBoolean(
-                    ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_COMMIT_GRAPH, true);
+        .getConfig()
+        .setBoolean(
+            ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_COMMIT_GRAPH, true);
     repo.getRepository()
-            .getConfig()
-            .setBoolean(
-                    ConfigConstants.CONFIG_COMMIT_GRAPH_SECTION,
-                    null,
-                    ConfigConstants.CONFIG_KEY_READ_CHANGED_PATHS,
-                    true);
+        .getConfig()
+        .setBoolean(
+            ConfigConstants.CONFIG_COMMIT_GRAPH_SECTION,
+            null,
+            ConfigConstants.CONFIG_KEY_READ_CHANGED_PATHS,
+            true);
     DfsGarbageCollector gc = new DfsGarbageCollector(repo.getRepository());
     gc.setWriteCommitGraph(true).setWriteBloomFilter(true).pack(NullProgressMonitor.INSTANCE);
   }
