lib/big_keeper/model/library_model.rb
require 'big_keeper/util/file_operator'require 'big_keeper/util/code_operator' module BigKeeper class LibraryModel attr_accessor :name, :file_list, :header_file_list, :keyword_list, :spec_library def initialize(name) @name = name @file_list = [] @header_file_list = [] @spec_library = [] @keyword_list = [] end Method `get_all_public_file` has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring.
Method `get_all_public_file` has 34 lines of code (exceeds 25 allowed). Consider refactoring. def get_all_public_file(path) all_header = FileOperator.find_all_header_file("#{path}/Pods/#{@name}") for file_path in all_header do @header_file_list[@header_file_list.size] = file_path file_name = File.basename(file_path) @keyword_list[@keyword_list.size] = file_name in_note = false File.foreach(file_path) { |line| hash = Hash.new hash["in_note"]=in_note hash["line"]=line OCCodeOperator.in_note_code(hash) in_note = hash["in_note"] line = hash["line"] if line.empty? next end if line.include?("@interface ") line[0,line.index("@interface ")+11]="" column = line.split(/:/) if column.size > 1 class_name = column[0] if class_name.include?("<") class_name = class_name[0, class_name.index("<")] end class_name = class_name.strip if (@keyword_list.include?(class_name+".h")) @keyword_list.delete(class_name+".h") end @keyword_list[@keyword_list.size] = class_name end end } end # if @name == "" # puts @keyword_list # end @file_list = FileOperator.find_all_code_file("#{path}/Pods/#{@name}") end Method `spec_dependece_library` has a Cognitive Complexity of 68 (exceeds 5 allowed). Consider refactoring.
Method `spec_dependece_library` has 53 lines of code (exceeds 25 allowed). Consider refactoring. def spec_dependece_library(library_keywords_hash) if library_keywords_hash.include?(@name) library_keywords_hash.delete(@name) end for file_path in @file_list do # note for coding in_note = false File.foreach(file_path) { |line| hash = Hash.new hash["in_note"]=in_note hash["line"]=line OCCodeOperator.in_note_code(hash) in_note = hash["in_note"] line = hash["line"] if line.empty? next end library_keywords_hash.each {|library_name, keyword_list| is_dependence = false tip = "" for keyword in keyword_list do if line.include?(keyword) last_char = '.' last_index = line.index(keyword)-1 if last_index >= 0 last_char = line[last_index] end next_char = '.' next_index = line.index(keyword)+keyword.size if next_index < line.size next_char = line[next_index] endConsider simplifying this complex logical expression.
Similar blocks of code found in 2 locations. Consider refactoring. if !(((next_char<='z'&&next_char>='a')||(next_char<='Z'&&next_char>='A')||(next_char<='9'&&next_char>='0')||next_char=='_')||((last_char<='z'&&last_char>='a')||(last_char<='Z'&&last_char>='A')||(last_char<='9'&&last_char>='0')||last_char=='_'))Avoid deeply nested control flow statements. if keyword.include?(".h") && line.include?("import") && line.include?("/"+keyword+">") dependence_library_name = line[line.index("<")+1...line.index("/"+keyword+">")] if dependence_library_name == library_name tip = " [file]:"+File.basename(file_path)+" [line]: "+line.strip+" [keyword]: "+keyword is_dependence = true break end else tip = " [file]:"+File.basename(file_path)+" [line]: "+line.strip+" [keyword]: "+keyword is_dependence = true break end end end end if is_dependence @spec_library[@spec_library.size] = library_name+tip library_keywords_hash.delete(library_name) end } } end end endend