class RubyCritic::AnalysedModule
Monkey-patches RubyCritic::AnalysedModule
to add a skunk_score
method
Constants
- PERFECT_COVERAGE
Public Instance Methods
Returns the value of churn times cost.
@return [Integer]
# File lib/skunk/rubycritic/analysed_module.rb, line 42 def churn_times_cost safe_churn = churn.positive? ? churn : 1 @churn_times_cost ||= (safe_churn * cost).round(2) end
Returns a numeric value that represents the skunk_score
of a module:
If module is perfectly covered, skunk score is the same as the `churn_times_cost`
If module has no coverage, skunk score is a penalized value of `churn_times_cost`
For now the skunk_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: skunk_score
=> 100
When `churn_times_cost` is 100 and module is not covered at all: skunk_score
=> 100 * 100 = 10_000
When `churn_times_cost` is 100 and module is covered at 75%: skunk_score
=> 100 * 25 (percentage uncovered) = 2_500
@return [Float]
# File lib/skunk/rubycritic/analysed_module.rb, line 33 def skunk_score return cost.round(2) if coverage == PERFECT_COVERAGE (cost * (PERFECT_COVERAGE - coverage.to_i)).round(2) end
Returns a hash with these attributes:
- file - skunk_score - churn_times_cost - churn - cost - coverage
@return [Hash]
# File lib/skunk/rubycritic/analysed_module.rb, line 56 def to_hash { file: pathname.to_s, skunk_score: skunk_score, churn_times_cost: churn_times_cost, churn: churn, cost: cost.round(2), coverage: coverage.round(2) } end