class

Analyzer::Ruby::Webrick

Inherits Analyzer::Ruby::RubyEngine < Analyzer < FileHelper < Reference < Object

Constants

COOKIE_LINE_GATE_RE = Regex.union("cookies", ".name")

extract_webrick_params's per-line cookie-scan gate OR-ed two String#includes? scans as a standalone boolean gate. Folded into one precompiled union so it costs a single PCRE2 match instead of up to two naive substring scans per line of the handler body.

SERVLET_METHODS = {"do_get" => "GET", "do_post" => "POST", "do_put" => "PUT", "do_patch" => "PATCH", "do_delete" => "DELETE", "do_head" => "HEAD", "do_options" => "OPTIONS"}
VERB_GUARD_MARKERS = ["get", "post", "put", "patch", "delete", "head", "options"].to_h do |v| {v, Regex.union("\"#{v}\"", "'#{v}'", v.upcase, ":#{v}")} end

extract_verbs_from_handler_body's per-verb loop OR-ed four String#includes? scans (with string interpolation) over the handler body for each of the seven fixed HTTP verbs — up to 28 naive substring scans per call. The verb set never changes, so precompile one Regex.union per verb at class load instead.

WEBRICK_EVIDENCE_RE = Regex.union("webrick", "WEBrick", "mount_proc")

analyze's per-file evidence gate OR-ed three String#includes? scans as a standalone boolean gate. Folded into one precompiled union so it costs a single PCRE2 match instead of up to three naive substring scans per file.

Class methods

tech_name
Source

Instance methods

analyze
Source
tech

Instance-side view of the same declaration. The per-file rescues live on this base class, which has no way to name the analyzer that is running inside them, so a skipped file could not be attributed to a tech. Deriving it from analyzer_for keeps the name written exactly once.

Source