class Analyzer::Go::Chi

Defined in:

analyzer/analyzers/go/chi.cr

Constant Summary

IMPORT_MARKER = "github.com/go-chi/chi"

Go enforces per-file imports, so any file using chi's router types must mention the package path. Filter on this marker to avoid touching the bulk of files in projects whose detection matched on a single dummy/fixture file (the chi extractor is loose enough that another framework's verb calls would otherwise surface as chi routes).

Instance Method Summary

Instance methods inherited from class Analyzer

analyze analyze, base_path : String base_path, base_paths : Array(String) base_paths, callees_needed? : Bool callees_needed?, logger : NoirLogger logger, parallel_analyze(channel : Channel(String), &block : String -> Nil) parallel_analyze, read_file_content(path : String) : String read_file_content, result : Array(Endpoint) result, url : String url

Constructor methods inherited from class Analyzer

new(options : Hash(String, YAML::Any)) new

Macros inherited from class Analyzer

define_getter_methods(names) define_getter_methods

Instance methods inherited from module FileHelper

all_files : Array(String) all_files, get_files_by_extension(extension : String) : Array(String) get_files_by_extension, get_files_by_prefix(prefix : String) : Array(String) get_files_by_prefix, get_files_by_prefix_and_extension(prefix : String, extension : String) : Array(String) get_files_by_prefix_and_extension, get_public_dir_files(base_path : String, folder : String) : Array(String) get_public_dir_files, get_public_files(base_path : String, anchors : Array(String) = ["shard.yml", "Gemfile"]) : Array(String) get_public_files, populate_channel_with_files(channel : Channel(String)) populate_channel_with_files, populate_channel_with_filtered_files(channel : Channel(String), extension : String)
populate_channel_with_filtered_files(channel : Channel(String), extensions : Array(String))
populate_channel_with_filtered_files

Instance Method Detail

def analyze #

[View source]
def analyze_router_function(file_path : String, func_name : String, package_files : Hash(String, Array(String)) | Nil = nil, file_contents_cache : Hash(String, String) | Nil = nil, file_lines_cache : Hash(String, Array(String)) | Nil = nil) : Array(Endpoint) #

Extracts endpoints from a router function definition, searching across all .go files in the same directory (Go package) if not found in the given file.

Uses the tree-sitter walker too, but scoped down to just the target function's declaration so the returned routes are relative to the function body — caller slaps on the Mount prefix.


[View source]
def get_param(line : String, pattern : String) : Param #

[View source]