mozilla/ssh_scan

View on GitHub
lib/ssh_scan/grader.rb

Summary

Maintainability
A
0 mins
Test Coverage
module SSHScan
  # A very crude means of translating # of compliance recommendations into a a grade
  # Basic formula is 100 - (# of recommendations * 10)
  class Grader
    GRADE_MAP = {
      91..100 => "A",
      81..90 => "B",
      71..80 => "C",
      61..70 => "D",
      0..60 => "F",
    }

    def initialize(result)
      @result = result
    end

    def grade
      score = 100

      if @result.compliance_recommendations.each do |recommendation|
          score -= 10
        end
      end

      GRADE_MAP.each do |score_range,grade|
        if score_range.include?(score)
          return grade
        end
      end
    end
  end
end