I have written and optimized the code like this
def issues_json_for_v2(skip_avatar = false)
@result_json ||= { results: [] }
return if @result_set['issues'].empty?
@result_set['total_entries'] = @result_set['meta']['total']
fr_issues = @result_set['issues']
user_hash = fr_results_hash(@result_set['users'])
project_data = fr_results_hash(@result_set['projects'])
if @suggest
add_suggest_results_fr_issues(fr_issues, project_data)
else
fr_issues.each do |issue|
p_data = project_data[issue['project_id']] if issue
if issue && issue['owner_id']
issue_json = append_fr_user_details_to_issue(safe_send(:fr_issue_json, issue, p_data), user_hash)
else
issue_json = safe_send(:fr_issue_json, issue, p_data)
end
@result_json[:results] << issue_json
end
end
return @result_json[:results] if @size.nil?
add_fr_prj_meta_data(fr_issues)
@result_json[:results]
end
Still I am getting
Assignment Branch Condition size for issues_json_for_v2 is too high.
what optimization I can do while keeping the readability in the mind.
This is another method for which I am encountering this issue
def project_json(project, id)
human_display_id = project['key']
title = sanitize_fr_data(project['name'])
description = project['description'].blank? ? '' : project['description']
description = sanitize_fr_data(description)
prg = project['progress']
percent_completion = (prg['done'] == 0) ? 0 : (prg['done'] * 100) / (prg['todo'] + prg['in_progress'] + prg['done'])
current_time_zone = ActiveSupport::TimeZone::MAPPING[current_user.time_zone]
start_date = project['start_date'].nil? ? '--' : project['start_date'].in_time_zone(current_time_zone).strftime(date_time_format)
end_date = project['end_date'].nil? ? '--' : project['end_date'].in_time_zone(current_time_zone).strftime(date_time_format)
return { result_type: 'project', content: %{#{title} (#{human_display_id})}, path: fr_project_path(project['key']) } if @suggest
{
id: id,
title: title,
project_display_id: human_display_id,
description: truncate(description, length: 250),
owner: project['owner_id'],
start_date: start_date,
end_date: end_date,
progress: {todo: project['progress']['todo'], in_progress: project['progress']['in_progress'], done: project['progress']['done']},
percent_completion: percent_completion,
}
end