Class: Kaisoku::StaticAnalysis::Analyzer

Inherits:
Object
  • Object
show all
Defined in:
lib/kaisoku/static_analysis/analyzer.rb

Instance Method Summary collapse

Constructor Details

#initialize(configuration: Configuration.new) ⇒ Analyzer

Returns a new instance of Analyzer.



8
9
10
# File 'lib/kaisoku/static_analysis/analyzer.rb', line 8

def initialize(configuration: Configuration.new)
  @configuration = configuration
end

Instance Method Details

#conventional_tests_for(path) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/kaisoku/static_analysis/analyzer.rb', line 25

def conventional_tests_for(path)
  relative = @configuration.relative_path(path)
  stem = relative.sub(%r{\A(app|lib)/}, '').sub(/\.rb\z/, '')
  candidates = [
    "spec/#{stem}_spec.rb",
    "test/#{stem}_test.rb"
  ]

  candidates.select { |candidate| File.file?(@configuration.absolute_path(candidate)) }
end

#inferred_dependencies_for_test(path) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/kaisoku/static_analysis/analyzer.rb', line 12

def inferred_dependencies_for_test(path)
  absolute = @configuration.absolute_path(path)
  return [] unless File.file?(absolute)

  result = Prism.parse_file(absolute)
  return [] unless result.success?

  program = result.value
  (requires(program, absolute) + constants(program)).uniq
rescue StandardError
  []
end