Sha256: 1145b878078e0765ac8a62fca4549944c61e9e2b6cd43cf74790633fb7e9dacf
Contents?: true
Size: 1.14 KB
Versions: 5
Compression:
Stored size: 1.14 KB
Contents
# frozen_string_literal: true require "rubycritic/core/analysed_module" module RubyCritic # Monkey-patches RubyCritic::AnalysedModule to add a stink_score method class AnalysedModule PERFECT_COVERAGE = 100 # Returns a numeric value that represents the stink_score of a module: # # If module is perfectly covered, stink score is the same as the # `churn_times_cost` # # If module has no coverage, stink score is a penalized value of # `churn_times_cost` # # For now the stink_score is calculated by multiplying `churn_times_cost` # times the lack of coverage. # # For example: # # When `churn_times_cost` is 100 and module is perfectly covered: # stink_score => 100 # # When `churn_times_cost` is 100 and module is not covered at all: # stink_score => 100 * 100 = 10_000 # # When `churn_times_cost` is 100 and module is covered at 75%: # stink_score => 100 * 25 (percentage uncovered) = 2_500 # # @return [Float] def stink_score return cost.round(2) if coverage == PERFECT_COVERAGE (cost * (PERFECT_COVERAGE - coverage.to_i)).round(2) end end end
Version data entries
5 entries across 5 versions & 1 rubygems