condition

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2026 License: GPL-3.0 Imports: 4 Imported by: 0

Documentation

Overview

Package condition provides key condition extraction for branch analysis.

Key conditions help determine: - What guards exist on the path to data usage - What constraints exist on user input - Control flow conditions affecting data flow

Index

Constants

View Source
const (
	CondTypeComparison  = constants.CondTypeComparison
	CondTypeNullCheck   = constants.CondTypeNullCheck
	CondTypeTypeCheck   = constants.CondTypeTypeCheck
	CondTypeLengthCheck = constants.CondTypeLengthCheck
	CondTypeLogical     = constants.CondTypeLogical
	CondTypeUnknown     = constants.CondTypeUnknown
)

Re-export constants for backward compatibility

View Source
const (
	EffectAllows  = constants.EffectAllows
	EffectBlocks  = constants.EffectBlocks
	EffectUnknown = constants.EffectUnknown
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ConditionEffect

type ConditionEffect = constants.ConditionEffect

type ConditionPath

type ConditionPath struct {
	Conditions []*KeyCondition `json:"conditions"`
	TargetLine int             `json:"target_line"`
	TargetExpr string          `json:"target_expr,omitempty"`
	Feasible   bool            `json:"feasible"`         // Is this path feasible?
	Reason     string          `json:"reason,omitempty"` // Why infeasible if not
}

ConditionPath represents a path through conditions to reach a point

type ConditionType

type ConditionType = constants.ConditionType

Re-export types from centralized location for backward compatibility

type Extractor

type Extractor struct {
	// contains filtered or unexported fields
}

Extractor extracts key conditions from code

func NewExtractor

func NewExtractor(language string) *Extractor

NewExtractor creates a new condition extractor for a language

func (*Extractor) ExtractFromCode

func (e *Extractor) ExtractFromCode(code string, filePath string) []*KeyCondition

ExtractFromCode extracts key conditions from code text

func (*Extractor) GetConditionPathToLine

func (e *Extractor) GetConditionPathToLine(conditions []*KeyCondition, targetLine int) *ConditionPath

GetConditionPathToLine finds all conditions that guard a specific line

func (*Extractor) SummarizeConditions

func (e *Extractor) SummarizeConditions(conditions []*KeyCondition) map[string]any

SummarizeConditions creates a summary of conditions

type KeyCondition

type KeyCondition struct {
	// Location
	FilePath string `json:"file_path"`
	Line     int    `json:"line"`
	Column   int    `json:"column"`

	// Condition details
	Expression string          `json:"expression"` // The condition expression
	Type       ConditionType   `json:"type"`
	Effect     ConditionEffect `json:"effect"`
	IsNegated  bool            `json:"is_negated"` // If inside else or has !

	// Variables involved
	Variables   []string `json:"variables"`    // Variables referenced
	TaintedVars []string `json:"tainted_vars"` // Which are tainted

	// Scope
	GuardsLines     []int         `json:"guards_lines"`  // Lines guarded by this condition
	NestingDepth    int           `json:"nesting_depth"` // How nested this condition is
	ParentCondition *KeyCondition `json:"parent_condition,omitempty"`
}

KeyCondition represents a condition that guards code execution

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL