class Analyzer::Java::Struts2

Defined in:

analyzer/analyzers/java/struts2.cr

Constant Summary

DEFAULT_LOCATORS = ["action", "actions", "struts", "struts2"]
REST_METHODS = {"index" => {"GET", ""}, "show" => {"GET", "/:id"}, "edit" => {"GET", "/:id/edit"}, "editNew" => {"GET", "/new"}, "deleteConfirm" => {"GET", "/:id/deleteConfirm"}, "create" => {"POST", ""}, "update" => {"PUT", "/:id"}, "destroy" => {"DELETE", "/:id"}}
STRUTS_CONFIG_BASENAMES = Set {"struts.xml", "struts-plugin.xml", "struts-deferred.xml"}
STRUTS_JAVA_SOURCE_RE = Regex.union("org.apache.struts2", "com.opensymphony.xwork2", "@Action", "@Namespace")

struts_java_source? gates the per-file convention-action scan; one precompiled Regex.union scan (PCRE2 JIT, auto-escapes each literal) replaces 4 separate String#includes? passes over the same buffer.

VALUE_KEY_PATTERN = /(?:^|[,({]\s*)value\s*=\s*"((?:\\.|[^"\\])*)"/m

Crystal recompiles an interpolated regex literal on every evaluation (a full PCRE2 JIT compile). Every caller probes the value key, so precompile its matcher once at load time.

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]