Class: FiberAudit::Static::CallSiteExtractor

Inherits:
Object
  • Object
show all
Defined in:
lib/fiber_audit/static/call_site_extractor.rb

Overview

Extracts CallSite objects from Ruby source files using Prism. Performs single-pass parsing per file with receiver inference.

Defined Under Namespace

Classes: ASTVisitor, ParseError, Result

Constant Summary collapse

WELL_KNOWN_CONSTANTS =

Well-known constants that can be resolved without semantic index

%w[
  Kernel
  Open3
  IO
  Process
  Thread
  Mutex
  ConditionVariable
  Monitor
  MonitorMixin
  TCPSocket
  TCPServer
  UDPSocket
  UNIXSocket
  UNIXServer
  Socket
  IPSocket
  Net::HTTP
  URI
  OpenURI
  ActiveSupport::CurrentAttributes
  File
  Dir
  Pathname
  Redis
  Net::SMTP
  Net::FTP
  Net::IMAP
].to_set.freeze

Instance Method Summary collapse

Constructor Details

#initialize(files:, semantic_index: nil) ⇒ CallSiteExtractor

Returns a new instance of CallSiteExtractor.



48
49
50
51
# File 'lib/fiber_audit/static/call_site_extractor.rb', line 48

def initialize(files:, semantic_index: nil)
  @files = Array(files)
  @sem = semantic_index
end

Instance Method Details

#callObject

Extract call sites from all files. Returns Result. Never raises; collects parse errors per file. Maintains deterministic order: files processed in provided order.



56
57
58
59
60
61
62
63
64
65
# File 'lib/fiber_audit/static/call_site_extractor.rb', line 56

def call
  call_sites = []
  parse_errors = []

  @files.each do |file_path|
    extract_from_file(file_path, call_sites, parse_errors)
  end

  Result.new(call_sites: call_sites, parse_errors: parse_errors)
end