From 128b1eae092e4ee9384c99a4ba72b9122fc17e89 Mon Sep 17 00:00:00 2001
From: "Z.J. van de Weg" <git@zjvandeweg.nl>
Date: Tue, 7 Feb 2017 15:16:46 +0100
Subject: [PATCH] Update Rubocop to ruby 2.3

---
 .rubocop.yml                                 |  2 +-
 app/controllers/projects/wikis_controller.rb |  2 +-
 app/mailers/notify.rb                        |  2 +-
 app/models/application_setting.rb            | 28 ++++++++------------
 app/models/concerns/issuable.rb              |  4 +--
 app/models/concerns/milestoneish.rb          |  2 +-
 app/models/group_milestone.rb                |  2 +-
 app/models/project.rb                        |  2 +-
 app/models/user.rb                           |  2 +-
 app/models/wiki_page.rb                      |  8 ++----
 app/services/create_tag_service.rb           |  2 +-
 app/services/delete_tag_service.rb           |  2 +-
 app/services/projects/create_service.rb      |  2 +-
 app/workers/authorized_projects_worker.rb    |  2 +-
 lib/api/branches.rb                          |  2 +-
 lib/api/entities.rb                          |  4 +--
 lib/gitlab/ci/config/entry/configurable.rb   |  2 +-
 lib/gitlab/email/message/repository_push.rb  |  4 +--
 lib/gitlab/git/blob_snippet.rb               |  2 +-
 lib/gitlab/metrics.rb                        |  6 ++---
 20 files changed, 35 insertions(+), 47 deletions(-)

diff --git a/.rubocop.yml b/.rubocop.yml
index cfff42e5c99..aa91b57d7b3 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -5,7 +5,7 @@ require:
 inherit_from: .rubocop_todo.yml
 
 AllCops:
-  TargetRubyVersion: 2.1
+  TargetRubyVersion: 2.3
   # Cop names are not d§splayed in offense messages by default. Change behavior
   # by overriding DisplayCopNames, or by giving the -D/--display-cop-names
   # option.
diff --git a/app/controllers/projects/wikis_controller.rb b/app/controllers/projects/wikis_controller.rb
index c3353446fd1..8e683931b2e 100644
--- a/app/controllers/projects/wikis_controller.rb
+++ b/app/controllers/projects/wikis_controller.rb
@@ -83,7 +83,7 @@ class Projects::WikisController < Projects::ApplicationController
 
   def destroy
     @page = @project_wiki.find_page(params[:id])
-    @page.delete if @page
+    @page&.delete
 
     redirect_to(
       namespace_project_wiki_path(@project.namespace, @project, :home),
diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb
index 0cd3456b4de..5b9226a6b81 100644
--- a/app/mailers/notify.rb
+++ b/app/mailers/notify.rb
@@ -151,7 +151,7 @@ class Notify < BaseMailer
     headers['In-Reply-To'] = message_id(model)
     headers['References'] = message_id(model)
 
-    headers[:subject].prepend('Re: ') if headers[:subject]
+    headers[:subject]&.prepend('Re: ')
 
     mail_thread(model, headers)
   end
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index 9a4557524c4..74b358d8c40 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -116,31 +116,25 @@ class ApplicationSetting < ActiveRecord::Base
             numericality: { only_integer: true, greater_than_or_equal_to: 0 }
 
   validates_each :restricted_visibility_levels do |record, attr, value|
-    unless value.nil?
-      value.each do |level|
-        unless Gitlab::VisibilityLevel.options.has_value?(level)
-          record.errors.add(attr, "'#{level}' is not a valid visibility level")
-        end
+    value&.each do |level|
+      unless Gitlab::VisibilityLevel.options.has_value?(level)
+        record.errors.add(attr, "'#{level}' is not a valid visibility level")
       end
     end
   end
 
   validates_each :import_sources do |record, attr, value|
-    unless value.nil?
-      value.each do |source|
-        unless Gitlab::ImportSources.options.has_value?(source)
-          record.errors.add(attr, "'#{source}' is not a import source")
-        end
+    value&.each do |source|
+      unless Gitlab::ImportSources.options.has_value?(source)
+        record.errors.add(attr, "'#{source}' is not a import source")
       end
     end
   end
 
   validates_each :disabled_oauth_sign_in_sources do |record, attr, value|
-    unless value.nil?
-      value.each do |source|
-        unless Devise.omniauth_providers.include?(source.to_sym)
-          record.errors.add(attr, "'#{source}' is not an OAuth sign-in source")
-        end
+    value&.each do |source|
+      unless Devise.omniauth_providers.include?(source.to_sym)
+        record.errors.add(attr, "'#{source}' is not an OAuth sign-in source")
       end
     end
   end
@@ -230,11 +224,11 @@ class ApplicationSetting < ActiveRecord::Base
   end
 
   def domain_whitelist_raw
-    self.domain_whitelist.join("\n") unless self.domain_whitelist.nil?
+    self.domain_whitelist&.join("\n")
   end
 
   def domain_blacklist_raw
-    self.domain_blacklist.join("\n") unless self.domain_blacklist.nil?
+    self.domain_blacklist&.join("\n")
   end
 
   def domain_whitelist_raw=(values)
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 3517969eabc..d1872dd931d 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -95,8 +95,8 @@ module Issuable
     def update_assignee_cache_counts
       # make sure we flush the cache for both the old *and* new assignees(if they exist)
       previous_assignee = User.find_by_id(assignee_id_was) if assignee_id_was
-      previous_assignee.update_cache_counts if previous_assignee
-      assignee.update_cache_counts if assignee
+      previous_assignee&.update_cache_counts
+      assignee&.update_cache_counts
     end
 
     # We want to use optimistic lock for cases when only title or description are involved
diff --git a/app/models/concerns/milestoneish.rb b/app/models/concerns/milestoneish.rb
index e9450dd0c26..f449229864d 100644
--- a/app/models/concerns/milestoneish.rb
+++ b/app/models/concerns/milestoneish.rb
@@ -73,7 +73,7 @@ module Milestoneish
   def memoize_per_user(user, method_name)
     @memoized ||= {}
     @memoized[method_name] ||= {}
-    @memoized[method_name][user.try!(:id)] ||= yield
+    @memoized[method_name][user&.id] ||= yield
   end
 
   # override in a class that includes this module to get a faster query
diff --git a/app/models/group_milestone.rb b/app/models/group_milestone.rb
index 7b6db2634b7..86d38e5468b 100644
--- a/app/models/group_milestone.rb
+++ b/app/models/group_milestone.rb
@@ -9,7 +9,7 @@ class GroupMilestone < GlobalMilestone
 
   def self.build(group, projects, title)
     super(projects, title).tap do |milestone|
-      milestone.group = group if milestone
+      milestone&.group = group
     end
   end
 
diff --git a/app/models/project.rb b/app/models/project.rb
index 0d286bfbaa8..05497933007 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -461,7 +461,7 @@ class Project < ActiveRecord::Base
   def reset_cache_and_import_attrs
     ProjectCacheWorker.perform_async(self.id)
 
-    self.import_data.destroy if self.import_data
+    self.import_data&.destroy
   end
 
   def import_url=(value)
diff --git a/app/models/user.rb b/app/models/user.rb
index 54f5388eb2c..15fe8084a9c 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -304,7 +304,7 @@ class User < ActiveRecord::Base
 
     def find_by_personal_access_token(token_string)
       personal_access_token = PersonalAccessToken.active.find_by_token(token_string) if token_string
-      personal_access_token.user if personal_access_token
+      personal_access_token&.user
     end
 
     # Returns a user for the given SSH key.
diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb
index c3de278f5b7..e93d0eab6d8 100644
--- a/app/models/wiki_page.rb
+++ b/app/models/wiki_page.rb
@@ -69,16 +69,12 @@ class WikiPage
 
   # The raw content of this page.
   def content
-    @attributes[:content] ||= if @page
-                                @page.text_data
-                              end
+    @attributes[:content] ||= @page&.text_data
   end
 
   # The processed/formatted content of this page.
   def formatted_content
-    @attributes[:formatted_content] ||= if @page
-                                          @page.formatted_data
-                                        end
+    @attributes[:formatted_content] ||= @page&.formatted_data
   end
 
   # The markup format for the page.
diff --git a/app/services/create_tag_service.rb b/app/services/create_tag_service.rb
index fe9353afeb8..6c75d1f04ff 100644
--- a/app/services/create_tag_service.rb
+++ b/app/services/create_tag_service.rb
@@ -4,7 +4,7 @@ class CreateTagService < BaseService
     return error('Tag name invalid') unless valid_tag
 
     repository = project.repository
-    message.strip! if message
+    message&.strip!
 
     new_tag = nil
 
diff --git a/app/services/delete_tag_service.rb b/app/services/delete_tag_service.rb
index 9d4bffb93e9..eb726cb04b1 100644
--- a/app/services/delete_tag_service.rb
+++ b/app/services/delete_tag_service.rb
@@ -9,7 +9,7 @@ class DeleteTagService < BaseService
 
     if repository.rm_tag(current_user, tag_name)
       release = project.releases.find_by(tag: tag_name)
-      release.destroy if release
+      release&.destroy
 
       push_data = build_push_data(tag)
       EventCreateService.new.push(project, current_user, push_data)
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index c7cce0c55b9..6dc3d8c2416 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -97,7 +97,7 @@ module Projects
         @project.team << [current_user, :master, current_user]
       end
 
-      @project.group.refresh_members_authorized_projects if @project.group
+      @project.group&.refresh_members_authorized_projects
     end
 
     def skip_wiki?
diff --git a/app/workers/authorized_projects_worker.rb b/app/workers/authorized_projects_worker.rb
index 6abbb5a5250..0e20df506a3 100644
--- a/app/workers/authorized_projects_worker.rb
+++ b/app/workers/authorized_projects_worker.rb
@@ -16,6 +16,6 @@ class AuthorizedProjectsWorker
   def perform(user_id)
     user = User.find_by(id: user_id)
 
-    user.refresh_authorized_projects if user
+    user&.refresh_authorized_projects
   end
 end
diff --git a/lib/api/branches.rb b/lib/api/branches.rb
index be659fa4a6a..9331be1f7de 100644
--- a/lib/api/branches.rb
+++ b/lib/api/branches.rb
@@ -84,7 +84,7 @@ module API
         branch = user_project.repository.find_branch(params[:branch])
         not_found!("Branch") unless branch
         protected_branch = user_project.protected_branches.find_by(name: branch.name)
-        protected_branch.destroy if protected_branch
+        protected_branch&.destroy
 
         present branch, with: Entities::RepoBranch, project: user_project
       end
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index b1ead48caf7..bedcd503724 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -382,9 +382,7 @@ module API
       expose :author, using: Entities::UserBasic, if: ->(event, options) { event.author }
 
       expose :author_username do |event, options|
-        if event.author
-          event.author.username
-        end
+        event.author&.username
       end
     end
 
diff --git a/lib/gitlab/ci/config/entry/configurable.rb b/lib/gitlab/ci/config/entry/configurable.rb
index 833ae4a0ff3..e05aca9881b 100644
--- a/lib/gitlab/ci/config/entry/configurable.rb
+++ b/lib/gitlab/ci/config/entry/configurable.rb
@@ -58,7 +58,7 @@ module Gitlab
             def helpers(*nodes)
               nodes.each do |symbol|
                 define_method("#{symbol}_defined?") do
-                  @entries[symbol].specified? if @entries[symbol]
+                  @entries[symbol]&.specified?
                 end
 
                 define_method("#{symbol}_value") do
diff --git a/lib/gitlab/email/message/repository_push.rb b/lib/gitlab/email/message/repository_push.rb
index 0e3b65fceb4..6c69cd9e6a9 100644
--- a/lib/gitlab/email/message/repository_push.rb
+++ b/lib/gitlab/email/message/repository_push.rb
@@ -46,7 +46,7 @@ module Gitlab
         end
 
         def diffs_count
-          diffs.size if diffs
+          diffs&.size
         end
 
         def compare
@@ -58,7 +58,7 @@ module Gitlab
         end
 
         def compare_timeout
-          diffs.overflow? if diffs
+          diffs&.overflow?
         end
 
         def reverse_compare?
diff --git a/lib/gitlab/git/blob_snippet.rb b/lib/gitlab/git/blob_snippet.rb
index e98de57fc22..d7975f88aaa 100644
--- a/lib/gitlab/git/blob_snippet.rb
+++ b/lib/gitlab/git/blob_snippet.rb
@@ -13,7 +13,7 @@ module Gitlab
       end
 
       def data
-        lines.join("\n") if lines
+        lines&.join("\n")
       end
 
       def name
diff --git a/lib/gitlab/metrics.rb b/lib/gitlab/metrics.rb
index 3d1ba33ec68..857e0abf710 100644
--- a/lib/gitlab/metrics.rb
+++ b/lib/gitlab/metrics.rb
@@ -112,7 +112,7 @@ module Gitlab
     def self.tag_transaction(name, value)
       trans = current_transaction
 
-      trans.add_tag(name, value) if trans
+      trans&.add_tag(name, value)
     end
 
     # Sets the action of the current transaction (if any)
@@ -121,7 +121,7 @@ module Gitlab
     def self.action=(action)
       trans = current_transaction
 
-      trans.action = action if trans
+      trans&.action = action
     end
 
     # Tracks an event.
@@ -130,7 +130,7 @@ module Gitlab
     def self.add_event(*args)
       trans = current_transaction
 
-      trans.add_event(*args) if trans
+      trans&.add_event(*args)
     end
 
     # Returns the prefix to use for the name of a series.
-- 
GitLab