minie135/moon-audit/src does not have a README file

    CWEStat

    pub(all) struct CWEStat {
    cwe_id : Int
    name : String
    count : Int
    }

    Confidence

    pub(all) enum Confidence {
    High
    Medium
    Low
    } derive(Eq,
    Debug
    )

    Config

    pub(all) struct Config {
    rules : Map[String, RuleConfig]
    exclude : Array[String]
    includes : Array[String]
    output_format : String
    min_severity : Severity
    changed_files : Array[String]
    }

    Config::default

    fn Config::default() -> Config

    Config::get_severity

    fn Config::get_severity(self : Config, rule_id : String, default : Severity) -> Severity

    Config::is_enabled

    fn Config::is_enabled(self : Config, rule_id : String) -> Bool

    FileStat

    pub(all) struct FileStat {
    file : String
    finding_count : Int
    error_count : Int
    warning_count : Int
    }

    Finding

    pub(all) struct Finding {
    rule_id : RuleId
    severity : Severity
    confidence : Confidence
    message : String
    file : String
    line : Int
    column : Int
    end_line : Int
    end_column : Int
    snippet : String
    fingerprint : String
    } derive(
    Debug
    )

    FuncTaintSummary

    pub(all) struct FuncTaintSummary {
    name : String
    file : String
    line : Int
    params : Array[String]
    param_sinks : Map[String, Array[TaintSink]]
    }

    ImportContext

    pub(all) struct ImportContext {
    has_cmark : Bool
    has_rabbita : Bool
    has_mocket : Bool
    has_crescent : Bool
    has_liquid : Bool
    has_pug : Bool
    is_stdlib : Bool
    }

    ImportContext::empty

    InterProceduralContext

    pub(all) struct InterProceduralContext {
    summaries : Map[String, FuncTaintSummary]
    }

    InterProceduralContext::new

    LLMAnalysisRequest

    pub(all) struct LLMAnalysisRequest {
    finding : Finding
    source_context : String
    import_context : ImportContext
    prompt : String
    system_prompt : String
    }

    LLMAnalysisResult

    pub(all) struct LLMAnalysisResult {
    finding : Finding
    is_true_positive : Bool
    confidence : Double
    explanation : String
    severity_adjustment : Severity?
    remediation : String
    }

    LLMConfig

    pub(all) struct LLMConfig {
    base_url : String
    model : String
    api_key : String
    }

    LLMConfig::default

    fn LLMConfig::default() -> LLMConfig

    Location

    pub(all) struct Location {
    file : String
    line : Int
    column : Int
    }

    OwaspStat

    pub(all) struct OwaspStat {
    category : String
    count : Int
    cwe_ids : Array[Int]
    }

    PoCTemplate

    pub(all) struct PoCTemplate {
    finding : Finding
    poc_type : PoCType
    title : String
    description : String
    prerequisites : Array[String]
    attack_steps : Array[String]
    script : String
    expected_result : String
    cwe_url : String
    }

    PoCType

    pub(all) enum PoCType {
    HttpRequest
    RawSocket
    BrowserBased
    CLICommand
    }

    Remediation

    pub(all) struct Remediation {
    rule_id : String
    title : String
    risk_summary : String
    fix_description : String
    code_before : String
    code_after : String
    references : Array[String]
    owasp_category : String
    }

    RuleConfig

    pub(all) struct RuleConfig {
    enabled : Bool
    severity : Severity?
    }

    RuleId

    pub(all) struct RuleId {
    cwe : Int
    variant : String
    } derive(
    Debug
    )

    RuleInfo

    pub(all) struct RuleInfo {
    id : RuleId
    name : String
    description : String
    default_severity : Severity
    }

    RuleStat

    pub(all) struct RuleStat {
    rule_id : String
    name : String
    count : Int
    severity : Severity
    }

    ScanResult

    pub(all) struct ScanResult {
    findings : Array[Finding]
    files_scanned : Int
    errors : Array[String]
    }

    ScanSummary

    pub(all) struct ScanSummary {
    total_findings : Int
    error_count : Int
    warning_count : Int
    info_count : Int
    files_scanned : Int
    files_with_findings : Int
    rules_triggered : Array[RuleStat]
    file_stats : Array[FileStat]
    cwe_categories : Array[CWEStat]
    owasp_mapping : Array[OwaspStat]
    scan_errors : Int
    }

    Severity

    pub(all) enum Severity {
    Error
    Warning
    Info
    } derive(Eq,
    Debug
    )

    TaintFlow

    pub(all) struct TaintFlow {
    source : TaintSource
    sink : TaintSink
    source_location : Location
    sink_location : Location
    path : Array[String]
    }

    TaintSink

    pub(all) enum TaintSink {
    HtmlOutput
    SqlQuery
    FilePathConcat
    HeaderValue
    CookieValue
    ShellCommand
    ExternJsEval
    RedirectUrl
    }

    TaintSource

    pub(all) enum TaintSource {
    RouteParam(String)
    QueryParam(String)
    RequestBody
    RequestHeader(String)
    WebSocketMessage
    FileUpload
    FormField(String)
    }

    TaintState

    pub(all) struct TaintState {
    tainted_vars : Map[String, TaintedVar]
    flows : Array[TaintFlow]
    current_file : String
    }

    TaintState::add_tainted_var

    fn TaintState::add_tainted_var(self : TaintState, name : String, source : TaintSource, line : Int) -> Unit

    TaintState::clear_var

    fn TaintState::clear_var(self : TaintState, name : String) -> Unit

    TaintState::get_taint_source

    fn TaintState::get_taint_source(self : TaintState, name : String) -> TaintSource?

    TaintState::is_tainted

    fn TaintState::is_tainted(self : TaintState, name : String) -> Bool

    TaintState::new

    fn TaintState::new(file : String) -> TaintState

    TaintState::propagate

    fn TaintState::propagate(self : TaintState, from_var : String, to_var : String, line : Int) -> Unit

    TaintState::record_flow

    fn TaintState::record_flow(self : TaintState, source : TaintSource, sink : TaintSink, source_line : Int, source_col : Int, sink_line : Int, sink_col : Int, path : Array[String]) -> Unit

    TaintedVar

    pub(all) struct TaintedVar {
    name : String
    source : TaintSource
    file : String
    line : Int
    }

    analyze_imports

    fn analyze_imports(pkg_dir : String) -> ImportContext

    analyze_mod_imports

    fn analyze_mod_imports(project_root : String) -> ImportContext

    build_summary

    fn build_summary(result : ScanResult, rules : Array[RuleInfo]) -> ScanSummary

    collect_audit_files

    fn collect_audit_files(root : String, config : Config) -> Array[(String, String)]

    collect_func_summaries

    fn collect_func_summaries(source : String, file : String, ctx : InterProceduralContext) -> Unit

    compute_fingerprint

    fn compute_fingerprint(rule_id : RuleId, snippet : String) -> String

    confidence_from_str

    fn confidence_from_str(s : String) -> Confidence

    confidence_str

    fn confidence_str(c : Confidence) -> String

    cwe022_info

    fn cwe022_info() -> RuleInfo

    cwe079_cmark_info

    fn cwe079_cmark_info() -> RuleInfo

    cwe079_inner_html_info

    fn cwe079_inner_html_info() -> RuleInfo

    cwe079_template_info

    fn cwe079_template_info() -> RuleInfo

    cwe094_info

    fn cwe094_info() -> RuleInfo

    cwe113_info

    fn cwe113_info() -> RuleInfo

    cwe116_info

    fn cwe116_info() -> RuleInfo

    cwe248_info

    fn cwe248_info() -> RuleInfo

    cwe346_info

    fn cwe346_info() -> RuleInfo

    cwe614_info

    fn cwe614_info() -> RuleInfo

    cwe676_info

    fn cwe676_info() -> RuleInfo

    cwe704_info

    fn cwe704_info() -> RuleInfo

    cwe770_info

    fn cwe770_info() -> RuleInfo

    cwe942_info

    fn cwe942_info() -> RuleInfo

    filter_baseline

    fn filter_baseline(findings : Array[Finding], baseline : Map[String, Bool]) -> Array[Finding]

    filter_by_llm_results

    fn filter_by_llm_results(results : Array[LLMAnalysisResult], min_confidence : Double) -> Array[LLMAnalysisResult]

    format_json

    fn format_json(result : ScanResult) -> String

    format_llm_report

    fn format_llm_report(results : Array[LLMAnalysisResult]) -> String

    format_poc_report

    fn format_poc_report(pocs : Array[PoCTemplate]) -> String

    format_poc_script

    fn format_poc_script(poc : PoCTemplate) -> String

    format_prompt_as_json

    fn format_prompt_as_json(req : LLMAnalysisRequest, model? : String) -> String

    format_remediation_report

    fn format_remediation_report(remediations : Array[Remediation]) -> String

    format_sarif

    fn format_sarif(result : ScanResult) -> String

    format_summary_json

    fn format_summary_json(summary : ScanSummary) -> String

    format_summary_text

    fn format_summary_text(summary : ScanSummary) -> String

    format_taint_report

    fn format_taint_report(flows : Array[TaintFlow]) -> String

    format_text

    fn format_text(result : ScanResult, verbose : Bool) -> String

    generate_all_pocs

    fn generate_all_pocs(findings : Array[Finding], imports : ImportContext) -> Array[PoCTemplate]

    generate_analysis_prompt

    fn generate_analysis_prompt(finding : Finding, source : String, imports : ImportContext) -> LLMAnalysisRequest

    generate_baseline

    fn generate_baseline(findings : Array[Finding]) -> String

    generate_batch_prompts

    fn generate_batch_prompts(findings : Array[Finding], sources : Map[String, String], imports : ImportContext) -> Array[LLMAnalysisRequest]

    generate_deep_audit_script

    fn generate_deep_audit_script(llm_config : LLMConfig, findings : Array[Finding], source_files : Array[(String, String)]) -> String

    generate_llm_script

    fn generate_llm_script(llm_config : LLMConfig, requests : Array[LLMAnalysisRequest]) -> String

    generate_poc

    fn generate_poc(finding : Finding, _imports : ImportContext) -> PoCTemplate?

    get_all_remediations

    fn get_all_remediations(findings : Array[Finding]) -> Array[Remediation]

    get_labelled_string_value

    fn get_labelled_string_value(args :
    List
    [
    Argument
    ], name : String) -> String?

    get_remediation

    fn get_remediation(finding : Finding) -> Remediation

    get_source_line

    fn get_source_line(source : String, line_num : Int) -> String

    has_labelled_arg

    fn has_labelled_arg(args :
    List
    [
    Argument
    ], name : String) -> Bool

    has_labelled_bool_arg

    fn has_labelled_bool_arg(args :
    List
    [
    Argument
    ], name : String, value : Bool) -> Bool

    is_any_constant

    fn is_any_constant(expr :
    Expr
    ) -> Bool

    is_constant_ident

    fn is_constant_ident(name :
    LongIdent
    ) -> Bool

    is_constant_string

    fn is_constant_string(expr :
    Expr
    ) -> Bool

    is_safe_value

    fn is_safe_value(expr :
    Expr
    ) -> Bool

    is_sanitized_expr

    fn is_sanitized_expr(expr :
    Expr
    ) -> Bool

    list_all_rules

    fn list_all_rules() -> Array[RuleInfo]

    load_baseline

    fn load_baseline(path : String) -> Map[String, Bool]

    load_changed_files

    fn load_changed_files(path : String) -> Array[String]

    load_config

    fn load_config(path : String) -> Config

    load_env

    fn load_env(dir : String) -> Map[String, String]

    load_env_merged

    fn load_env_merged(dir : String) -> Map[String, String]

    load_llm_config

    fn load_llm_config(dir : String) -> LLMConfig

    merge_imports

    fn merge_imports(a : ImportContext, b : ImportContext) -> ImportContext

    parse_llm_response

    fn parse_llm_response(finding : Finding, response_json : String) -> LLMAnalysisResult?

    poc_type_str

    fn poc_type_str(t : PoCType) -> String

    risk_level

    fn risk_level(score : Double) -> String

    risk_score

    fn risk_score(summary : ScanSummary) -> Double

    rule_id_str

    fn rule_id_str(id : RuleId) -> String

    run_cross_func_taint

    fn run_cross_func_taint(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], ctx : InterProceduralContext, _imports : ImportContext) -> Unit

    run_cwe022

    fn run_cwe022(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe079_cmark

    fn run_cwe079_cmark(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe079_inner_html

    fn run_cwe079_inner_html(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe079_template

    fn run_cwe079_template(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe094

    fn run_cwe094(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe113

    fn run_cwe113(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe116

    fn run_cwe116(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe248

    fn run_cwe248(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe346

    fn run_cwe346(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe614

    fn run_cwe614(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe676

    fn run_cwe676(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe704

    fn run_cwe704(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe770

    fn run_cwe770(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_cwe942

    fn run_cwe942(impls :
    List
    [
    Impl
    ], file : String, source : String, findings : Array[Finding], severity : Severity) -> Unit

    run_taint_analysis

    fn run_taint_analysis(impls :
    List
    [
    Impl
    ], file : String, _source : String, _imports : ImportContext) -> TaintState

    scan_project

    fn scan_project(root : String, config : Config) -> ScanResult

    severity_from_str

    fn severity_from_str(s : String) -> Severity

    severity_level

    fn severity_level(s : Severity) -> Int

    severity_str

    fn severity_str(s : Severity) -> String

    taint_flows_to_findings

    fn taint_flows_to_findings(flows : Array[TaintFlow], _severity : Severity) -> Array[Finding]