Decrease Cyclomatic Complexity threshold to 13

This commit is contained in:
Maxim Rydkin 2017-09-12 17:02:11 +00:00 committed by Robert Speicher
parent a1a2ce4af4
commit 4db6b8f0bb
4 changed files with 42 additions and 20 deletions

View File

@ -643,7 +643,7 @@ Metrics/ClassLength:
# of test cases needed to validate a method.
Metrics/CyclomaticComplexity:
Enabled: true
Max: 14
Max: 13
# Limit lines to 80 characters.
Metrics/LineLength:

View File

@ -0,0 +1,5 @@
---
title: Decrease Cyclomatic Complexity threshold to 13
merge_request: 14152
author: Maxim Rydkin
type: other

View File

@ -12,12 +12,7 @@ module Gitlab
MissingEndDelimiter = Class.new(ParserError)
def parse(text, our_path:, their_path:, parent_file: nil)
raise UnmergeableFile if text.blank? # Typically a binary file
raise UnmergeableFile if text.length > 200.kilobytes
text.force_encoding('UTF-8')
raise UnsupportedEncoding unless text.valid_encoding?
validate_text!(text)
line_obj_index = 0
line_old = 1
@ -32,15 +27,15 @@ module Gitlab
full_line = line.delete("\n")
if full_line == conflict_start
raise UnexpectedDelimiter unless type.nil?
validate_delimiter!(type.nil?)
type = 'new'
elsif full_line == conflict_middle
raise UnexpectedDelimiter unless type == 'new'
validate_delimiter!(type == 'new')
type = 'old'
elsif full_line == conflict_end
raise UnexpectedDelimiter unless type == 'old'
validate_delimiter!(type == 'old')
type = nil
elsif line[0] == '\\'
@ -59,6 +54,21 @@ module Gitlab
lines
end
private
def validate_text!(text)
raise UnmergeableFile if text.blank? # Typically a binary file
raise UnmergeableFile if text.length > 200.kilobytes
text.force_encoding('UTF-8')
raise UnsupportedEncoding unless text.valid_encoding?
end
def validate_delimiter!(condition)
raise UnexpectedDelimiter unless condition
end
end
end
end

View File

@ -4,6 +4,15 @@ require_relative 'redis/queues' unless defined?(Gitlab::Redis::Queues)
module Gitlab
module MailRoom
DEFAULT_CONFIG = {
enabled: false,
port: 143,
ssl: false,
start_tls: false,
mailbox: 'inbox',
idle_timeout: 60
}.freeze
class << self
def enabled?
config[:enabled] && config[:address]
@ -22,16 +31,10 @@ module Gitlab
def fetch_config
return {} unless File.exist?(config_file)
rails_env = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
all_config = YAML.load_file(config_file)[rails_env].deep_symbolize_keys
config = all_config[:incoming_email] || {}
config[:enabled] = false if config[:enabled].nil?
config[:port] = 143 if config[:port].nil?
config[:ssl] = false if config[:ssl].nil?
config[:start_tls] = false if config[:start_tls].nil?
config[:mailbox] = 'inbox' if config[:mailbox].nil?
config[:idle_timeout] = 60 if config[:idle_timeout].nil?
config = YAML.load_file(config_file)[rails_env].deep_symbolize_keys[:incoming_email] || {}
config = DEFAULT_CONFIG.merge(config) do |_key, oldval, newval|
newval.nil? ? oldval : newval
end
if config[:enabled] && config[:address]
gitlab_redis_queues = Gitlab::Redis::Queues.new(rails_env)
@ -45,6 +48,10 @@ module Gitlab
config
end
def rails_env
@rails_env ||= ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
end
def config_file
ENV['MAIL_ROOM_GITLAB_CONFIG_FILE'] || File.expand_path('../../../config/gitlab.yml', __FILE__)
end