# File lib/saikuro.rb, line 1094
  def run
    files = Array.new
    output_dir = "./"
    formater = "html"
    state_filter = Filter.new(5)
    token_filter = Filter.new(10, 25, 50)
    comp_state = comp_token = false
    begin
      opt = GetoptLong.new(
                           ["-o","--output_directory", GetoptLong::REQUIRED_ARGUMENT],
                           ["-h","--help", GetoptLong::NO_ARGUMENT],
                           ["-f","--formater", GetoptLong::REQUIRED_ARGUMENT],
                           ["-c","--cyclo", GetoptLong::NO_ARGUMENT],
                           ["-t","--token", GetoptLong::NO_ARGUMENT],
                           ["-y","--filter_cyclo", GetoptLong::REQUIRED_ARGUMENT],
                           ["-k","--filter_token", GetoptLong::REQUIRED_ARGUMENT],
                           ["-w","--warn_cyclo", GetoptLong::REQUIRED_ARGUMENT],
                           ["-s","--warn_token", GetoptLong::REQUIRED_ARGUMENT],
                           ["-e","--error_cyclo", GetoptLong::REQUIRED_ARGUMENT],
                           ["-d","--error_token", GetoptLong::REQUIRED_ARGUMENT],
                           ["-p","--parse_file", GetoptLong::REQUIRED_ARGUMENT],
                           ["-i","--input_directory", GetoptLong::REQUIRED_ARGUMENT],
                           ["-v","--verbose", GetoptLong::NO_ARGUMENT]
                           )

      opt.each do |arg,val|
        case arg
        when "-o"
          output_dir = val
        when "-h"
          RDoc.usage('help')
        when "-f"
          formater = val
        when "-c"
          comp_state = true
        when "-t"
          comp_token = true
        when "-k"
          token_filter.limit = val.to_i
        when "-s"
          token_filter.warn = val.to_i
        when "-d"
          token_filter.error = val.to_i
        when "-y"
          state_filter.limit = val.to_i
        when "-w"
          state_filter.warn = val.to_i
        when "-e"
          state_filter.error = val.to_i
        when "-p"
          files<< val
        when "-i"
          files.concat(get_ruby_files(val))
        when "-v"
          STDOUT.puts "Verbose mode on"
          $VERBOSE = true
        end

      end
      RDoc.usage if !comp_state && !comp_token
    rescue => err
      RDoc.usage
    end

    if formater =~ /html/i
      state_formater = StateHTMLComplexityFormater.new(STDOUT,state_filter)
      token_count_formater = HTMLTokenCounterFormater.new(STDOUT,token_filter)
    else
      state_formater = ParseStateFormater.new(STDOUT,state_filter)
      token_count_formater = TokenCounterFormater.new(STDOUT,token_filter)
    end

    state_formater = nil if !comp_state
    token_count_formater = nil if !comp_token

    idx_states, idx_tokens = Saikuro.analyze(files,
                                             state_formater,
                                             token_count_formater,
                                             output_dir)

    write_cyclo_index(idx_states, output_dir)
    write_token_index(idx_tokens, output_dir)
  end