Sha256: 4514eb3e1a4335ad672617da61215019194969016a847f00b46706d3f8b02983
Contents?: true
Size: 1.35 KB
Versions: 2
Compression:
Stored size: 1.35 KB
Contents
module Pelusa module Lint class LongIdentifiers def initialize @violations = Set.new end def check(klass) iterate_lines!(klass) return SuccessfulAnalysis.new(name) if @violations.empty? FailedAnalysis.new(name, formatted_violations) do |violations| "These names are too long: #{violations.join(', ')}" end end private def name "Uses names of adequate length (less than #{limit})" end def limit Pelusa.configuration['LongIdentifiers'].fetch('limit', 20) end def iterate_lines!(klass) ClassAnalyzer.walk(klass) do |node| if node.respond_to?(:name) name = node.name.respond_to?(:name) ? node.name.name.to_s : node.name.to_s if name =~ /[a-z]/ && name.length > limit @violations << [name, node.line] unless name =~ /^[A-Z]/ # Ignore constants end end end end def formatted_violations grouped_violations = @violations.inject({}) do |hash, (name, line)| hash[name] ||= [] hash[name] << line hash end violations = [] grouped_violations.each_pair do |name, lines| violations << "#{name} (line #{lines.join(', ')})" end violations end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pelusa-0.2.4 | lib/pelusa/lint/long_identifiers.rb |
pelusa-0.2.3 | lib/pelusa/lint/long_identifiers.rb |