def find_code_changes(ri_dir="/tmp/ri", new_ri_dir="/tmp/new_ri")
results = Hash.new
new_ri_files = find_ri_files(new_ri_dir)
old_ri_files = find_ri_files(ri_dir)
new_classes = new_ri_files.reject {|f| f =~ /\.(yaml|rid)$/ || f == new_ri_dir }
old_classes = old_ri_files.reject {|f| f =~ /\.(yaml|rid)$/ || f == ri_dir }
new_methods = new_ri_files.find_all {|f| f =~/\.yaml$/}
old_methods = old_ri_files.find_all {|f| f =~/\.yaml$/}
rep_new_classes = new_classes - old_classes
rep_remove_classes = old_classes - new_classes
rep_new_methods = new_methods - old_methods
rep_remove_methods = old_methods - new_methods
rep_new_methods = rep_new_methods.find_all {|f| !filter_method_from_classes?(f, rep_new_classes)}
rep_remove_methods = rep_remove_methods.find_all {|f| !filter_method_from_classes?(f, rep_remove_classes)}
rep_new_class_methods, rep_new_instance_methods = rep_new_methods.partition {|m| m =~ /-c\.yaml$/}
rep_remove_class_methods, rep_remove_instance_methods = rep_remove_methods.partition {|m| m =~ /-c\.yaml$/}
rep_new_instance_methods = rep_new_instance_methods.map {|m| strip_ri_method_name(m)}
rep_remove_instance_methods = rep_remove_instance_methods.map {|m| strip_ri_method_name(m)}
rep_new_class_methods = rep_new_class_methods.map {|m| strip_ri_method_name(m)}
rep_remove_class_methods = rep_remove_class_methods.map {|m| strip_ri_method_name(m)}
results[:new_classes] = make_table_iteration( rep_new_classes )
results[:removed_classes] = make_table_iteration( rep_remove_classes )
results[:new_instance_methods] = make_table_iteration( rep_new_instance_methods )
results[:removed_instance_methods] = make_table_iteration( rep_remove_instance_methods )
results[:new_class_methods] = make_table_iteration( rep_new_class_methods )
results[:removed_class_methods] = make_table_iteration( rep_remove_class_methods )
results
end