class CrashAnalysis::Analysis
Public Class Methods
new()
click to toggle source
# File lib/crash_analysis.rb, line 41 def initialize() @dSYM_file_name = "" end
Public Instance Methods
analysis_action(crash_files, log_file_suffix, logs_dir_path, symbolicatecrash_path)
click to toggle source
# File lib/crash_analysis.rb, line 78 def analysis_action(crash_files, log_file_suffix, logs_dir_path, symbolicatecrash_path) evn = "export DEVELOPER_DIR='/Applications/XCode.app/Contents/Developer'" output_log_dir = logs_dir_path + "/crash_logs" percent_count = 0 if !File.directory?(output_log_dir) Dir.mkdir(output_log_dir) end for file in crash_files running_thread = Thread.new do short_file_name = file.split("/").last output_file = output_log_dir + "/" + short_file_name current_log_file = logs_dir_path + "/" + file system("#{evn} \n #{symbolicatecrash_path} #{current_log_file} #{@dSYM_file_name} > #{output_file}") percent_count = percent_count + 1 precent = ((percent_count.to_f / crash_files.count.to_f) * 10000).round / 10000.0 str = (precent * 100).to_s puts "#{str[0,4]}% || analyzing file: #{file}" Thread.main.wakeup end # Maximum run for 10 seconds sleep 10 Thread.kill(running_thread) end puts "\n Done." end
run(logs_dir_path, log_file_suffix, symbolicatecrash_path)
click to toggle source
# File lib/crash_analysis.rb, line 45 def run(logs_dir_path, log_file_suffix, symbolicatecrash_path) crash_files = traverse(logs_dir_path, log_file_suffix) analysis_action(crash_files, log_file_suffix, logs_dir_path, symbolicatecrash_path) end
traverse(logs_dir_path, log_file_suffix)
click to toggle source
# File lib/crash_analysis.rb, line 50 def traverse(logs_dir_path, log_file_suffix) crash_files = Array.new count_app = 0 count_dSYM = 0 Dir.foreach(logs_dir_path) do |file| file_suffix_array = file.strip.split(".") if file_suffix_array.last == log_file_suffix file_suffix_array.pop crash_files << (file) end if file_suffix_array.last == "app" count_app += 1 end if file_suffix_array.last == "dSYM" @dSYM_file_name = file count_dSYM += 1 end end if count_app != 1 || count_dSYM !=1 || crash_files.count < 1 puts "error:\n" puts "make sure the directory contains those files: 1 .app file & 1 .dSYM file & related crash files" return end return crash_files end