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?, http_header_name(name : String) : String | Nil http_header_name, line_number_for_index(content : String, char_index : Int32) : Int32 line_number_for_index, logger : NoirLogger logger, parallel_analyze(files : Array(String), &block : String -> Nil) parallel_analyze, read_file_content(path : String) : String read_file_content, result : Array(Endpoint) result, unique_params(params : Array(Param)) : Array(Param) unique_params, url : String url, web_root_path(path : String, markers : Array(String)) : String web_root_path

Constructor methods inherited from class Analyzer

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

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_extensions(extensions : Array(String)) : Array(String) get_files_by_extensions, 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

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, recv_type : 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. When recv_type is given, the target is a method (func (r Type) Name()) and only the declaration on that receiver type is matched.


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

[View source]