# frozen_string_literal: true
unless 'production' == ENV
require 'flay' desc 'Analyze code for structural similarities' task :flay do flay = Flay.new files = FileList['app.rb', 'app/**/*.rb'] flay.process(*files) threshold = 200 if flay.total > threshold puts flay.report raise "Flay total too high! #{flay.total} > #{threshold}" end end require 'flog' desc 'Analyze code complexity' task :flog do flog = Flog.new files = FileList['app.rb', 'app/**/*.rb'] flog.flog(*files) threshold = 50 bad_methods = flog.totals.select do |_name, score| score > threshold end bad_methods.sort { |a, b| a[1] <=> b[1] }.each do |name, score| puts format('%<score>8.1f: %<name>s', score: score, name: name) end unless bad_methods.empty? raise "#{bad_methods.size} methods have a flog complexity > #{threshold}" end end
end