diff --git a/blame-cache/src/main/java/com/google/gitiles/blame/BlameCache.java b/blame-cache/src/main/java/com/google/gitiles/blame/BlameCache.java
index d0c6fe5..415cbdb 100644
--- a/blame-cache/src/main/java/com/google/gitiles/blame/BlameCache.java
+++ b/blame-cache/src/main/java/com/google/gitiles/blame/BlameCache.java
@@ -22,12 +22,12 @@
 
 public interface BlameCache {
   /** @return the blame of a path at a given commit. */
-  public List<Region> get(Repository repo, ObjectId commitId, String path) throws IOException;
+  List<Region> get(Repository repo, ObjectId commitId, String path) throws IOException;
 
   /**
    * @return the last commit that modified a path, starting at the given
    *     commit.
    */
-  public ObjectId findLastCommit(Repository repo, ObjectId commitId, String path)
+  ObjectId findLastCommit(Repository repo, ObjectId commitId, String path)
       throws IOException;
 }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java
index 116bf29..a44aa96 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java
@@ -56,7 +56,7 @@
   private final ArchiveCommand.Format<?> format;
   private final String mimeType;
 
-  private ArchiveFormat(String mimeType, ArchiveCommand.Format<?> format) {
+  ArchiveFormat(String mimeType, ArchiveCommand.Format<?> format) {
     this.format = format;
     this.mimeType = mimeType;
     ArchiveCommand.registerFormat(getRegisteredName(), format);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
index 4027d91..429acae 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
@@ -55,7 +55,7 @@
 
 /** Format-independent data about a single commit. */
 class CommitData {
-  static enum Field {
+  enum Field {
     ABBREV_SHA,
     ARCHIVE_TYPE,
     ARCHIVE_URL,
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DateFormatter.java b/gitiles-servlet/src/main/java/com/google/gitiles/DateFormatter.java
index e7a2828..affe508 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DateFormatter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DateFormatter.java
@@ -26,7 +26,7 @@
 
 /** Date formatter similar in spirit to JGit's {@code GitDateFormatter}. */
 public class DateFormatter {
-  public static enum Format {
+  public enum Format {
     // Format strings should match org.eclipse.jgit.util.GitDateFormatter except
     // for the timezone suffix.
     DEFAULT("EEE MMM dd HH:mm:ss yyyy"),
@@ -36,7 +36,7 @@
     private final ThreadLocal<DateFormat> defaultFormat;
     private final ThreadLocal<DateFormat> fixedTzFormat;
 
-    private Format(String fmt) {
+    Format(String fmt) {
       this.fmt = fmt;
       this.defaultFormat = new ThreadLocal<>();
       this.fixedTzFormat = new ThreadLocal<>();
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java b/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java
index c78ea25..4eca18d 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java
@@ -64,7 +64,7 @@
 
   private final String mimeType;
 
-  private FormatType(String mimeType) {
+  FormatType(String mimeType) {
     this.mimeType = mimeType;
   }
 
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java
index 2977507..3b5427d 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java
@@ -34,7 +34,7 @@
 public interface GitilesAccess {
   /** Factory for per-request access. */
   public interface Factory {
-    public GitilesAccess forRequest(HttpServletRequest req);
+    GitilesAccess forRequest(HttpServletRequest req);
   }
 
   /**
@@ -52,7 +52,7 @@
    *         {@link org.eclipse.jgit.http.server.RepositoryFilter}).
    * @throws IOException if an error occurred.
    */
-  public Map<String, RepositoryDescription> listRepositories(
+  Map<String, RepositoryDescription> listRepositories(
       @Nullable String prefix, Set<String> branches)
       throws ServiceNotEnabledException, ServiceNotAuthorizedException, IOException;
 
@@ -61,21 +61,21 @@
    *     request, and supports {@link Object#equals(Object)} and
    *     {@link Object#hashCode()}. Never null.
    */
-  public Object getUserKey();
+  Object getUserKey();
 
   /** @return the repository name associated with the request. */
-  public String getRepositoryName();
+  String getRepositoryName();
 
   /**
    * @return the description attached to the repository of this request.
    * @throws IOException an error occurred reading the description string from
    *         the repository.
    */
-  public RepositoryDescription getRepositoryDescription() throws IOException;
+  RepositoryDescription getRepositoryDescription() throws IOException;
 
   /**
    * @return configuration to apply to the host/repository for this request.
    * @throws IOException an error occurred reading the configuration.
    */
-  public Config getConfig() throws IOException;
+  Config getConfig() throws IOException;
 }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
index 6308a76..53dddc9 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
@@ -35,7 +35,7 @@
    * should not be encoded, while almost any other non-alpha, non-numeric
    * character will be encoded using URL style encoding.
    */
-  public static final Function<String, String> NAME_ESCAPER =
+  Function<String, String> NAME_ESCAPER =
       new Function<String, String>() {
         @Override
         public String apply(String s) {
@@ -60,7 +60,7 @@
    * @param req request.
    * @return host name; may be null.
    */
-  public String getHostName(HttpServletRequest req);
+  String getHostName(HttpServletRequest req);
 
   /**
    * Return the base URL for git repositories on this host.
@@ -68,7 +68,7 @@
    * @param req request.
    * @return base URL for git repositories.
    */
-  public String getBaseGitUrl(HttpServletRequest req);
+  String getBaseGitUrl(HttpServletRequest req);
 
   /**
    * Return the base URL for Gerrit projects on this host.
@@ -77,5 +77,5 @@
    * @return base URL for Gerrit Code Review, or null if Gerrit is not
    *     configured.
    */
-  public String getBaseGerritUrl(HttpServletRequest req);
+  String getBaseGerritUrl(HttpServletRequest req);
 }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
index 22f395c..2d674f8 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
@@ -58,7 +58,7 @@
   private static final String DEFAULT_ARCHIVE_EXTENSION = ".tar.gz";
 
   /** All the possible view types supported in the application. */
-  public static enum Type {
+  public enum Type {
     HOST_INDEX,
     REPOSITORY_INDEX,
     REFS,
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
index 30470f8..1cba00c 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
@@ -95,7 +95,7 @@
   static final String AUTODIVE_PARAM = "autodive";
   static final String NO_AUTODIVE_VALUE = "0";
 
-  static enum FileType {
+  enum FileType {
     TREE(FileMode.TREE),
     SYMLINK(FileMode.SYMLINK),
     REGULAR_FILE(FileMode.REGULAR_FILE),
@@ -104,7 +104,7 @@
 
     private final FileMode mode;
 
-    private FileType(FileMode mode) {
+    FileType(FileMode mode) {
       this.mode = mode;
     }
 
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
index 63be2af..f434586 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
@@ -125,7 +125,7 @@
         return r - l;
       }
 
-      private final boolean isHead(Ref ref) {
+      private boolean isHead(Ref ref) {
         return ref != null && ref.getName().equals(headLeafName);
       }
     }.compound(RefComparator.INSTANCE);
