diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthTokenCipher.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthTokenCipher.java
index a8133dc..799617c 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthTokenCipher.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthTokenCipher.java
@@ -148,7 +148,8 @@
     if (nOfTokens != 2) {
       throw new IllegalStateException(
           String.format(
-              "The encrypted key is expected to contain 2 tokens (keyId:key), whereas it contains %d tokens",
+              "The encrypted key is expected to contain 2 tokens (keyId:key), whereas it contains"
+                  + " %d tokens",
               nOfTokens));
     }
     return tokens;
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/PasswordGenerator.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/PasswordGenerator.java
index 2f36425..7836086 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/PasswordGenerator.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/PasswordGenerator.java
@@ -57,7 +57,8 @@
       long length = passwordFile.length();
       if (length != PASSWORD_LENGTH_DEFAULT) {
         throw logErrorAndCreateRuntimeException(
-            "'%s' password file exists but has an invalid length of %d bytes. The expected length is %d bytes.",
+            "'%s' password file exists but has an invalid length of %d bytes. The expected length"
+                + " is %d bytes.",
             passwordFilePath, length, PASSWORD_LENGTH_DEFAULT);
       }
       return false;
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/InitGitHub.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/InitGitHub.java
index 894e1a5..00ec0bd 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/InitGitHub.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/InitGitHub.java
@@ -128,7 +128,8 @@
     if (maybeCurrentKeyId.isPresent()) {
       if (!ui.yesno(
           false,
-          "Current GitHub OAuth token cipher is configured under the %s key id. Do you want to configure a new one?",
+          "Current GitHub OAuth token cipher is configured under the %s key id. Do you want to"
+              + " configure a new one?",
           maybeCurrentKeyId.get())) {
         return;
       }
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java
index 810acd8..d1554c3 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java
@@ -96,7 +96,10 @@
       final RevCommit pullRequestCommit,
       final String pullRequestMessage,
       final String topic)
-      throws NoSuchChangeException, IOException, InvalidChangeOperationException, UpdateException,
+      throws NoSuchChangeException,
+          IOException,
+          InvalidChangeOperationException,
+          UpdateException,
           RestApiException {
     try (BatchUpdate bu =
         updateFactory.create(
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestImportJob.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestImportJob.java
index 6734e98..be8b7c0 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestImportJob.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestImportJob.java
@@ -203,15 +203,21 @@
   }
 
   private com.google.gerrit.entities.Account.Id getOrRegisterAccount(GitHubUser author)
-      throws BadRequestException, ResourceConflictException, UnprocessableEntityException,
-          IOException, ConfigInvalidException {
+      throws BadRequestException,
+          ResourceConflictException,
+          UnprocessableEntityException,
+          IOException,
+          ConfigInvalidException {
     return getOrRegisterAccount(author.login, author.name, author.email);
   }
 
   private com.google.gerrit.entities.Account.Id getOrRegisterAccount(
       String login, String name, String email)
-      throws BadRequestException, ResourceConflictException, UnprocessableEntityException,
-          IOException, ConfigInvalidException {
+      throws BadRequestException,
+          ResourceConflictException,
+          UnprocessableEntityException,
+          IOException,
+          ConfigInvalidException {
     Optional<ExternalId> gerritId = externalIdByScheme(ExternalId.SCHEME_GERRIT, login);
     if (gerritId.isPresent()) {
       return gerritId.get().accountId();
