Class: Hashira::Pipeline

Inherits:
Object
  • Object
show all
Defined in:
lib/hashira/pipeline.rb

Constant Summary collapse

ANALYZERS =
%i[coupling complexity duplication smells].freeze
STRUCTURAL =
Hashira::Coupling::Report::RULES.map { it::KIND }.freeze
SMELLS =
(
  Hashira::Smells::Report::CHECKS.map(&:kind) + [Hashira::Smells::BoundarySprawl::KIND]
).sort.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project, enabled: ANALYZERS, packaging: :auto) ⇒ Pipeline

Returns a new instance of Pipeline.



16
17
18
19
20
21
# File 'lib/hashira/pipeline.rb', line 16

def initialize(project, enabled: ANALYZERS, packaging: :auto)
  @project = project
  @enabled = enabled
  @parsed = Hashira::Trees.new(project)
  @coupling = Hashira::Coupling::Report.new(project, @parsed.all, packaging: settle(packaging))
end

Instance Attribute Details

#projectObject (readonly)

Returns the value of attribute project.



23
24
25
# File 'lib/hashira/pipeline.rb', line 23

def project
  @project
end

Instance Method Details

#analyzed(name, kind, *extra) ⇒ Object



43
44
45
# File 'lib/hashira/pipeline.rb', line 43

def analyzed(name, kind, *extra)
  kind.new(@project, @parsed.all, *extra) if enabled?(name)
end

#churnObject



39
# File 'lib/hashira/pipeline.rb', line 39

def churn = @churn ||= Hashira::Churn.scan(@project.directories.first)

#complexityObject



29
# File 'lib/hashira/pipeline.rb', line 29

def complexity = @complexity ||= analyzed(:complexity, Hashira::Complexity::Scores)

#duplicationObject



31
# File 'lib/hashira/pipeline.rb', line 31

def duplication = @duplication ||= analyzed(:duplication, Hashira::Duplication::Clones, churn)

#enabled?(analyzer) ⇒ Boolean

Returns:

  • (Boolean)


41
# File 'lib/hashira/pipeline.rb', line 41

def enabled?(analyzer) = @enabled.include?(analyzer)

#findingsObject



47
# File 'lib/hashira/pipeline.rb', line 47

def findings = structural + listed(complexity) + listed(duplication) + listed(smells)

#graphObject



27
# File 'lib/hashira/pipeline.rb', line 27

def graph = @coupling.graph

#hotspotsObject



35
36
37
# File 'lib/hashira/pipeline.rb', line 35

def hotspots
  @hotspots ||= Hashira::Hotspots::Rollup.new(complexity, duplication, churn) if complexity || duplication
end

#smellsObject



33
# File 'lib/hashira/pipeline.rb', line 33

def smells = @smells ||= analyzed(:smells, Hashira::Smells::Report)

#unparsedObject



25
# File 'lib/hashira/pipeline.rb', line 25

def unparsed = @parsed.unparsed